Error catalog
Every error code ChronaPilot returns, what triggers it, and how to recover. The error.doc_url in every error response links here.
| Code | Status | Type | Description |
|---|---|---|---|
| missing_required_field | 400 | invalid_request_error | Required body field absent. |
| invalid_field_format | 400 | invalid_request_error | Format constraint violated. |
| invalid_enum_value | 400 | invalid_request_error | Enum field outside allowed set. |
| resource_not_found | 404 | invalid_request_error | Resource does not exist or is not visible. |
| idempotency_key_in_use | 409 | idempotency_error | Same key used with a different body. |
| connection_expired | 410 | connection_error | Provider tokens expired and refresh failed. |
| provider_rate_limit | 429 | rate_limit_error | Upstream provider returned 429. |
| rate_limit_exceeded | 429 | rate_limit_error | Your API key hit ChronaPilot's rate limit. |
| authentication_failed | 401 | authentication_error | Missing or invalid API key. |
| authorization_failed | 403 | authorization_error | Key lacks scope for this operation. |
| account_deactivated | 403 | authorization_error | End user's ChronaPilot account is deactivated. |
| webhook_signature_failed | 400 | webhook_signature_error | Signature verification failed. |
| voice_quota_exceeded | 429 | rate_limit_error | Voice realtime concurrent-session limit hit. |
| voice_model_unavailable | 503 | api_error | OpenAI realtime model temporarily unavailable. |
| provider_oauth_revoked | 410 | connection_error | User revoked OAuth in the provider portal. |
| internal_error | 500 | api_error | Server-side error. |
Envelope
JSON
{
"error": {
"type": "invalid_request_error",
"code": "missing_required_field",
"message": "The `start_time` parameter is required.",
"param": "start_time",
"doc_url": "https://docs.chronapilot.com/errors/missing-required-field",
"request_id": "req_1A2b3C4d5E6f"
}
}See Errors concept for the full envelope description.