When something goes wrong, the API returns a JSON error. The format follows RFC 9457 (Problem Details). The Content-Type is application/problem+json.
{
"type": "about:blank",
"status": 401,
"title": "Unauthorized",
"detail": "Invalid API key",
"requestId": "1748123456-1a"
}
| Field | Type | What it means |
|---|
type | string | The problem type. Always about:blank for normal HTTP errors. |
status | integer | The HTTP status code. |
title | string | A short title that matches the status code. |
detail | string | What went wrong this time. |
requestId | string | The id for this request. Send it to us when you ask for help. |
Status codes
| Status | Meaning | When you see it |
|---|
400 | Bad Request | A query parameter is wrong or out of range |
401 | Unauthorized | The key is missing, wrong, or turned off |
403 | Forbidden | The key is fine but the plan is too low for this endpoint |
404 | Not Found | The market, trader, or event does not exist |
409 | Conflict | The thing already exists, like an API key with the same label |
422 | Unprocessable Entity | The request body is valid JSON but fails the rules |
429 | Too Many Requests | You went over a quota. Wait for the time in Retry-After, then try again. |
500 | Internal Server Error | Something broke on our side |
Rate limit errors
When you go over the per-second limit, you get this detail:
{
"detail": "Rate limit exceeded"
}
When you go over the monthly limit, you get this detail:
{
"detail": "Monthly request limit exceeded"
}
Last modified on July 5, 2026