Core concepts
Errors and rate limits
Use HTTP status codes for broad handling and the response detail for the specific failure. Do not use 404 responses to infer resources outside the credential boundary.
Error shape
403 · application/json
{
"detail": {
"code": "missing_scope",
"required": ["bookings:write"]
}
}Some framework-level validation failures return a structured detail array with the field location and validation message.
HTTP status codes
400clientInvalid cursor or malformed operation state.
401clientMissing, invalid, expired, or revoked API key.
403clientCredential lacks the required scope or its support owner is inactive.
404clientResource does not exist in the credential’s studio or permitted locations.
409clientIdempotency key was reused with different parameters.
422clientRequest parameters or JSON body failed validation.
429clientCredential exceeded a short-window or per-minute rate limit.
5xxresponseUnexpected ClassFlow failure. Retry safe reads and idempotent writes with backoff.
Rate limits
Limits are applied per credential at two windows:
- 120 requests per minute
- 30 requests per 10 seconds
Retry guidance
- Retry
429and transient5xxresponses with exponential backoff and jitter. - Do not retry validation or missing-scope failures until the request or credential changes.
- Use the same idempotency key when retrying the same booking create or cancellation.
- Set a retry ceiling and surface failures for operator review.