Errors
Standard error envelope and the common status codes returned by the API.
Errors
Every JSON error response uses the same envelope:
Error response
{
"error": {
"code": "invalid_request",
"message": "Invalid request body",
"request_id": "req_9b8f0b5fcb5b4eaa"
}
}Common codes
| Code | Meaning |
|---|---|
invalid_request | The body, path, query, source selection, or streaming/idempotency combination is invalid. |
unauthorized | The API key is missing, invalid, revoked, or inactive. |
forbidden | The key lacks a required scope or cannot access the requested organization resource. |
not_found | The resource does not exist or is not visible to the authenticated key. |
rate_limited | A configured request or token limit was exceeded. |
idempotency_conflict | An idempotency key was reused for a different request. |
identity_conflict | A request conflicts with an immutable external identity, account generation, reserved email, or current lifecycle state. |
team_not_found | The requested partner team does not exist. |
team_archived | The requested partner team is archived and cannot accept assignments. |
team_in_use | The team cannot be archived while it has current or queued assignments. |
upstream_error | A required upstream service failed or returned an unexpected response. |
internal_error | The request could not be completed because of an internal error. |
Every error includes a request_id. Include that value when contacting support, but do not add names, email addresses, borrower information, or other PII to logs or support messages.
Retry guidance
- Correct the request before retrying
400,403, or most409responses. - Refresh configuration or credentials before retrying
401. - Retry
429with exponential backoff and jitter. - Treat
500and502as transient, preserve the original idempotency key, and retry with backoff. - A failed deletion never restores access. Authorized administrators can inspect and retry failed lifecycle work without submitting a new deletion.