# API error codes

Every RFC 9457 problem code the GetItDone public API can return: the stable code your integration switches on, what it means and how to fix it.

The GetItDone API returns RFC 9457 `application/problem+json` error documents.
Switch on the stable `code` — never on the human-readable title.

Each row's URL is the problem `type` URI the API publishes in the document
itself, so a client can follow `type` straight to the page that explains it.

| Status | Code                                                                 | Title                                                    |
| ------ | -------------------------------------------------------------------- | -------------------------------------------------------- |
| 401    | [`missing_credentials`](/docs/api/problems/missing-credentials)           | Missing credentials                                      |
| 401    | [`invalid_api_key`](/docs/api/problems/invalid-api-key)                   | Invalid API key                                          |
| 401    | [`invalid_token`](/docs/api/problems/invalid-token)                       | Invalid access token                                     |
| 403    | [`insufficient_scope`](/docs/api/problems/insufficient-scope)             | Insufficient scope                                       |
| 403    | [`feature_not_enabled`](/docs/api/problems/feature-not-enabled)           | Feature not enabled on this plan                         |
| 400    | [`validation_failed`](/docs/api/problems/validation-failed)               | Request validation failed                                |
| 404    | [`resource_not_found`](/docs/api/problems/resource-not-found)             | Resource not found                                       |
| 429    | [`rate_limited`](/docs/api/problems/rate-limited)                         | Rate limit exceeded                                      |
| 429    | [`quota_exhausted`](/docs/api/problems/quota-exhausted)                   | Plan quota exhausted                                     |
| 400    | [`idempotency_key_missing`](/docs/api/problems/idempotency-key-missing)   | Idempotency-Key header required                          |
| 422    | [`idempotency_key_reused`](/docs/api/problems/idempotency-key-reused)     | Idempotency-Key reused with a different request          |
| 409    | [`idempotency_in_progress`](/docs/api/problems/idempotency-in-progress)   | A request with this Idempotency-Key is still in progress |
| 422    | [`webhook_url_rejected`](/docs/api/problems/webhook-url-rejected)         | Webhook endpoint URL rejected                            |
| 409    | [`delivery_already_pending`](/docs/api/problems/delivery-already-pending) | A delivery for this event is already queued              |
| 409    | [`conflict`](/docs/api/problems/conflict)                                 | Conflict                                                 |
| 409    | [`dependency_cycle`](/docs/api/problems/dependency-cycle)                 | Dependency link would create a loop                      |
| 500    | [`internal_error`](/docs/api/problems/internal-error)                     | Internal server error                                    |
