HTTP status codes
| Status | Meaning |
|---|---|
200 OK | Request succeeded. |
400 Bad Request | Missing or invalid query parameter. |
404 Not Found | Unknown ticker_id, asset, or path. |
429 Too Many Requests | Rate limit exceeded. |
500 Internal Server Error | Transient server-side error — retry. |
503 Service Unavailable | Maintenance window or overload — retry later. |
Error envelope
Non-2xx responses include a JSON body:| Field | Type | Description |
|---|---|---|
code | string | Machine-readable error code (see table below). |
message | string | Human-readable description. |
field | string | null | The query parameter or field that triggered the error, when applicable. |
Error codes
| Code | HTTP | Meaning |
|---|---|---|
INVALID_PARAM | 400 | A query parameter is missing, malformed, or out of range. |
NOT_FOUND | 404 | The requested ticker_id, asset, or path does not exist. |
RATE_LIMIT | 429 | Per-IP rate limit exceeded. See Retry-After header. |
INTERNAL | 500 | Unexpected server error. Safe to retry with backoff. |
UNAVAILABLE | 503 | Service is temporarily down for maintenance. See Retry-After if present. |
Retry strategy
| HTTP | Retry? | Strategy |
|---|---|---|
| 4xx (except 429) | No | Fix the request. |
| 429 | Yes | Honor Retry-After. |
| 500 | Yes | Exponential backoff with jitter, max 5 attempts. |
| 503 | Yes | Honor Retry-After, longer backoff. |
