# Errors

> Error format and status codes.

Canonical URL: https://gensiv.com/docs/errors
Product: Gensiv — Become the brand AI recommends

---

The API uses standard HTTP status codes. Every error response has the same shape:

```json
{
  "error": {
    "code": "not_found",
    "message": "Brand not found",
    "requestId": "e5813d25-a1e8-4338-8f21-953f3a8914ff"
  }
}
```

| Field       | Description                                                                      |
| ----------- | -------------------------------------------------------------------------------- |
| `code`      | A stable, machine-readable error code. Use it in your code instead of `message`. |
| `message`   | A human-readable explanation. The wording may change.                            |
| `requestId` | A unique id for the request. Include it when you contact support.                |

## Error codes [#error-codes]

| Status | Code              | What to do                                                                                                                     |
| ------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `400`  | `invalid_request` | A parameter is missing or invalid. The message says which one.                                                                 |
| `401`  | `unauthorized`    | Check that the API key is correct and has not been deleted.                                                                    |
| `403`  | `plan_required`   | Choose a plan for the workspace in **Settings → Billing & plans**.                                                             |
| `404`  | `not_found`       | The resource does not exist, or it belongs to a different workspace.                                                           |
| `429`  | `rate_limited`    | Wait for the seconds in the `Retry-After` header, then retry. See [Rate limits](/docs/rate-limits).                            |
| `500`  | `internal_error`  | Something went wrong on our side. Retry with exponential backoff. If it keeps happening, contact support with the `requestId`. |

Unknown query parameters are rejected with `400 invalid_request`, so a typo in a parameter name does not silently return unfiltered data.