Error Codes
Errors use a uniform envelope: { "error": "…", "code": "…" }
| HTTP | code | Meaning |
|---|---|---|
| 400 | BAD_INPUT / BAD_CHAIN / BAD_AMOUNT / BAD_ADDRESS | Malformed request |
| 401 | API_KEY_REQUIRED / API_KEY_INVALID | Missing or unknown merchant key |
| 401 | WORKER_UNAUTHORIZED | Worker bearer invalid on /api/internal |
| 402 | INSUFFICIENT_BUDGET / CAP_EXCEEDED | Prepaid budget too low, or this provision exceeds the key cap (no partial fill) |
| 403 | SPONSORSHIP_DISABLED | Enable sponsorship on the API key |
| 404 | NOT_FOUND | Unknown resource (or not yours) |
| 409 | IDEMPOTENCY_CONFLICT | Same key, different parameters |
| 409 | NOT_PAYABLE | Intent is not paid enough to settle |
| 409 | BALANCE_RESERVED | Pending claims already reserve the balance |
| 429 | RATE_LIMITED | Slow down |
| 503 | EXECUTOR_NOT_CONFIGURED / PAYOUT_NOT_CONFIGURED | Platform chain secret missing — contact ops |