Skip to content

Errors

Errors use one envelope across the API:

{
"error": {
"type": "ForbiddenError",
"title": "Forbidden",
"detail": "The transcriptions.read scope is required.",
"code": "INSUFFICIENT_SCOPE",
"request_id": "req_9bfbe80ac1f24e0a9d5b1e5e7a0f2c11"
}
}

code is the stable, machine-readable field. It does not change with wording, translation or refactoring.

title and detail are human text and may be reworded between releases. type is the error class and is stable, but coarser than code — several codes share one class. Never parse detail.

Quote request_id when contacting support: it identifies the exact request in our logs.

HTTPcodeMeaning
400INVALID_LIMITPage size outside 1–100.
400INVALID_DATETIMEA timestamp is not RFC 3339 with an explicit offset.
400INVALID_FILTERA filter value or combination is unsupported.
400INVALID_CURSORThe cursor was edited, or the filters changed mid-traversal.
400INVALID_REQUESTRequest validation failed, including unknown query parameters.
401MISSING_ACCESS_TOKENNo bearer token was sent.
401INVALID_ACCESS_TOKENThe token is invalid, expired, or its credential was revoked.
403INSUFFICIENT_SCOPEThe token does not carry the scope the route requires.
403API_ACCESS_DISABLEDThe company does not have API access enabled.
404RESOURCE_NOT_FOUNDAbsent, owned by another company, or addressed in the wrong collection.
413PAYLOAD_TOO_LARGEThe request body exceeds the accepted size.
415UNSUPPORTED_MEDIA_TYPEWrong content type — most often JSON sent to /oauth/token.
429RATE_LIMIT_EXCEEDEDA rate-limit policy rejected the request.
503SERVICE_UNAVAILABLEA fail-closed dependency is unavailable. Retry with backoff.
503AUDIT_UNAVAILABLEA successful read could not be recorded in the audit trail, so it was not returned.

An id belonging to another company returns 404 RESOURCE_NOT_FOUND, not 403. The API does not confirm that a resource exists somewhere else — a 403 would leak that fact to anyone probing ids.

POST /oauth/token returns the OAuth 2.0 error shape that RFC 6749 §5.2 mandates, so standard OAuth clients keep working:

{
"error": "invalid_client",
"error_description": "Client authentication failed."
}

Stack traces, source paths, tokens, secrets, request bodies and domain payloads are never returned. An unexpected failure returns a fixed generic message with a request_id; the detail stays in our logs.

StatusRetry?
400, 403, 404, 413, 415No. The request will fail identically.
401Once, after re-issuing the token.
429Yes, after Retry-After.
503Yes, with exponential backoff and jitter.