API
Errors
What each error means, and what to do about it.
Errors use the same shape as Stripe and OpenAI, so SDKs show our message:
JSON
{ "error": { "type": "guard_error", "code": "rule_denied", "message": "POST /v1/refunds is not allowed for this key", "request_id": "..." } }| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing or invalid ghost key or token. |
| 403 | rule_denied | The key's rules do not allow this request, for example from this address or country. |
| 403 | key_killed | The key was killed, by someone on the team or automatically. |
| 403 | key_inactive | A new ghost key that has not started yet: it waits for the safety hour or a second admin. |
| 409 | conflict | The management API refused a change that clashes with another one, such as replacing the real key of one ghost key that shares it. |
| 429 | rate_limited | A per-minute or daily request limit was reached. |
| 429 | quota_exceeded | A Free account reached twice its monthly requests. Requests resume next month, or at once after an upgrade. |
| 402 | plan_limit | The management API refused a change the account's plan does not include, such as a fourth key on Free. |
| 400 | bad_request | The request could not be checked safely, for example duplicated amounts. |
| 502 | upstream_error | The provider could not be reached. |
Every response carries an x-guard-request-id header. Include it when you contact us.
Still have a question?
We read every email, usually within a day.