Core concepts
Errors and rate limits
Error shape
{
"detail": {
"code": "missing_scope",
"required": ["bookings:cancel"]
}
}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.
503serverRequest protection is temporarily unavailable. Retry after the response delay.
5xxresponseUnexpected ClassFlow failure. Retry safe reads and idempotent writes with backoff.
Rate limits
Limits are applied per credential at per-minute and short-burst windows:
- Reads: 120 requests per minute and 30 per 10 seconds
- Writes: 30 requests per minute and 10 per 10 seconds
Authenticated responses include X-Request-ID, X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. The reset value is the number of seconds remaining in the current minute window. Burst values are included in X-RateLimit-Burst-Limit and X-RateLimit-Burst-Remaining.
Retry guidance
- Retry
429and transient5xxresponses with exponential backoff and jitter. - Respect
Retry-Afteron429and503; ClassFlow intentionally declines Partner API traffic if rate protection is unavailable. - 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.