application/problem+json content type. Read the HTTP status together with code, detail, validation_errors, and request_id.
Error shape
X-Request-ID response header. Save it with your integration logs.
Resolve common statuses
400 Bad Request
Reviewvalidation_errors, query parameter names, enum values, timestamps, and JSON types. For list requests, an invalid or stale cursor can return invalid_cursor; restart from the first page.
401 Unauthorized
- Send
Authorization: Bearer sk_test_...orAuthorization: Bearer sk_live_.... - Confirm the
Bearerscheme and spacing. - Confirm the secret has its complete prefix and value.
- Replace a revoked, expired, or unknown key.
403 Forbidden
The key lacks the required scope or the operation has another authorization boundary. Readdetail for the required scope, then create a new least-privilege key when broader access is intended.
404 Not Found
Confirm the resource ID, endpoint path, and owning organization. Canary scopes resources to the organization associated with the key, so an ID from another organization resolves as unavailable.409 Conflict
Resolve the specific conflict before retrying. Anidentifier_conflict, for example, means the exact active value already belongs to another record in the organization.
429 Too Many Requests
HonorRetry-After. Use X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset to pace requests, add bounded backoff, and avoid synchronized retries.
500 Server Error
Retry read requests with bounded exponential backoff. Review the latest resource state before retrying a write. If the error persists, contact support with the request ID, timestamp, method, path, and response code.Safe logging
Log the method, path, status, problem code, request ID, and retry metadata. Redact theAuthorization header, full API key, attachment content, and sensitive request fields.