# Errors

> The error format and status codes the Gensiv API returns.

Errors return a JSON body with `message`, `why` and `fix`:

```json
{
  "message": "Invalid API key",
  "why": "The key is unknown, revoked or expired",
  "fix": "Create a new key in Settings > API keys and send it in the x-api-key header"
}
```

| Status | Meaning                                                                       |
| ------ | ----------------------------------------------------------------------------- |
| `400`  | A query parameter is invalid; the body names the field                         |
| `401`  | No key, or the key is unknown, revoked or expired                             |
| `402`  | The workspace plan does not include API access (Lite or no plan), or a plan limit or credit balance blocks the change |
| `403`  | The key is read-only and the endpoint changes data; create a key with Allow changes |
| `404`  | The brand or item is not in the key's workspace                               |
| `429`  | The key went over 120 requests a minute                                       |
| `500`  | Something went wrong on our side; try again, and contact support if it keeps happening |

A `402` body also carries `plan` and `recommended`, the smallest plan that includes API access.

---

Source: https://gensiv.com/docs/api/errors

