| 400 | invalid_parameter | A query parameter is unknown, repeated, malformed or out of range. The message names it. Also returned for a malformed cursor and an unknown stream topics value. | No; fix the request. |
| 400 | invalid_market | The venue in the path is not kalshi or polymarket, the market id is malformed, or the proof endpoint was given the same market twice. | No. |
| 400 | invalid_event | The venue or event id in an /v1/events/{venue}/{id} path is malformed. | No. |
| 400 | invalid_topic | The topic slug is not lowercase words joined by dashes (up to eight). | No. |
| 400 | invalid_rulebook | The venue, rulebook kind (series, event, market) or id is malformed. | No. |
| 401 | api_key_required | No credential was sent. | After adding the key. |
| 401 | invalid_api_key | The key is malformed, unknown, or its secret does not match. | After a minute if the key was just issued; see revocation lag. |
| 401 | api_key_revoked | The key was revoked. | No. |
| 401 | invalid_token | The credential does not start with rk_ and is not a valid service identity token. | No; check the key’s prefix. |
| 403 | caller_not_allowed | A valid identity token from an account that may not call the API. Only Routeur’s own services send identity tokens. | No. |
| 404 | not_found | No such endpoint. Returned without authentication. | No. |
| 404 | market_not_found | The market is not in the latest graph; on /rules, no contract terms have been recorded for it; on the proof endpoint, one or both markets are not in the latest graph. | After the next graph run if the market is newly listed. |
| 404 | event_not_found | The event is not in the latest graph. | After the next graph run. |
| 404 | topic_not_found | No listed market is labeled with that name. | No. |
| 404 | relation_not_found | Both markets are in the graph but no current proof relates their current contract versions. | After the next graph run. |
| 404 | rulebook_not_found | No such rulebook has been recorded. | No. |
| 404 | book_not_found | No order book is recorded for the market at that time. | No; try without at. |
| 404 | strategy_not_found | No strategy with that id is supported by settled history right now. Also returned for a malformed strategy id. | Later; the set changes as markets settle. |
| 429 | rate_limited | The per-minute limit was exceeded. | After Retry-After seconds. |
| 429 | daily_quota_exceeded | The daily quota is used up. | After Retry-After seconds. |
| 429 | too_many_streams | The key already holds its concurrent streams on this instance. | After 60 seconds, or close a stream. |
| 503 | graph_unavailable | No graph run has finished yet. | After a few minutes. |
| 503 | stream_unavailable | No stream capacity is free on this instance, or it is shutting down. | After 5 seconds. |
| 503 | database_unavailable | Only on /readyz: the database is not reachable. | Later. |
| 504 | timeout | The request took longer than 15 seconds. | Once, with a narrower query. |
| 500 | internal | Something failed on Routeur’s side. | Once, after a short wait. |