Authorization header on every request:
401 Unauthorized response.
Example
Access scopes
Your token is granted a subset of the scopes below. Access is split along a history / no-history axis: the latest-value endpoints (current, plus available / reference) require the base scope, while the point-in-time (as-of) and time-series (history) endpoints — which expose historical data — require the matching …-history scope. The two are granted independently, so a token can have current access without history.
Intraday (Custom) Index scopes are granted separately, with per-index authorization.
If a request returns
403, your token is missing the required scope — contact support to adjust it.
Rate limits
Tokens are on the Pro tier unless a different tier has been set for your organisation, so the middle row is what most callers get. Contact support if you need a higher limit.
Limits are counted per token on fixed windows rather than a rolling one: the per-minute counter resets at the top of each minute, and the daily quota at 00:00 UTC. A burst that straddles a window boundary can therefore pass twice the per-minute figure within a couple of seconds and still be within limits — pace requests rather than relying on the boundary.
When a limit is exceeded the API returns
429 Too Many Requests with headers describing the limit that was hit — X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (seconds until the minute window resets), or the -Day variants for the daily quota. Successful responses do not carry rate-limit headers; back off and retry when you receive a 429.
Errors
All errors return a JSON body of the form{"detail": "..."} (validation errors return a structured detail array). Each endpoint’s reference page documents its error responses with real example bodies.