API reference
Errors & safe retries
Handle validation, access, limits and uncertain outcomes.
Error format
| Status | Meaning |
|---|---|
| 400 | Invalid input or unsupported field/operator |
| 401 | Missing, expired, revoked, or wrong-resource credential |
| 403 | Current permissions do not allow this operation |
| 404 | Unknown operation or inaccessible record |
| 409 | Conflict, changed permissions, or earlier request still pending |
| 413 | Request exceeds 256 KB |
| 429 | Rate limit; follow Retry-After |
| 503 | Service unavailable; preserve the request ID |
{
"error": {
"code": "forbidden",
"message": "Your current project permissions do not allow this operation."
},
"request_id": "request-id"
}Safe writes
All write operations require Idempotency-Key (up to 200 characters). Matching retries return the earlier result for 24 hours while access remains unchanged. Concurrent duplicate calls cannot start a second write. Changed input or permissions return a conflict.
For uncertain outcomes, do not replace the idempotency key. Check the record or job, or contact support with request_id. There is no general If-Match contract; onboarding updates use their version field to detect concurrent edits. Payment updates accept expected_updated_at from the last read, and post updates accept expected_disqualified. These checks are atomic and return 409 if the value changed.
Limits are 300 read operations and 60 write operations per minute, per user and project, shared across keys. Additional platform/provider limits can apply. Queries have bounded page sizes and execution time.