Our API uses standard HTTP verbs (GET, POST, etc.) to retrieve or modify resources and standard HTTP error codes (4xx and 5xx) to communicate errors when they happen with detailed error information in the body. All standard HTTP clients are able to talk to our API without modifications.
The API always responds in JSON, including for errors. The only exception are routes that also support different formats like reports. In that case, JSON is the default format unless otherwise specified and additional response formats can be specified in the request.