Fetch normalized, Kairos-ingested trade history for a contract
Returns normalized trade history for a single (provider, contract_id) from Kairos's own ingested trade store. It serves from data Kairos has already ingested, so coverage depends on how much history has been backfilled/streamed for that contract.
Auth: requires the trade:read scope (admin/JWT bypass the scope check; API keys need trade:read), plus API access to the requested provider being enabled for API-key callers — 403 if disabled.
Data source / staleness: reads ingested trade rows for the window [before - window_seconds, before] (or ending "now" if before is omitted). If trigger_ingest=true and the data is missing or stale, an ingestion job is kicked off for that contract and reported via the indexing flag in the response — the returned trades may still be incomplete for that call.
Request
- Base URLhttps://data.kairos.trade
- AuthAPI key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
Query parameters
Venue identifier, matched case-insensitively against the live provider registry.
Provider-specific contract identifier. Empty or >128 chars returns 400.
Lookback window in seconds, ending at before (or now). Clamped to [3600, 86400] (1 hour to 24 hours).
Unix-seconds cursor — return trades at or before this timestamp. Omit to end the window at "now".
Max trades returned. If omitted, the service applies its own internal default.
If true, kicks off ingestion when data for this window is stale or missing, rather than just returning what's already stored.
Response
Normalized trade rows for the window plus pagination/coverage metadata.
Example response
{
"trades": [
{
"trade_id": "kalshi:KXPRESPOLAND-24-DT:9f2a1c",
"order_id": "0x9f2a1c...7bd4",
"contract_id": "KXPRESPOLAND-24-DT",
"size": 50,
"price": 63,
"outcome": "yes",
"timestamp": 1753142400,
"yes_price": 63,
"no_price": 37,
"taker_side": "yes"
}
],
"oldest_available_ts": 1750000000,
"coverage_hours": 24
}Changes
No recorded changes to this operation across all 1 revision of this API.