> ## Documentation Index
> Fetch the complete documentation index at: https://docs.routeur.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors and conventions

> How responses, prices, times, pagination and errors are shaped.

## Conventions

* **Prices and money** are decimal strings in USD, such as `"0.4100"`, never floats. A price is per contract that pays \$1.
* **Times** are RFC 3339 in UTC.
* **Responses** wrap results in `data`. Graph-derived responses also name the `graph_run` they were read from; runs finish hourly.
* **Pagination** returns `next_cursor` when more results exist. Pass it back as `cursor` unchanged.
* **Unknown or repeated query parameters** are rejected with `400`, so a typo never silently widens a query.

## Errors

Errors return `{"error": {"code": "...", "message": "..."}}`. Branch on `code`; messages may change.

| Status | Code                   | Meaning                                                                   |
| ------ | ---------------------- | ------------------------------------------------------------------------- |
| 400    | `invalid_parameter`    | A query parameter is unknown, repeated or out of range.                   |
| 400    | `invalid_market`       | The venue is not `kalshi` or `polymarket`, or the market id is malformed. |
| 401    | `api_key_required`     | No key was sent.                                                          |
| 401    | `invalid_api_key`      | The key is malformed or unknown.                                          |
| 401    | `api_key_revoked`      | The key was revoked.                                                      |
| 404    | `market_not_found`     | The market is not in the latest graph.                                    |
| 404    | `not_found`            | No such endpoint.                                                         |
| 429    | `rate_limited`         | The per-minute limit was exceeded.                                        |
| 429    | `daily_quota_exceeded` | The daily quota is used up.                                               |
| 503    | `graph_unavailable`    | No graph run has finished yet.                                            |
| 504    | `timeout`              | The request took longer than 15 seconds.                                  |
| 500    | `internal`             | Something failed on our side.                                             |
