# Errors

JSON shape:

```json
{ "error": { "code": "insufficient_funds", "message": "…", "details": {} } }
```

| Code | What to do |
| --- | --- |
| `invalid_input` | Fix request body; see OpenAPI |
| `unauthorized` | Recreate sandbox key or re-verify OTP |
| `forbidden` | Wrong environment (e.g. sandbox on mainnet) or missing invite |
| `not_found` | Wrong path or id |
| `rate_limited` | Back off; honor `Retry-After` |
| `insufficient_funds` | Deposit / wait for grant; see `GET /v1/funding` |
| `limit_exceeded` | Lower size or raise settings caps |
| `service_unavailable` | Retry shortly; check `/status` |

Every failure should leave the agent with a next step (funding, suggest, or user confirm).
