# Errors

Errors are JSON with a `message` for people and, where you can act on it, a `code`.

| Status | Meaning | What to do |
| --- | --- | --- |
| 400 / 422 | A field is invalid | Fix the request; `message` names the field |
| 401 | Missing, unknown or expired API key | Check the key and its environment; rotate an expiring key |
| 403 | The key lacks the scope, or is used from an address not on its list | Change the key's limits in Settings → API keys; changes apply within a minute |
| 402 | `insufficient_balance` or `payment_hold` | Top up in Billing, or settle the open payment |
| 404 | Not found for this key | Another organization's or environment's data looks the same as none |
| 409 | Not ready, or a duplicate in flight | Retry later; for results, wait for the webhook |
| 429 | Too many requests, or `sandbox_daily_limit` (the day's free sandbox sessions with real checks are used) | Back off and retry; use a `sandbox_scenario` or wait for midnight UTC |
| 5xx | A problem on our side | Retry with the same Idempotency-Key |
