Error response format
A human-readable message describing what went wrong. Suitable for logging but not for display to end users.
A machine-readable error code. Use this field for programmatic error handling. May be absent on some error types.
Additional context about the error, such as which field failed validation or which resource was not found. Optional.
HTTP status codes
| Status | When it is returned |
|---|---|
200 OK | Request succeeded. |
201 Created | Resource was created successfully. |
204 No Content | Request succeeded with no response body (typical for DELETE). |
400 Bad Request | Malformed JSON, missing required fields, or invalid parameter values. |
401 Unauthorized | Missing, expired, or invalid auth token. |
403 Forbidden | Token is valid but the user lacks permission. |
404 Not Found | The requested resource does not exist. |
409 Conflict | State conflict — for example, trying to connect a provider that is already connected. |
422 Unprocessable Entity | Request is valid JSON but fails business-logic validation. |
429 Too Many Requests | Rate limit exceeded. See Rate limiting. |
500 Internal Server Error | Unexpected server-side error. |
Handling errors
Common error codes
| Code | HTTP status | Meaning |
|---|---|---|
NOT_FOUND | 404 | The resource ID does not exist. |
UNAUTHORIZED | 401 | Token missing or invalid. |
FORBIDDEN | 403 | Insufficient permissions. |
VALIDATION_ERROR | 422 | A field failed business-logic validation. |
CONFLICT | 409 | Resource already exists or is in a conflicting state. |
RATE_LIMITED | 429 | Too many requests. Check retryAfter in the response body. |
The
code field is not present on all error responses. Always fall back to the HTTP status code for error handling.