Data conventions
Timestamps, currency, null values and adjustments.
Response envelopes
{
"data": [],
"meta": {
"timezone": "UTC",
"as_of": "2026-09-18T20:01:00Z",
"next_cursor": null
}
}Security-data endpoints return data arrays and the metadata above. Search, exchanges and calendar omit as_of. Health has timezone and coverage_configured, without a cursor. Export creation and status return a data object and timezone; downloads return NDJSON.
Request correlation is in the X-Request-ID header. There are no meta.sample or meta.request_id fields. Request examples query live data; response examples are synthetic.
Time and identity
Query parameters take dates as YYYY-MM-DD, never times or timezones; a timestamp returns 422 invalid-date. from and to include both days: daily and intraday bars read the exchange's local trading date, and other endpoints the UTC date. as_of is the knowledge cutoff at the end of its UTC day, defaulting to now. symbol_at defaults to as_of and resolves the effective MIC:TICKER assignment. Output timestamps are UTC. instrument_id is the stable public identity; security_id carries the same value and is being superseded by it. Symbols & identifiers
Date ranges include both days, so from equal to to selects one day. They filter the exchange-local trading date for daily and intraday bars, fiscal_end for financial facts, filed_on for filings and ex_date for corporate actions. Securities use symbol_at instead.
Exact values and licensing
Prices, volume, sizes, ratios and monetary amounts use decimal strings, with null for missing values. Preserve precision when parsing. Currency is currency_code. Financial fact dimensions and corporate-action leg attributes are decoded JSON objects.
raw, split and total_return are the price adjustment modes. Adjusted rows add adjustment and factor_set_version. Effective delays and disclosures come from the current plan and licensing policy; a fixed 15-minute delay is not guaranteed for every market or dataset.
Conditional requests
Fourteen GET endpoints return an ETag and accept If-None-Match: quotes, eod, intraday, financials/facts, corporate-actions, dividends, splits, filings, securities, symbols/search, exchanges, calendar, snapshot and movers (each reference lists its 304). A 304 has no JSON body and follows a fresh authorization check. It costs no credits: the request needs the balance the 200 would cost, and that charge is refunded in full when nothing changed. Every other response, including research, exports, flat files, usage and health, uses Cache-Control: no-store.