| 400 | invalid_request | The request is wrong; the message names the field | No: fix it |
| 401 | unauthenticated | No key, a mistyped key, or a revoked or expired key | No |
| 401 | session_revoked | A panel session from before a password change | Sign in again |
| 403 | forbidden | The key doesn’t hold the permission, or the record isn’t yours | No |
| 403 | ip_not_allowed | The request came from an address the key doesn’t allow | Add the address to the key |
| 403 | ip_allowlist_required | An old key with no IP allowlist, past its grace | Add addresses to the key |
| 403 | console_destination | From the panel console: a real call to a number that isn’t yours | Use a dry run or a test number |
| 401 | designer_link_invalid, designer_session_ended | A designer link that was used, expired or revoked; or a designer session that has ended | Ask for a new link |
| 403 | designer_session_scope | A designer session asked for something other than its own IVR | No |
| 403 | module_disabled | The operation belongs to an optional module that is switched off, or outside the licence, on this server | Ask the operator |
| 404 | not_found | No such record, or not one you can see (never “exists but forbidden”) | No |
| 404 | module_not_installed | The operation belongs to an optional module this server was built without. (A module’s own routes are simply absent, a plain not_found) | No |
| 409 | conflict | Clashes with an existing record, for example a name or number | No |
| 409 | idempotency_mismatch | This Idempotency-Key was used with a different body | Use a new key |
| 409 | idempotency_in_progress | The first request with this key is still running | Yes, shortly |
| 409 | no_panel_address | A designer link was asked for, but the platform has no panel address | Ask the operator |
| 409 | no_callback_secret | A callback URL was given, but there’s no secret to sign with | Create the secret |
| 409 | wrong_status | For example, pausing a campaign that isn’t running | No |
| 409 | not_registered | The extension to ring has no phone signed in | When it does |
| 422 | refused | A call was checked and refused: no route, billing, your own number, or an IVR that isn’t published | No |
| 422 | not_ready | A campaign can’t start yet; the message says why | After fixing it |
| 429 | rate_limited | Over the key’s rate; wait Retry-After seconds | Yes, after the wait |
| 502 | originate_failed, provider_error | The phone system or an AI provider refused | Maybe |
| 500 | internal | Our fault | Yes, with backoff |