Skip to main content

HTTP Status Codes

Error Response

When a request fails, the API returns a structured error body alongside the HTTP status code. The error_code field identifies the specific error for programmatic handling:

What a 403 tells you

A permission refusal carries more than the code. Alongside error_code: ACCESS_DENIED, the data object names the permission that was missing and what would have satisfied it, so you can act on the response without guessing:
array
The permissions that were checked and not held. permission is the identifier to grant, permission_level says whether it is granted once for the whole service or per resource instance.
string
Which request to make of your admin. capability — ask for the permission itself; you do not have it anywhere, so widening your access to this one resource will not help. instance — ask for access to this resource; you already hold the permission elsewhere.
array
Any one of these grants would have allowed the request. Hand this to whoever administers your team: it is the shortest answer to “what do I need”.
A refusal does not tell you whether the resource exists — a 403 on a read means “not for you” and says nothing more. Deleting is the exception: it answers 200 whether the resource was removed or was never there, so a repeated delete is safe to retry.

Error Codes

Error Handling Best Practices

Retry Logic

Error Logging

Next Steps

Authentication

Learn about authentication

Rate Limits

Understand rate limiting