# Error codes

Every error code Kelly returns, with its HTTP status and whether a retry can succeed.

| Code | Status | Title | Retry |
| --- | --- | --- | --- |
| [`credential_in_url`](/problems/credential_in_url) | 400 | Credential in URL | no |
| [`invalid_request`](/problems/invalid_request) | 400 | Invalid request | no |
| [`unsupported_api_version`](/problems/unsupported_api_version) | 400 | Unsupported API version | no |
| [`unauthenticated`](/problems/unauthenticated) | 401 | Authentication required | no |
| [`attestation_required`](/problems/attestation_required) | 403 | Age attestation required | no |
| [`insufficient_scope`](/problems/insufficient_scope) | 403 | Insufficient scope | no |
| [`not_entitled`](/problems/not_entitled) | 403 | Not entitled | no |
| [`too_many_topics`](/problems/too_many_topics) | 403 | Too many topics | no |
| [`not_found`](/problems/not_found) | 404 | Not found | no |
| [`method_not_allowed`](/problems/method_not_allowed) | 405 | Method not allowed | no |
| [`idempotency_in_progress`](/problems/idempotency_in_progress) | 409 | Idempotent request in progress | yes |
| [`answer_expired`](/problems/answer_expired) | 410 | Answer expired | no |
| [`operation_expired`](/problems/operation_expired) | 410 | Operation expired | no |
| [`version_sunset`](/problems/version_sunset) | 410 | Version or endpoint sunset | no |
| [`precondition_failed`](/problems/precondition_failed) | 412 | Precondition failed | no |
| [`payload_too_large`](/problems/payload_too_large) | 413 | Payload too large | no |
| [`calc_not_available`](/problems/calc_not_available) | 422 | Calculation not available yet | no |
| [`formula_explain_only`](/problems/formula_explain_only) | 422 | Formula is explain-only | no |
| [`idempotency_key_reused`](/problems/idempotency_key_reused) | 422 | Idempotency key reused | no |
| [`invalid_inputs`](/problems/invalid_inputs) | 422 | Invalid calculation inputs | no |
| [`missing_execution_input`](/problems/missing_execution_input) | 422 | Missing execution input | no |
| [`needs_jurisdiction`](/problems/needs_jurisdiction) | 422 | Jurisdiction needed | no |
| [`needs_league`](/problems/needs_league) | 422 | League needed | no |
| [`needs_operator`](/problems/needs_operator) | 422 | Operator needed | no |
| [`not_stake_eligible`](/problems/not_stake_eligible) | 422 | Not stake eligible | no |
| [`ref_not_allowed_in_batch`](/problems/ref_not_allowed_in_batch) | 422 | Reference not allowed in a batch | no |
| [`quota_exhausted`](/problems/quota_exhausted) | 429 | Quota exhausted | no |
| [`rate_limited`](/problems/rate_limited) | 429 | Rate limited | yes |
| [`internal_error`](/problems/internal_error) | 500 | Unexpected server error | yes |
| [`upstream_error`](/problems/upstream_error) | 502 | Upstream source error | yes |
| [`service_unavailable`](/problems/service_unavailable) | 503 | Service unavailable | yes |
| [`upstream_timeout`](/problems/upstream_timeout) | 504 | Upstream timeout | yes |

Generated from `registry/generated/problems.json`.

---

Generated from registry/generated/problems.json

Support: support@askkelly.ai · Security and disclosure: https://docs.askkelly.ai/security

Information is the edge. Odds are information, not advice · 21+ · Get help
