Get started
Errors
Failures use standard HTTP status codes. Bodies are JSON with a detail field (string or validation object).
Error shape
Example
{
"detail": "market not found"
}Validation (422)
{
"detail": [
{
"type": "missing",
"loc": ["body", "password"],
"msg": "Field required",
"input": null
}
]
}Status codes
| Code | Meaning |
|---|---|
400 | Bad request (missing ticker/day, unsettled window rules, invalid bounds) |
401 | Missing or invalid bearer token |
403 | Authenticated but not allowed (e.g. unverified email on login) |
404 | Unknown market or export id |
422 | Request failed schema validation |
500 | Unexpected server error — retry with backoff |
Idempotency & rate limits
Each POST /api/v1/exports builds a new file. Auth endpoints are rate-limited per IP; treat 429/403 as signals to slow down.