HTTP Status Codes
Error Response
When a request fails, the API returns a structured error body alongside the HTTP status code. Theerror_code field identifies the specific error for programmatic handling:
What a 403 tells you
A permission refusal carries more than the code. Alongsideerror_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