# Kairos - [API Reference](https://docs.kairos.trade/api-reference.md): Every public Kairos API in one place — REST, streaming, and OpenAPI-generated endpoint references across four services. - [Liveness probe](https://docs.kairos.trade/api-reference/market-data/status/liveness-probe.md): Trivially cheap liveness check used by the load balancer. Touches no dependencies and is never rate-limited. - [Readiness probe](https://docs.kairos.trade/api-reference/market-data/status/readiness-probe.md): Probes the two dependencies in order — ClickHouse (`SELECT 1`, 3s deadline) then Redis (`PING`) — and returns 503 naming the first one that fails. - [Get one market's metadata](https://docs.kairos.trade/api-reference/market-data/markets/get-one-markets-metadata.md): Returns the full metadata document for a single market. Rate-limit bucket: LIGHT. - [Fetch multiple markets by id, one provider at a time](https://docs.kairos.trade/api-reference/market-data/markets/fetch-multiple-markets-by-id-one-provider-at-a-time.md): Fetches metadata for one provider and up to 200 market ids in a single call. Rate-limit bucket: LIGHT, flat cost of 1 unit regardless of batch size (unlike `/v1/market-identifiers/resolve`, this endpoint does NOT charge per-item). Not cached (`Cache-Control: no-store`) — every call returns live data… - [Resolve venue-specific identifiers to canonical Kairos market ids](https://docs.kairos.trade/api-reference/market-data/markets/resolve-venue-specific-identifiers-to-canonical-kairos-market-ids.md): Maps up to 200 venue-specific identifiers — market-scoped (a venue's market id, ticker, or condition-like identifier) or outcome-scoped (an outcome/token id) — onto Kairos's canonical `market_id` for that provider. Requests are grouped by (provider, scope) for efficient batch resolution. Not cached… - [Paginate active markets for one provider](https://docs.kairos.trade/api-reference/market-data/markets/paginate-active-markets-for-one-provider.md): Enumerates active markets for a single provider, cursor-paginated. Rate-limit bucket: LIGHT. - [Current valid tick grid for one market](https://docs.kairos.trade/api-reference/market-data/markets/current-valid-tick-grid-for-one-market.md): Returns the grid of valid price increments the venue CURRENTLY enforces for a market — the same grid the order executor validates against. It describes the grid; it never snaps or rounds a price. Served from the market metadata cache, which the orderbook streamer keeps current with the venue's live… - [Current tick grids for up to 200 markets of one provider](https://docs.kairos.trade/api-reference/market-data/markets/current-tick-grids-for-up-to-200-markets-of-one-provider.md): The same resolution as `GET /v1/markets/tick-size` for up to 200 `(contract_id, asset_id)` pairs of ONE provider in one round trip. Polymarket token ids are read from the metadata cache in a single batch. Rate-limit bucket: LIGHT, flat cost of 1 unit. Not cached (`Cache-Control: no-store`). - [Batch resolution fractions for up to 200 markets](https://docs.kairos.trade/api-reference/market-data/resolutions/batch-resolution-fractions-for-up-to-200-markets.md): Returns the resolved YES-side fraction (payout_numerators[0] / sum) for each requested market that has resolved; unresolved markets are omitted entirely from the response (never a guessed value). Providers are keyed either directly by market id/ticker (kalshi) or by their on-chain condition id (poly… - [Current resolution lifecycle snapshot for one market](https://docs.kairos.trade/api-reference/market-data/resolutions/current-resolution-lifecycle-snapshot-for-one-market.md): Returns the current resolution state for one market — status (e.g. proposed/disputed/resolved), the UMA-style proposal/dispute metadata, and (once resolved) the payout numerators. For kalshi-style providers the ticker identifies the market directly; for CTF venues (polymarket, predictfun, opinion) t… - [Full resolution lifecycle timeline for one market](https://docs.kairos.trade/api-reference/market-data/resolutions/full-resolution-lifecycle-timeline-for-one-market.md): Returns the append-only event timeline (proposed, disputed, reset, settled, etc.) for a market's resolution, oldest first, capped at 200 events, keyed the same way as `.../resolution` (kalshi ticker identifies the market directly; CTF venues resolve market_id to its on-chain condition id first). Dup… - [Latest mark (last trade price) for up to 200 contract/token pairs](https://docs.kairos.trade/api-reference/market-data/marks/latest-mark-last-trade-price-for-up-to-200-contracttoken-pairs.md): A mark is defined as the LAST TRADE PRICE, on the 0–100 scale used by candles/trades (not the 0–1 probability scale used by PnL consumers). Rate-limit bucket: HEAVY and explicitly uncacheable at the HTTP layer (`Cache-Control: no-store`, no ETag); real-time consumers should prefer the WebSocket feed… - [Get a single OHLCV candle series](https://docs.kairos.trade/api-reference/market-data/candles/get-a-single-ohlcv-candle-series.md): Returns OHLCV candles for one `(provider, contract_id, timeframe_seconds, outcome)` series over `[start, end)`. - [Get up to 200 candle series in one request](https://docs.kairos.trade/api-reference/market-data/candles/get-up-to-200-candle-series-in-one-request.md): Batched form of `GET /v1/candles`: fetches up to 200 independent `(provider, contract_id, timeframe_seconds, start, end, outcome)` series concurrently and returns them in request order, with **per-index partial failure** — one item's validation or fetch error does not fail the others. - [Recent trade tape for a contract](https://docs.kairos.trade/api-reference/market-data/trades/recent-trade-tape-for-a-contract.md): Returns the most recent individual trades for a single (provider, contract_id) pair, newest first, deduplicated by trade id. Only rows with `price > 0 AND price <= 100 AND size > 0` are eligible. - [Aggregate trade volume/pressure metrics for a contract window](https://docs.kairos.trade/api-reference/market-data/trades/aggregate-trade-volumepressure-metrics-for-a-contract-window.md): Returns aggregated volume and buy-pressure metrics for a (provider, contract_id) over a trailing window, computed from the same deduplicated trade data as `/v1/trades`. - [Get a live perpetual market-data snapshot](https://docs.kairos.trade/api-reference/market-data/perpetuals/get-a-live-perpetual-market-data-snapshot.md): Production beta, sourced directly from the selected venue by the Market Data API. Returns a canonical ordered book, recent trades, one-minute candles, funding observations, and typed market state. Financial values are exact decimal strings. Prices are direct venue prices, never 0–100 prediction prob… - [List perpetual venue capabilities](https://docs.kairos.trade/api-reference/data/perpetuals/list-perpetual-venue-capabilities.md): Returns the supported perpetual venue identifiers and their public-data capabilities. This is metadata owned by the Python Data API. It does not serve books, trades, candles, funding observations, or WebSocket data. - [Discover perpetual instruments](https://docs.kairos.trade/api-reference/data/perpetuals/discover-perpetual-instruments.md): Returns strict canonical instrument metadata, optionally for one venue. Financial values are exact decimal strings or null; consumers must not invent a contract multiplier, tick, or leverage value when one is absent. Results are cached independently per venue for 60 seconds. - [Enumerate active markets for a provider (MMC cursor page)](https://docs.kairos.trade/api-reference/data/markets/enumerate-active-markets-for-a-provider-mmc-cursor-page.md): Returns one cursor-paginated page of the active-market snapshot for a single provider. If the upstream listing is unavailable or the lookup otherwise fails, the route responds `503 Service Unavailable` ("Active market snapshot is temporarily unavailable") rather than fabricating an empty page — this… - [Fetch market details (name/category/status/ids)](https://docs.kairos.trade/api-reference/data/markets/fetch-market-details-namecategorystatusids.md): Looks up market details for the given `(market_id, provider_id)` pairs. The `market_id` in the request is matched against `market_id` OR `condition_id` OR `token_id` — any identifier works. Markets with an empty/missing `market_id` in the request are silently dropped before querying. Unmatched marke… - [Batch fetch current prices for multiple markets](https://docs.kairos.trade/api-reference/data/markets/batch-fetch-current-prices-for-multiple-markets.md): Fetches current price/volume/liquidity for up to 300 `(market_id, provider_id)` pairs. Results are cached briefly. Every reference must contain a non-empty market identifier and a known integer `provider_id`; an invalid reference rejects the request. A provider with no batch-price support is skipped… - [Get full market metadata (rules, images, contract spec)](https://docs.kairos.trade/api-reference/data/markets/get-full-market-metadata-rules-images-contract-spec.md): Returns the full metadata document for one market. Resolution order: (1) a fast cached-metadata path — for Polymarket, a cache hit derives status/category/images from the cached upstream payload; (2) on a miss, falls back to a live provider-API fetch (Kalshi ticker + event metadata for images; Polym… - [Batch fetch market metadata for multiple contracts](https://docs.kairos.trade/api-reference/data/markets/batch-fetch-market-metadata-for-multiple-contracts.md): Batch variant of `/markets/metadata`, capped at 100 contracts. Contracts whose provider is currently inactive are dropped before processing; if that empties the batch the response is `{}`. Looks up the rest via a cached-metadata fast path, with a fallback for cache misses and non-Polymarket provider… - [Get all sibling outcomes for the event containing a market](https://docs.kairos.trade/api-reference/data/markets/get-all-sibling-outcomes-for-the-event-containing-a-market.md): Returns every outcome in the event that `market_id` belongs to (for multi-outcome / grouped markets), served from a cache of pre-computed event/market lookups. Any identifier (market_id, token_id, condition_id, symbol, slug) is mapped to its `event_id`; if that misses, falls back to the per-market e… - [Get 5m/15m/1h crypto up-or-down prediction markets for a window](https://docs.kairos.trade/api-reference/data/markets/get-5m15m1h-crypto-up-or-down-prediction-markets-for-a-window.md): Returns the crypto up/down markets (BTC/ETH/SOL/XRP on Kalshi + Polymarket, plus DOGE/HYPE/BNB and predict.fun on some intervals) for one time window. `window_offset` shifts by whole windows of the chosen `interval` (0=current, -1=previous, +1=next, etc.). Responses are cached so UI "previous/next w… - [Get historical oracle (spot) prices for crypto chart pre-population](https://docs.kairos.trade/api-reference/data/markets/get-historical-oracle-spot-prices-for-crypto-chart-pre-population.md): Returns per-symbol resolution-price history over `[end_ms - minutes*60*1000, end_ms]` (`end_ms` defaults to now; clamped to now if a future value is given). Each request names **one** oracle `source` so settlement feeds are never mixed. Symbols must be the wire ids for that source (bare `btc-usd` fo… - [Get Price-to-Beat (PTB) values for crypto up/down contracts](https://docs.kairos.trade/api-reference/data/markets/get-price-to-beat-ptb-values-for-crypto-updown-contracts.md): Returns the oracle price captured at the start of each requested window ("the price to beat"), nested `{window: {symbol: {...}}}`. `windows` is comma-separated; each must be one of `1m, 5m, 15m, 1h, 4h, 1d`. Window starts align to clean ET boundaries. Only **window** PTB sources are accepted: `binan… - [Get last-known prices for equity/forex/commodity symbols](https://docs.kairos.trade/api-reference/data/markets/get-last-known-prices-for-equityforexcommodity-symbols.md): Returns last-known prices for a fixed allow-list of stock, ETF, forex, and commodity symbols (e.g. AAPL, SPY, EURUSD, XAUUSD), mapped internally to their upstream tickers. A request is served straight from cache only if every requested symbol is already cached. Otherwise, missing symbols are fetched… - [Cross-venue arbitrage opportunities from the Arb Bets feed](https://docs.kairos.trade/api-reference/data/markets/cross-venue-arbitrage-opportunities-from-the-arb-bets-feed.md): Server-side proxy to the Arb Bets vendor feed, called with a Kairos-held key so the credential never reaches a client. Fixed vendor parameters: $100 investment, 1.0% minimum profit. The body is the vendor's payload passed through unchanged — Kairos does not normalize it, and its shape is owned by th… - [Ranked cross-venue links with a union book](https://docs.kairos.trade/api-reference/data/markets/ranked-cross-venue-links-with-a-union-book.md): The cross-venue "matches" catalog: every approved global market link (one real-world contract listed on 2–4 venues) for which order execution asserts a union order book per side. Rows are ranked by the largest Discover hourly-volume score across their legs and paged by an opaque `cursor`. Served str… - [The cross-venue link holding each venue market](https://docs.kairos.trade/api-reference/data/markets/the-cross-venue-link-holding-each-venue-market.md): Batched reverse lookup from venue markets to the catalog row that holds them. A market is matched by its executor market id, its stream key (the numeric Gamma id for Polymarket), or — for a Kalshi two-ticker game — the ticker that books the link's NO side. References without a published link are omi… - [Cross-venue cluster membership for a set of markets](https://docs.kairos.trade/api-reference/data/markets/cross-venue-cluster-membership-for-a-set-of-markets.md): Resolves each `:` reference to its equivalence cluster at the requested tier floor and returns the cluster's other live members. Members listed on a venue whose indexing is switched off, or whose status is settled/closed/resolved, are excluded; a reference whose cluster keeps… - [Fetch OHLCV candles for a single contract](https://docs.kairos.trade/api-reference/data/candles/fetch-ohlcv-candles-for-a-single-contract.md): Returns OHLCV candle bars for one `(provider, contract_id, outcome)` series over `[start, end)`, bucketed at `timeframe_seconds`. - [Fetch candles for up to 200 contracts in one request](https://docs.kairos.trade/api-reference/data/candles/fetch-candles-for-up-to-200-contracts-in-one-request.md): Batched form of `GET /candles`. Accepts up to 200 per-contract requests and returns results in the same order, index-tagged. - [Proxy Kalshi's public trade-history API for one market](https://docs.kairos.trade/api-reference/data/trades/proxy-kalshis-public-trade-history-api-for-one-market.md): Thin proxy over Kalshi's `GET /trade-api/v2/markets/trades`, with a short-lived cache and Kairos-computed metrics appended. - [Proxy Polymarket's public trade-history API for one market](https://docs.kairos.trade/api-reference/data/trades/proxy-polymarkets-public-trade-history-api-for-one-market.md): Thin proxy over Polymarket's `GET https://data-api.polymarket.com/trades`, with a short-lived cache and Kairos-computed metrics appended. - [Fetch normalized, Kairos-ingested trade history for a contract](https://docs.kairos.trade/api-reference/data/trades/fetch-normalized-kairos-ingested-trade-history-for-a-contract.md): Returns normalized trade history for a single `(provider, contract_id)` from Kairos's own ingested trade store. Unlike `/trades/kalshi` and `/trades/polymarket`, this is not a live upstream proxy — it serves from data Kairos has already ingested, so coverage depends on how much history has been back… - [Fetch volume and outcome-pressure metrics for a contract](https://docs.kairos.trade/api-reference/data/trades/fetch-volume-and-outcome-pressure-metrics-for-a-contract.md): Returns aggregate trade metrics (volume, per-outcome volume split, trade count) for a single `(provider, contract_id)` over a lookback window, computed from Kairos's own ingested trade store — same data source as `/trades/history`, not a live upstream proxy. There is no buy/sell-side breakdown: metr… - [Get a trader's realized-PnL time series](https://docs.kairos.trade/api-reference/data/trader-analytics/get-a-traders-realized-pnl-time-series.md): Returns a time-series of realized PnL data points for charting a trader's PnL progression over the requested window, bucketed by `time_range`. The wallet address is validated as either an Ethereum (0x...) address (Polymarket/Opinion/predictfun) or a Solana base58 address (Kalshi) and normalized (low… - [Get a trader's performance stats without the position list](https://docs.kairos.trade/api-reference/data/trader-analytics/get-a-traders-performance-stats-without-the-position-list.md): Returns the stats a trader profile's header and stats panel show (PnL, ROI, win rate, volume, position counts, positions_value) without the position list, so they render before the positions page. The figures match `performance` on `/trader-stats/positions`. `performance` is null for a venue whose s… - [Get a trader's PnL windows, win/loss, ROI distribution and daily PnL calendar](https://docs.kairos.trade/api-reference/data/trader-analytics/get-a-traders-pnl-windows-winloss-roi-distribution-and-daily-pnl-calendar.md): Returns the trader profile's analysis panel: realized PnL and buy count over the 1D, 7D, 30D and ALL windows (whole UTC days ending today; 1D is today only), lifetime winning/losing closed positions and win rate, the distribution of closed positions by ROI (realized PnL over the cost bought for the… - [Get a trader's open/closed positions and derived performance stats](https://docs.kairos.trade/api-reference/data/trader-analytics/get-a-traders-openclosed-positions-and-derived-performance-stats.md): Returns a trader's positions plus performance metrics computed from a full-inventory scan — served independently of the unified profile so the Positions tab and stats panel can load on their own fetch. Positions are filtered by `status` (open/closed/all), sorted by current value (largest first), and… - [Get a trader's recent trade/fill history](https://docs.kairos.trade/api-reference/data/trader-analytics/get-a-traders-recent-tradefill-history.md): Returns a paginated page of a wallet's fills, served independently of the full profile as the fast path for the History tab. Reads only trade rows (plus market-title enrichment) — it deliberately skips the heavier positions/inventory and PnL-summary computations used by the full profile build. Each… - [Get top token holders for one or more markets](https://docs.kairos.trade/api-reference/data/trader-analytics/get-top-token-holders-for-one-or-more-markets.md): Fetches the largest holders of each outcome token for the given market IDs from the provider-specific upstream source, including Polymarket's data-api and Predict.fun's public GraphQL API. `market` accepts a comma-separated list (up to 50 IDs, each capped at 128 chars); Predict.fun requires numeric… - [Search for a trader's public profile by wallet address](https://docs.kairos.trade/api-reference/data/trader-analytics/search-for-a-traders-public-profile-by-wallet-address.md): Fetches public profile information (display name, pseudonym, bio, avatar, X/Twitter handle, verification badge, associated user IDs) for a wallet address from the upstream provider. Provider is auto-detected from address format when omitted — Ethereum (0x...) addresses default to Polymarket and Sola… - [List available PnL providers](https://docs.kairos.trade/api-reference/data/pnl/list-available-pnl-providers.md): Returns the set of providers the merged-PnL pipeline knows about, each with a human-readable description. For API-key callers, the set is additionally filtered to providers whose API access is currently enabled — JWT-user and admin callers are exempt from this check. No endpoint-specific rate limit;… - [Get merged PnL data for a user across one or more wallets/providers](https://docs.kairos.trade/api-reference/data/pnl/get-merged-pnl-data-for-a-user-across-one-or-more-walletsproviders.md): Fetches and merges PnL records/summary across the wallets supplied for this user via the general-purpose PnL path — not the real-time pipeline used by `/pnl/hover` and `/pnl/wallet-totals`. At least one of `polymarket_wallet`, `kalshi_wallet`, or `hyperliquid_wallet` is required — the request is rej… - [Live per-market PnL for a (wallet, market) pair](https://docs.kairos.trade/api-reference/data/pnl/live-per-market-pnl-for-a-wallet-market-pair.md): Live "hover" PnL for a single wallet on a single market, sourced from a fast real-time pipeline — quick regardless of how far back the wallet's earliest trade goes. Returns one row per token held on the contract (e.g. YES + NO for a binary market) plus aggregate totals across those tokens. Only prov… - [Wallet-wide PnL totals across all markets](https://docs.kairos.trade/api-reference/data/pnl/wallet-wide-pnl-totals-across-all-markets.md): Wallet-wide PnL totals aggregated across every market the wallet has touched, refreshed hourly — a fast point lookup rather than a live scan. For real-time per-market freshness on a single active market, use `/pnl/hover/{provider_id}/{wallet}/{contract_id}` instead. Same provider restriction as `/pn… - [Search markets by text query](https://docs.kairos.trade/api-reference/data/search/search-markets-by-text-query.md): Unified market search. Results are post-filtered to drop rows whose provider is currently inactive. - [Search both markets and events with combined relevance scoring](https://docs.kairos.trade/api-reference/data/search/search-both-markets-and-events-with-combined-relevance-scoring.md): Runs a market search and/or event search depending on `type`, tags event rows with `"type": "event"`, merges both result sets, sorts by `relevance_score` descending, and truncates to `limit`. Same provider-visibility post-filter as `/search/markets`. - [Fast simple search for navbar/autocomplete overlay](https://docs.kairos.trade/api-reference/data/search/fast-simple-search-for-navbarautocomplete-overlay.md): Primary search endpoint behind the web navbar overlay. Supports sort/offset/pagination and optional server-side event grouping (`group_results`), then applies provider-visibility filtering. When `group_results=true`, best-effort enrichment (never fails the request) adds `classifiedGroups`/`absorbedM… - [Resolve a pasted Polymarket/Kalshi/predict.fun market or event URL](https://docs.kairos.trade/api-reference/data/search/resolve-a-pasted-polymarketkalshipredictfun-market-or-event-url.md): Parses `url` against known host patterns — polymarket.com `/event//` (market) or `/event/` (event) or legacy `/market/`; kalshi.com ticker/event_id/market_id path segments; predict.fun equivalents. Unrecognized hosts or unmatched paths return an empty `/search/simple`-… - [Autocomplete suggestions for search-as-you-type](https://docs.kairos.trade/api-reference/data/search/autocomplete-suggestions-for-search-as-you-type.md): Returns autocomplete suggestions. Not provider-visibility filtered. - [Find markets by what their book and tape are doing](https://docs.kairos.trade/api-reference/data/search/find-markets-by-what-their-book-and-tape-are-doing.md): Screens the whole live catalogue by spread, resting depth, rolling volume, open interest and price, rather than by text. Numbers are live from the market-vitals cache (sub-second book and tape), joined to the discover cache for titles; a market the discover cache has never seen is still returned, un… - [One-click screens the screener offers](https://docs.kairos.trade/api-reference/data/search/one-click-screens-the-screener-offers.md): Named parameter sets for common screens, so a client does not hardcode thresholds. Each preset's `params` are query parameters for `/search/screener`. Also lists the accepted `sort` values. - [Paginated, filtered, event-grouped market list for the Discover page](https://docs.kairos.trade/api-reference/data/discover/paginated-filtered-event-grouped-market-list-for-the-discover-page.md): Returns a paginated, filtered, sorted, event-grouped market list for the Discover page, with server-side filtering (provider, category incl. alias remapping, free-text search, price/volume bounds, explicit market-id list, platform-tag/subcategory intersection, expiration window) and sorting. Most fi… - [Compact full market list for client-side instant search](https://docs.kairos.trade/api-reference/data/discover/compact-full-market-list-for-client-side-instant-search.md): Returns every valid market (grouped by event) in a compact shape for the client to index locally. Responses are cached to keep this fast after the first build. - [Top markets for the discover page ticker bar](https://docs.kairos.trade/api-reference/data/discover/top-markets-for-the-discover-page-ticker-bar.md): Returns the top markets for the discover page ticker bar. Responses are cached briefly. - [Market pulse — latest trending movers for the Pulse rail](https://docs.kairos.trade/api-reference/data/discover/market-pulse-—-latest-trending-movers-for-the-pulse-rail.md): Interleaves biggest 24h price movers, top 1h-volume, and top 24h-volume markets (deduped). Responses are cached briefly. - [Markets expiring soonest, with actionable prices](https://docs.kairos.trade/api-reference/data/discover/markets-expiring-soonest-with-actionable-prices.md): Returns markets expiring soonest, with actionable prices. Responses are cached briefly. - [Available subcategories (subtopics) for a topic category, with live market counts](https://docs.kairos.trade/api-reference/data/discover/available-subcategories-subtopics-for-a-topic-category-with-live-market-counts.md): Resolves the topic tag's child subtopic tags together with live market counts, drops zero-count subtopics, and sorts by count descending. Responses are cached, including empty results. - [Kalshi sports events matched against live Polymarket games](https://docs.kairos.trade/api-reference/data/discover/kalshi-sports-events-matched-against-live-polymarket-games.md): Returns cached Kalshi sports events and, if `games` is supplied, matches each `AWAY:HOME[:league]` triple's team codes (uppercased) against each event's ticker suffix (segment after the first `-`), grouping and sorting matches by total volume descending. - [Trending markets by 1h volume](https://docs.kairos.trade/api-reference/data/discover/trending-markets-by-1h-volume.md): Returns trending markets ranked by 1-hour volume. - [Trending market ids for a live-price subscription](https://docs.kairos.trade/api-reference/data/discover/trending-market-ids-for-a-live-price-subscription.md): Same ranking as `/api/markets/trending`, reduced to the fields a WebSocket subscriber needs to open a live-price stream (id, symbol, price, 24h volume). Not cached — every call reads the trending index directly. - [List all active provider configurations](https://docs.kairos.trade/api-reference/data/providers/list-all-active-provider-configurations.md): Returns the minimal exchange-agnostic config needed by the UI for every currently active provider. Public endpoint — no auth headers are checked. No endpoint-specific rate limit; only the global default (100/minute) applies. - [List providers available to API-key callers](https://docs.kairos.trade/api-reference/data/providers/list-providers-available-to-api-key-callers.md): Returns active providers whose API-access toggle is enabled. Public endpoint — no auth required. Operator reasons and other admin-only flag metadata are never returned. No endpoint-specific rate limit; only the global default (100/minute) applies. - [Get a single provider configuration by id](https://docs.kairos.trade/api-reference/data/providers/get-a-single-provider-configuration-by-id.md): Looks up one provider by id (case-insensitive, trimmed). Public endpoint — no auth required. No endpoint-specific rate limit; only the global default (100/minute) applies. - [Top live/upcoming sports markets matched across Polymarket and Kalshi](https://docs.kairos.trade/api-reference/data/sports/top-liveupcoming-sports-markets-matched-across-polymarket-and-kalshi.md): Finds games that have BOTH a Polymarket and a Kalshi entry in the cross-venue sports match cache, drops any entry whose embedded date is older than yesterday (UTC), enriches each surviving Kalshi side with a live volume figure (`volume_1h` falling back to `volume_total`), sorts descending by that vo… - [Cross-platform matching-market records for a set of market slugs](https://docs.kairos.trade/api-reference/data/sports/cross-platform-matching-market-records-for-a-set-of-market-slugs.md): Returns the cross-venue match record for each requested market slug, keyed by slug. Provider entries can include Polymarket, Kalshi, Predict.fun, and Hyperliquid. Slugs with no cross-venue match are silently omitted from the response object (not returned as null). When `live=true`, the Kalshi side o… - [Kalshi Sport -> Competition -> Scope taxonomy](https://docs.kairos.trade/api-reference/data/sports/kalshi-sport->-competition->-scope-taxonomy.md): Returns the upstream Kalshi taxonomy payload verbatim (no normalization). Used to drive Kalshi sport/competition/scope filter UI. - [Active sports games with urgency scores and cross-provider prices](https://docs.kairos.trade/api-reference/data/sports/active-sports-games-with-urgency-scores-and-cross-provider-prices.md): Returns active game IDs plus, when the provider indexing gate has `predictfun` enabled, open Predict.fun fixtures inside their scheduled start/end window. The gate is re-checked on every request (including cache hits); a gate lookup failure excludes Predict.fun (fail closed) without dropping Polymar… - [All markets for a single sports event](https://docs.kairos.trade/api-reference/data/sports/all-markets-for-a-single-sports-event.md): Resolves markets for one game. If `game_id` is given, tries a cached lookup first, falling back to a live Polymarket lookup on a miss. If only `slug` is given, first resolves the event's `gameId` via a live Polymarket lookup, then performs the same event-markets lookup. Returns an empty markets list… - [Currently-live Kalshi sports games (NHL/NBA/MLB/NFL+UFL/soccer/esports)](https://docs.kairos.trade/api-reference/data/sports/currently-live-kalshi-sports-games-nhlnbamlbnfl+uflsocceresports.md): Returns every Kalshi milestone currently live for the supported milestone types (hockey_tournament, basketball_game, baseball_game, football_game, soccer_tournament_multi_leg, esports_match), built into moneyline/spread/total market blocks from Kalshi's trading API. "Live" means started recently or… - [Live game pairings between Polymarket and Kalshi](https://docs.kairos.trade/api-reference/data/sports/live-game-pairings-between-polymarket-and-kalshi.md): Cross-references currently-live Polymarket games against currently-live Kalshi games, grouped by a Kalshi-league -> Polymarket-sport crosswalk and matched via a multi-step heuristic (ticker-code match, team-name/alias substring match, derived-code prefix match, letter-subset fallback). **Price scale… - [Enriched catalog of sport categories and leagues](https://docs.kairos.trade/api-reference/data/sports/enriched-catalog-of-sport-categories-and-leagues.md): Returns the curated sports taxonomy, including UEFA Europa League (`uel`) under soccer, with the provider series and tag identifiers clients need to request league events. Responses are cacheable. - [Upcoming (not-yet-live) sports events within a time window](https://docs.kairos.trade/api-reference/data/sports/upcoming-not-yet-live-sports-events-within-a-time-window.md): Returns fixtures in the requested league set whose scheduled start falls within `windowHours`, together with primary markets, combo eligibility where available, and cross-venue matches for Polymarket, Kalshi, Predict.fun, and Hyperliquid. Provider-only fixtures may be returned as standalone events.… - [Season/tournament futures markets across sports](https://docs.kairos.trade/api-reference/data/sports/seasontournament-futures-markets-across-sports.md): Returns futures-style (non-per-game) sports markets for providers Polymarket and Predict.fun (open/active status only). Per-match/per-game rows are excluded; each event is classified into a (category, league) pair from a large token/phrase table, falling back to an "other" bucket, and titles that lo… - [Tournament bracket with live cross-provider prices per tie](https://docs.kairos.trade/api-reference/data/sports/tournament-bracket-with-live-cross-provider-prices-per-tie.md): Builds a tournament bracket for `league`. Bracket structure and results are sourced from third-party sports-data providers depending on the league. Each tie/match is enriched with live prices from Polymarket, Kalshi (authenticated API), and Predict.fun where a corresponding market can be matched. `f… - [Cross-venue market families for a single game, grouped by section](https://docs.kairos.trade/api-reference/data/sports/cross-venue-market-families-for-a-single-game-grouped-by-section.md): Returns one game's markets grouped into sections such as game lines, halves, player props, exact score, and corners. Cross-venue families can include Polymarket, Kalshi, Predict.fun, and Hyperliquid. Each family is either a pill of named outcomes or a ladder of ordered Over/Under rungs. Tradeable le… - [Catalog of combo-eligible Polymarket markets](https://docs.kairos.trade/api-reference/data/sports/catalog-of-combo-eligible-polymarket-markets.md): Returns the catalog of markets eligible for parlay/combo construction, filtered to Polymarket only (combos are Polymarket-only). Responses are briefly cached, with a self-healing guard that discards and rebuilds a cache entry left over from a pre-migration response shape. - [Synced sports teams and leagues reference data](https://docs.kairos.trade/api-reference/data/sports/synced-sports-teams-and-leagues-reference-data.md): Returns every synced team and league for frontend lookups (logos, abbreviations, aliases, colors), ordered by name/sport. Served from a shared server cache refreshed every 15 minutes and never more than 24 hours old; the `Age` header gives the seconds since the body was built. - [Matched markets with identifiers, outcomes, and current reference prices](https://docs.kairos.trade/api-reference/data/sports/matched-markets-with-identifiers-outcomes-and-current-reference-prices.md): Returns the same verified, live-filtered pair catalog as `/matched-markets`, with `details` and `pricing` attached to both sides. Unsupported markets, missing quotes, and individual venue failures produce `pricing: null` without changing pair membership or pagination. Prices use each venue's API sca… - [Paginated catalog of verified cross-venue matched markets](https://docs.kairos.trade/api-reference/data/sports/paginated-catalog-of-verified-cross-venue-matched-markets.md): Returns embedding-verified cross-venue market matches (verified matches only), joined against market metadata for display (title, ticker, images, expiry, status). `min_similarity` is clamped server-side to never go below a minimum threshold regardless of what the caller passes. Pairs are dropped if… - [List sports fixtures with live status and win probabilities](https://docs.kairos.trade/api-reference/data/sports/list-sports-fixtures-with-live-status-and-win-probabilities.md): Fixture board backed by the TxODDS score event store. Kick-off bounds are snapped to the minute — `from_ms` rounds down and `to_ms` rounds up, so the window may extend up to 59s past what was asked for. Per-row status is computed at cache time from feed phase plus wall clock, so a live-status flip c… - [Score, timeline, and possession metrics for one fixture](https://docs.kairos.trade/api-reference/data/sports/score-timeline-and-possession-metrics-for-one-fixture.md): Full detail for a single fixture: scoreline, event timeline, and possession-derived metrics. Independent parts are read concurrently and degrade individually — a part that fails is returned in its empty shape rather than failing the response, and the degraded payload is cached for a shorter time tha… - [Source-observed soccer and NFL fixture timing](https://docs.kairos.trade/api-reference/data/sports/source-observed-soccer-and-nfl-fixture-timing.md): Fresh source clock evidence for one TxODDS fixture. No response caching or client countdown extrapolation. Missing, legacy, stale, interrupted, unsupported, or malformed evidence returns usableForLateGame=false with an explicit reason. Requires a verified fixture-to-market mapping before use by a tr… - [Win-probability history and market read for one fixture](https://docs.kairos.trade/api-reference/data/sports/win-probability-history-and-market-read-for-one-fixture.md): The odds-derived curves for a fixture, split out from the detail because they read a table orders of magnitude larger than the score store. Both parts degrade independently: a failed win-probability read returns an empty history, a failed market read returns null projections, and a degraded payload… - [Create or join a Synthetic Book definition](https://docs.kairos.trade/api-reference/execution/synthetic-books/create-or-join-a-synthetic-book-definition.md): Creates an account-owned ten-minute lease for a canonical weighted book and returns the `synthetic_id` to subscribe to at `wss://stream.kairos.trade` with provider/topic `synthetic`. - [Refresh a Synthetic Book lease](https://docs.kairos.trade/api-reference/execution/synthetic-books/refresh-a-synthetic-book-lease.md): Refreshes an unexpired lease owned by the authenticated user. Refresh every five minutes; a lease expires after ten minutes and an expired lease must be recreated. - [Release a Synthetic Book lease](https://docs.kairos.trade/api-reference/execution/synthetic-books/release-a-synthetic-book-lease.md): Releases an account-owned lease. The canonical materialization remains live while any other lease references it and otherwise enters its reclamation TTL. - [Inspect a Synthetic Book definition](https://docs.kairos.trade/api-reference/execution/synthetic-books/inspect-a-synthetic-book-definition.md): Returns materialization metadata only when the authenticated user owns an active lease for this canonical id. Cross-account subscriber counts are intentionally omitted. - [List the authenticated user's orders](https://docs.kairos.trade/api-reference/execution/orders/list-the-authenticated-users-orders.md): Returns orders belonging to the authenticated caller, most recent first, with optional status filtering and offset pagination. When `status` is omitted, every status (including terminal ones) is returned. **Response is trimmed.** To keep this endpoint cheap for polling UIs, the heavy `raw` (full ven… - [Submit a new order](https://docs.kairos.trade/api-reference/execution/orders/submit-a-new-order.md): Submits a custodial order: Kairos signs and routes it to the venue on the caller's behalf (custodial signing). This is the standard order-entry path used by both the web app and API-key consumers who have not been allow-listed onto the self-custody "external-signing" lane (`POST /v2/orders/intent` +… - [Get a single order by internal id](https://docs.kairos.trade/api-reference/execution/orders/get-a-single-order-by-internal-id.md): Returns the full order row (including `raw`, the unredacted venue response, and `metadata`) for a single order the caller owns. Use this after `POST /orders` to poll a specific order's terminal state, or after `GET /orders` (which strips `raw`/`metadata`) to drill into one row. - [Cancel a single order](https://docs.kairos.trade/api-reference/execution/orders/cancel-a-single-order.md): Cancels one order by internal id. Polymarket cancellation is an L2 API-key (HMAC) operation on the venue side, so no EOA/wallet signature is required — this works identically for custodial and external-signing orders. **This endpoint almost always returns `200`, even on failure to cancel.** `success… - [Reprice a resting limit order in place](https://docs.kairos.trade/api-reference/execution/orders/reprice-a-resting-limit-order-in-place.md): Moves a resting limit order's price in one venue round trip. The order keeps its Kairos `order_id` AND its venue `exchange_order_id` — that is the property this endpoint exists to provide: no supersession to record, and no second order whose fill could be booked twice. The cancel-and-replace it repl… - [Cancel a specific set of orders atomically at the selection layer](https://docs.kairos.trade/api-reference/execution/orders/cancel-a-specific-set-of-orders-atomically-at-the-selection-layer.md): Validates the ENTIRE selection before sending any venue request — if any requested order is missing, not owned by the caller, already terminal, on a mismatched exchange, or has no exchange order id yet (pre-submission), the whole request is rejected with no venue call made and no partial cancels. On… - [Cancel all of the authenticated user's open orders on an exchange](https://docs.kairos.trade/api-reference/execution/orders/cancel-all-of-the-authenticated-users-open-orders-on-an-exchange.md): Kill-switch endpoint: cancels every open order the caller has on `exchange_id` (optionally scoped further to a single `market_id`) via the venue's native cancel-all call, then reconciles local `Order` rows up to however many the venue actually reported cancelled. If the venue reports `0` cancellatio… - [Get a combined platform + exchange fee quote for a prospective trade](https://docs.kairos.trade/api-reference/execution/orders/get-a-combined-platform-+-exchange-fee-quote-for-a-prospective-trade.md): Prices a trade you are considering WITHOUT submitting it: for a market order (`order_type=market`, `price` omitted) the live orderbook is walked for `quantity` to compute a size-weighted executable price; for a limit order (`order_type=limit`) `price` is required and used as the resting quote. Share… - [Get the authenticated user's current live position exposure](https://docs.kairos.trade/api-reference/execution/orders/get-the-authenticated-users-current-live-position-exposure.md): Returns the caller's current positions from the lowest-latency source available, which is always at least as fresh as the synchronous fill path. This is the RECOMMENDED source of truth for "what do I currently hold" while actively trading — prefer it over any aggregate that may lag behind live fills… - [Build an unsigned EIP-712 order payload for self-custody signing (step 1 of 2)](https://docs.kairos.trade/api-reference/execution/orders/build-an-unsigned-eip-712-order-payload-for-self-custody-signing-step-1-of-2.md): The first step of the "external-signing" / bring-your-own-key institutional lane (Polymarket and Predict.fun, EOA only): the server builds the canonical EIP-712 typed-data message for the order you describe and stashes it single-use in Redis under a fresh `payload_id` (60 s TTL). NO order is placed… - [Submit your externally-signed order signature (step 2 of 2)](https://docs.kairos.trade/api-reference/execution/orders/submit-your-externally-signed-order-signature-step-2-of-2.md): Completes the self-custody order flow started by `POST /v2/orders/intent`: hand back `payload_id` and the 65-byte signature you produced over the returned digest. The server atomically claims the stored intent with a Redis `GETDEL` (single-use — a replayed or concurrent second submit for the same `p… - [Shallow liveness probe](https://docs.kairos.trade/api-reference/execution/orders/shallow-liveness-probe.md): The load balancer's liveness probe. **Unauthenticated** — the only endpoint on this service that is. Always returns `200`; a failed Redis ping is reported as `status: "degraded"` / `healthy: false` in the body rather than as a non-2xx status, so the probe never removes an instance that is still serv… - [Build pinned unsigned on-chain transactions for self-signing (step 1 of 2)](https://docs.kairos.trade/api-reference/execution/orders/build-pinned-unsigned-on-chain-transactions-for-self-signing-step-1-of-2.md): The on-chain counterpart to `POST /v2/orders/intent`, for the operations an order cannot do off-chain: one-time approvals, redemptions of resolved positions, CTF split/merge, and unwrapping wrapped collateral. Kairos builds the exact calldata, pins it under a single-use `payload_id` (300 s TTL), and… - [Broadcast your externally-signed on-chain transactions (step 2 of 2)](https://docs.kairos.trade/api-reference/execution/orders/broadcast-your-externally-signed-on-chain-transactions-step-2-of-2.md): Hand back the `payload_id` and one signature per transaction, in the order `POST /v2/onchain/intent` returned them. The server claims the stored intent atomically (single-use Redis `GETDEL` — a replay gets `400`), re-verifies each signature recovers to the declared owner AND to a wallet registered t… - [List the venue ids this deployment has registered](https://docs.kairos.trade/api-reference/execution/exchanges/list-the-venue-ids-this-deployment-has-registered.md): Returns the raw registry ids (e.g. `polymarket`, `kalshi`, `predictfun`, `hyperliquid`, `opinion`) usable as `exchange_id` elsewhere in this API. Requires authentication but **no scope** — it exposes no user data. Infallible: it cannot return an error status. - [Get a venue's display info and full capability set](https://docs.kairos.trade/api-reference/execution/exchanges/get-a-venues-display-info-and-full-capability-set.md): Returns the venue's display name, active flag, and the complete `capabilities` object that drives per-venue order validation. Requires authentication but **no scope**. The lookup canonicalizes aliases (`kalshi_offchain` resolves to `kalshi`), but the response's top-level `id` echoes what you asked f… - [Get a venue's capability set](https://docs.kairos.trade/api-reference/execution/exchanges/get-a-venues-capability-set.md): The `capabilities` sub-object of `GET /exchanges/{exchange_id}`, on its own. This is the endpoint to consult before submitting an order: it tells you the venue's `supported_tif`, whether it honours `post_only`, its `min_tick_size` / `min_order_size` / `max_price`, and whether `POST /orders/cancel-al… - [Set the on-chain allowances the venue needs](https://docs.kairos.trade/api-reference/execution/exchanges/set-the-on-chain-allowances-the-venue-needs.md): Grants the venue's contracts the token approvals they need, signed custodially with your delegated key. Idempotent in effect: an already-sufficient allowance is not re-sent, and the corresponding `*_tx_hash` comes back `null`. The three identity fields in the body are required by the schema but are… - [Drop the service's cached copy of your venue credentials](https://docs.kairos.trade/api-reference/execution/exchanges/drop-the-services-cached-copy-of-your-venue-credentials.md): Evicts the cached credential set for one venue (or all of them) so the next order re-reads it from storage. Use after rotating a venue API key or re-running an enable-trading flow, when the executor would otherwise keep using the stale credential for the cache's lifetime. Does not delete or modify a… - [Sponsor gas and set the venue's required allowances on a wallet](https://docs.kairos.trade/api-reference/execution/exchanges/sponsor-gas-and-set-the-venues-required-allowances-on-a-wallet.md): The one-time onboarding step behind "enable trading": tops the wallet up with sponsored gas if it needs it, then sets every token allowance the venue's contracts require. Both legs are signed custodially with the user's delegated key. **`wait_for_confirmation` defaults to `true`.** The call then blo… - [Price a size across both legs of an approved cross-venue market link](https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-both-legs-of-an-approved-cross-venue-market-link.md): Plans a buy across the two venues of an approved market link and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. `POST /orders/route-buy` executes the same plan. **A plan that cannot be built is still a `200`** with `routed: false` — no approved l… - [Get the per-leg fee model for an approved cross-venue market link](https://docs.kairos.trade/api-reference/execution/routing/get-the-per-leg-fee-model-for-an-approved-cross-venue-market-link.md): Returns the fee model each leg of the link charges per side, so a client can show the routing cost before quoting a size. Legs on non-routable venues are silently omitted. An unrecognized link is a `200` with `routed: false` and an empty `legs`. **Auth & scope.** Requires `trade:read` for `provider`… - [Buy a size split across both legs of an approved cross-venue market link](https://docs.kairos.trade/api-reference/execution/routing/buy-a-size-split-across-both-legs-of-an-approved-cross-venue-market-link.md): Executes the plan `GET /orders/route-quote` previews: creates a parent route row and submits one child order per leg. Children go through the same validation, admission and rate limiting as `POST /orders`. **Partial success is a `200`.** `status` is always `submitting`; a leg that failed to submit h… - [Close a routed position across both legs of a market link](https://docs.kairos.trade/api-reference/execution/routing/close-a-routed-position-across-both-legs-of-a-market-link.md): Sells the holdings on each leg of an approved market link, at a per-leg floor price derived from that leg's best bid minus `slippage_cents` (never below `0.01`). Holdings are rounded down to the venue's share precision, and a leg with less than `0.01` sellable is skipped. **`leg_caps` is fail-closed… - [List the caller's routed parent orders and their legs](https://docs.kairos.trade/api-reference/execution/routing/list-the-callers-routed-parent-orders-and-their-legs.md): Returns routed parents (from `route-buy` / `route-close`) newest first, each with its legs and the child order id, status and fill state. Available regardless of the `ROUTED_EXECUTION_ENABLED` flag, so history stays readable after routing is switched off. **Note on timestamps:** `created_at` / `comp… - [Create (or preview) a self-serve cross-venue market link](https://docs.kairos.trade/api-reference/execution/routing/create-or-preview-a-self-serve-cross-venue-market-link.md): Declares that two markets on two different venues are the same real-world contract, making them routable together by `GET /orders/route-quote`, `POST /orders/route-buy` and `POST /orders/route-close`. **Two-step by design.** `confirm: false` (the default) returns a verified preview and writes nothin… - [Price a Polymarket combo (parlay) without executing it](https://docs.kairos.trade/api-reference/execution/combo/price-a-polymarket-combo-parlay-without-executing-it.md): Returns the real maker-quoted blended price for a multi-leg Polymarket combo. A naive product of the individual leg prices does NOT match what the RFQ gateway quotes, so this is the only correct way to price a parlay before placing it. Read-only: it opens an RFQ, takes the quote, drops the connectio… - [Buy a Polymarket combo (parlay) via the RFQ gateway](https://docs.kairos.trade/api-reference/execution/combo/buy-a-polymarket-combo-parlay-via-the-rfq-gateway.md): Runs the whole requester flow server-side in one call: creates the RFQ from your chosen leg position ids, accepts the best quote with a signed order, and returns the on-chain result. It is one call rather than two precisely to beat the quote expiry — there is no separate accept step. **Set `maxPrice… - [List the authenticated user's Polymarket combo positions](https://docs.kairos.trade/api-reference/execution/combo/list-the-authenticated-users-polymarket-combo-positions.md): Returns the combos held by the caller's Polymarket maker wallet, newest/most-valuable first, each with its per-leg resolution state. Capped at 50 combos; there is no pagination parameter and no query parameters at all. **At the combo level, read `redeemable`, not `status`.** A won-but-unredeemed com… - [Price a combo cash-out (SELL) without executing it](https://docs.kairos.trade/api-reference/execution/combo/price-a-combo-cash-out-sell-without-executing-it.md): Returns the real maker-quoted proceeds for selling an open combo, and subtracts the Kairos platform fee so the preview matches what actually lands in the wallet. A client-side `shares × ∏(leg price)` estimate ignores the maker's spread and systematically overstates the payout — show `netProceedsE6`,… - [Sell an open combo position back to pUSD](https://docs.kairos.trade/api-reference/execution/combo/sell-an-open-combo-position-back-to-pusd.md): Sells `shares` of an open combo through the RFQ gateway. Preview it first with `POST /combo/cash-out-quote`. **`minProceedsUsd` is checked against GROSS proceeds**, before the platform fee is deducted — so the amount that lands can be below the floor you set by the fee amount. Size the floor accordi… - [Redeem a resolved, winning combo back to pUSD](https://docs.kairos.trade/api-reference/execution/combo/redeem-a-resolved-winning-combo-back-to-pusd.md): The settlement path a cash-out cannot cover: once every leg has resolved there is no maker to sell to, so a winning combo is redeemed on-chain instead. Executed as a Polymarket relayer `WALLET` batch (approve the combo Router as operator, then redeem), signed by the deposit wallet's owner EOA throug… - [Provision Polymarket CLOB credentials and set on-chain approvals](https://docs.kairos.trade/api-reference/execution/onboarding/provision-polymarket-clob-credentials-and-set-on-chain-approvals.md): The one-time onboarding step for Polymarket. In a single call the server derives CLOB API credentials for your wallet (signing the ClobAuth EIP-712 message with your delegated key), encrypts and stores them, and sets the token approvals the venue needs. Until this succeeds, `POST /orders` on `polyma… - [Provision CLOB credentials for an imported Polymarket wallet](https://docs.kairos.trade/api-reference/execution/onboarding/provision-clob-credentials-for-an-imported-polymarket-wallet.md): The equivalent of `POST /exchanges/polymarket/enable-trading` for a wallet imported from polymarket.com. Derives and stores CLOB credentials against the imported EOA. No approval legs run — an imported wallet already carries its on-chain approvals from its prior polymarket.com activity. Neither `wal… - [Set the on-chain approvals Predict.fun needs](https://docs.kairos.trade/api-reference/execution/onboarding/set-the-on-chain-approvals-predictfun-needs.md): Predict.fun has no server-side credentials to provision — orders are signed at submission time. This endpoint does the one-time on-chain setup instead: it approves USDT and ConditionalTokens across all four `(yieldBearing × negRisk)` market variants, gas-sponsored on BSC. A wallet must run this once… - [Provision Opinion credentials and set the USDT allowance](https://docs.kairos.trade/api-reference/execution/onboarding/provision-opinion-credentials-and-set-the-usdt-allowance.md): One-time onboarding for Opinion: auto-provisions Opinion API credentials through their builder API, encrypts and stores them, then sets the USDT allowance on BSC (gas-sponsored). **Known recovery case.** If Opinion already has the wallet on file but Kairos has lost the original API key, and Opinion'… - [Connect your own Kalshi account by storing its API credentials](https://docs.kairos.trade/api-reference/execution/onboarding/connect-your-own-kalshi-account-by-storing-its-api-credentials.md): Kalshi is the one venue where Kairos does NOT custody or provision an identity — you trade against your own Kalshi account, so you supply your own Kalshi API key and RSA private key here. The server validates the PEM, proves the credentials work by calling Kalshi's balance endpoint, then encrypts th… - [Get the caller's Predict.fun account profile](https://docs.kairos.trade/api-reference/execution/onboarding/get-the-callers-predictfun-account-profile.md): Authenticates against Predict.fun with the caller's wallet and returns the `data` block of their `GET /v1/account` — display name, address, referral state and points. The upstream shape is forwarded verbatim, so new upstream fields appear without a Kairos change; treat the response as open. > **Erro… - [Check whether a Polymarket market has resolved](https://docs.kairos.trade/api-reference/execution/onboarding/check-whether-a-polymarket-market-has-resolved.md): Queries Polymarket's Gamma API for a market's resolution state and reports whether positions on it are redeemable. Accepts either a `0x…` condition id or a numeric Gamma market id. Note the path has no `/exchanges` prefix — it sits at the service root. **Auth.** Authentication only — this endpoint e… - [Build the typed data for a Hyperliquid withdrawal (step 1 of 2)](https://docs.kairos.trade/api-reference/execution/hyperliquid/build-the-typed-data-for-a-hyperliquid-withdrawal-step-1-of-2.md): Builds the EIP-712 `withdraw3` payload for a USDC withdrawal from Hyperliquid to an Arbitrum address. **Kairos never signs a withdrawal** — your main wallet does, and this endpoint only hands you the bytes. **This call is pure.** It writes nothing, reserves nothing, and has no side effects. Never ca… - [Submit a signed Hyperliquid withdrawal (step 2 of 2)](https://docs.kairos.trade/api-reference/execution/hyperliquid/submit-a-signed-hyperliquid-withdrawal-step-2-of-2.md): Forwards your main wallet's signed `withdraw3` action to Hyperliquid. Kairos verifies the signature parses and then passes it through; the venue re-verifies it covers `destination`, `amount` and `time`, so a field altered after signing is rejected upstream. **Irreversible.** A withdrawal that Hyperl… - [Build the typed data for a Hyperliquid spot↔perp transfer (step 1 of 2)](https://docs.kairos.trade/api-reference/execution/hyperliquid/build-the-typed-data-for-a-hyperliquid-spot↔perp-transfer-step-1-of-2.md): Builds the EIP-712 `usdClassTransfer` payload for moving USDC between your own Hyperliquid spot and perp balances. **Funds never leave your account** — there is no destination and nothing to mis-address. Your MAIN wallet must sign: Hyperliquid forbids agent wallets from class transfers, so a Kairos-… - [Submit a signed Hyperliquid spot↔perp transfer (step 2 of 2)](https://docs.kairos.trade/api-reference/execution/hyperliquid/submit-a-signed-hyperliquid-spot↔perp-transfer-step-2-of-2.md): Forwards your signed `usdClassTransfer` to Hyperliquid. Because the move is internal to your own account, the blast radius is far smaller than a withdrawal — but the same mechanics apply: no Kairos-side idempotency, `time` doubles as the nonce, and replay protection is Hyperliquid's alone. The `400… - [Deploy the caller's Polymarket deposit wallet and set its trading approvals](https://docs.kairos.trade/api-reference/execution/deposit-wallet/deploy-the-callers-polymarket-deposit-wallet-and-set-its-trading-approvals.md): Creates the user's **deposit wallet** — a per-user ERC-1967 proxy on Polygon, deployed through Polymarket's relayer at a deterministic CREATE2 address derived from the owner EOA. Two relayer operations run: the deployment, then a signed batch setting the CTF/collateral approvals the venue needs. **I… - [Read the relayer nonce (and GSN relay) for an imported Polymarket wallet](https://docs.kairos.trade/api-reference/execution/deposit-wallet/read-the-relayer-nonce-and-gsn-relay-for-an-imported-polymarket-wallet.md): The imported-wallet analogue of the deposit-wallet nonce endpoint: returns the relayer nonce and, for a legacy ProxyWallet (`sig_type: proxy`), the GSN relay address needed to construct the digest the browser signs. For a Gnosis Safe (`sig_type: safe`) `relay` is always `null`. Fetched server-side p… - [Split collateral into a complete outcome-token set](https://docs.kairos.trade/api-reference/execution/ctf/split-collateral-into-a-complete-outcome-token-set.md): Converts `amount` of collateral into `amount` YES **and** `amount` NO tokens on-chain, without going through the order book. Does not open a market position — it mints equal tokens on every outcome; both legs are recorded as synthetic BUY fills at price 0.5 so history and PnL stay consistent. NegRis… - [Merge a complete outcome-token set back into collateral](https://docs.kairos.trade/api-reference/execution/ctf/merge-a-complete-outcome-token-set-back-into-collateral.md): Burns `amount` YES **and** `amount` NO tokens and returns `amount` collateral — recover capital from matched inventory without waiting for resolution. Requires holding at least `amount` of every outcome token. Recorded as two synthetic SELL fills at price 0.5. NegRisk routing, custodial signing, the… - [Redeem winning outcome tokens after resolution](https://docs.kairos.trade/api-reference/execution/ctf/redeem-winning-outcome-tokens-after-resolution.md): After a market resolves on-chain, converts the winning outcome tokens into collateral. Only the winning side is needed (losing shares are worthless). NegRisk redeems unwrap wrapped collateral back to the base asset automatically. `db_update_failed: true` in the response means the on-chain redeem SUC… - [Process health](https://docs.kairos.trade/api-reference/agora/process-health.md): Liveness of the local authority journal. Touches no dependency and is never rate-limited. - [Owner readiness](https://docs.kairos.trade/api-reference/agora/owner-readiness.md): Reports whether this owner accepts new work. Fails closed while draining, while the local authority journal is unavailable, and when the shared Kairos control schema cannot be reached. - [List only auctions visible to the authenticated principal](https://docs.kairos.trade/api-reference/agora/list-only-auctions-visible-to-the-authenticated-principal.md): Merges the live owner shards with the shared completed projection into one page ordered by open time descending, then auction ID descending. Unknown or repeated query parameters are rejected rather than ignored. - [Create and open a private auction](https://docs.kairos.trade/api-reference/agora/create-and-open-a-private-auction.md): The resolved audience and identity policy freeze before this call returns. Economic identity is derived exclusively from the authenticated principal; a caller-supplied account identifier is neither required nor trusted. Supply the idempotency key in the header or request body. If both are present, t… - [Verify originator capacity without reserving it](https://docs.kairos.trade/api-reference/agora/verify-originator-capacity-without-reserving-it.md): Returns a point-in-time, read-only capacity verdict for the authenticated originator across every requested route. The response exposes bounded executable quantity, never raw collateral, position, venue-account, credential, or control-group data. No auction, journal event, or risk reservation is cre… - [Get a role-filtered private auction view](https://docs.kairos.trade/api-reference/agora/get-a-role-filtered-private-auction-view.md): Reads the live owner first and falls back to the shared completed projection. Existence of a private auction is opaque to unrelated principals: they receive the same 404 as a caller asking for an ID that was never issued. - [Get the caller's complete role-filtered audit timeline](https://docs.kairos.trade/api-reference/agora/get-the-callers-complete-role-filtered-audit-timeline.md): Reads the existing owner journal for a live auction or the existing shared kairos_execution projection for completed history. Completeness is verified before returning. Raw authority sequence numbers, event IDs, owner/session identifiers, hidden execution identities, and every competing-maker quote… - [Cancel an open auction](https://docs.kairos.trade/api-reference/agora/cancel-an-open-auction.md): Originator-only. The request body is optional; omit it entirely to cancel with reason code `UNSPECIFIED`. When a body is sent, an `idempotency_key` inside it must match the header exactly. - [Submit or revise one firm executable price and quantity](https://docs.kairos.trade/api-reference/agora/submit-or-revise-one-firm-executable-price-and-quantity.md): Invited makers only. Supply the idempotency key in the header or request body. If both are present, they must match exactly. Revisions are strictly sequential: the first quote must be revision 1 and each later quote exactly one higher than the caller's current revision. - [Withdraw the caller's active quote](https://docs.kairos.trade/api-reference/agora/withdraw-the-callers-active-quote.md) - [Verify the invited maker's price-specific quote capacity](https://docs.kairos.trade/api-reference/agora/verify-the-invited-makers-price-specific-quote-capacity.md): Returns only the authenticated invitee's bounded capacity at the proposed price across every frozen route. It exposes no raw portfolio, other invitee, competing quote, venue-account, or control-group data and creates no reservation or journal event. Quote submission repeats the same calculation insi… - [Read the authenticated participant's durable private invitation inbox](https://docs.kairos.trade/api-reference/agora/read-the-authenticated-participants-durable-private-invitation-inbox.md): Returns only unexpired invitations published to the caller's account before the common close time. - [Orders](https://docs.kairos.trade/rest/orders.md): Submit, query, and cancel orders on the custodial (Kairos-signed) order lane - [Exchanges & Allowances](https://docs.kairos.trade/rest/exchanges.md): Per-venue capability discovery and ERC-20/ERC-1155 allowance status for on-chain exchanges - [Account Access & Exposure](https://docs.kairos.trade/rest/account.md): Read a credential's scopes and per-venue readiness, and read position exposure with its reservation provenance - [CTF Operations](https://docs.kairos.trade/rest/ctf.md): Split, merge, and redeem conditional-token positions on-chain, across exchanges - [Combos & Parlays](https://docs.kairos.trade/rest/combo.md): Quote, execute, cash out, and redeem multi-leg Polymarket parlay positions - [Markets](https://docs.kairos.trade/rest/markets.md): Market details, prices, metadata, tick sizes, outcomes, crypto contracts, and discovery - [Search](https://docs.kairos.trade/rest/search.md): Full-text market and event search, autocomplete, and simple/navbar search endpoints - [Trading Data](https://docs.kairos.trade/rest/trading-data.md): Candles, live trade proxies, and normalized volume metrics from the Data API - [Providers](https://docs.kairos.trade/rest/providers.md): Exchange-agnostic provider configuration: order types, auth flow, chain, and token-format metadata - [Sports](https://docs.kairos.trade/rest/sports.md): Live sports events, markets, cross-provider matching, brackets, and reference metadata - [PnL](https://docs.kairos.trade/rest/pnl.md): Realized and unrealized PnL across providers, per-user, per-wallet, and per-market - [Trader Stats](https://docs.kairos.trade/rest/trader-stats.md): Public trader performance metrics, PnL history, positions, and profile lookup by wallet address - [Top Holders](https://docs.kairos.trade/rest/top-holders.md): Largest token holders per market outcome, by provider - [Matched Markets & Arbitrage](https://docs.kairos.trade/rest/matched-markets.md): Cross-venue market correlations, the matched-pair catalog, and the live arb feed - [Overview](https://docs.kairos.trade/market-data/overview.md): Kairos Market Data API (beta) — candles, trades, markets, resolutions, marks - [Authentication & Rate Limits](https://docs.kairos.trade/market-data/authentication.md): Free anonymous tier, API-key headers, and rate-limit behavior - [Candles](https://docs.kairos.trade/market-data/candles.md): OHLCV history from 1-second to 1-day resolution, JSON or binary - [Trades](https://docs.kairos.trade/market-data/trades.md): Trade history and aggregate volume metrics - [Markets, Resolutions & Marks](https://docs.kairos.trade/market-data/markets.md): Market metadata, token resolution, on-chain settlements, and latest prices - [Overview](https://docs.kairos.trade/rpc/overview.md): Calling convention for the account-scoped Kairos RPC procedures (tRPC over HTTP) - [API Keys](https://docs.kairos.trade/rpc/api-keys.md): Programmatic authentication for the Kairos RPC server - [Positions](https://docs.kairos.trade/rpc/positions.md): Read, recalculate, and close positions for the authenticated user - [Portfolio & Balances](https://docs.kairos.trade/rpc/portfolio.md): Unified wallet balances, per-chain cash, and the portfolio summary that powers the dashboard total - [Overview](https://docs.kairos.trade/rfq/overview.md): Create cross-venue RFQs or quote venue-originated flow through one normalized API - [REST and Streaming](https://docs.kairos.trade/rfq/rest-and-streaming.md): Authenticate, create RFQs, discover venue flow, quote, and consume lifecycle events - [FIX Protocol](https://docs.kairos.trade/rfq/fix.md): Kairos FIX 4.4 and FIXT 1.1 / FIX 5.0 SP2 RFQ session contract - [Order Execution](https://docs.kairos.trade/websocket/order-execution.md): Submit and cancel orders via WebSocket - [Order Updates](https://docs.kairos.trade/websocket/order-updates.md): Real-time order status updates, fills, positions, and balance changes via WebSocket - [Market Data Stream](https://docs.kairos.trade/websocket/market-data-websocket.md): Real-time market data via WebSocket with protobuf encoding - [Fee Quote (RFQ)](https://docs.kairos.trade/websocket/fee-quote.md): Stream live fee quotes for a trade you're eyeing over WebSocket - [Synthetic Book Stream](https://docs.kairos.trade/websocket/synthetic-books.md): Create a weighted formula and consume its live snapshot and delta stream - [Protobuf Schema](https://docs.kairos.trade/websocket/protobuf-reference.md): Protocol Buffer schema definitions and compilation guide - [Overview](https://docs.kairos.trade/krisis/overview.md): The Krisis conditional-order engine REST API — authentication, conventions, and errors - [Strategies & DSL](https://docs.kairos.trade/krisis/strategies.md): Strategy CRUD, strategy legs, and DSL validation endpoints - [Conditional Orders & Market Making](https://docs.kairos.trade/krisis/conditional-orders.md): Stop-loss, take-profit, stop-limit, trailing-stop, OCO/OTO brackets, TWAP, and market-making - [Funds & Credentials](https://docs.kairos.trade/krisis/funds-credentials.md): Spending funds and exchange API credentials - [Positions & PnL](https://docs.kairos.trade/krisis/positions-pnl.md): Orders, executions, positions, equity curve, PnL summary, and the real-time events stream - [Market Data](https://docs.kairos.trade/krisis/market-data.md): Orderbook snapshots and the backtest endpoint - [What Is Kairos? Prediction Market Trading Platform](https://docs.kairos.trade/introduction.md): Kairos unifies prediction market and perpetuals trading across Polymarket, Kalshi, and Predict.fun through a single set of REST and WebSocket APIs. - [Kairos Quickstart: Live Markets and Your First Order](https://docs.kairos.trade/quickstart.md): Two paths in one guide: a no-signup Market Data API call, then an authenticated order on the Execution API. - [Kairos API Authentication: Keys, Scopes, and Rate Limits](https://docs.kairos.trade/authentication.md): Learn how to obtain your Kairos API key, authenticate requests, and handle common auth errors like 401 Unauthorized and 403 Forbidden. - [Prediction Markets in Kairos: Outcomes and Contracts](https://docs.kairos.trade/concepts/markets.md): Learn how Kairos structures prediction markets: the hierarchy of markets, outcomes, contracts, canonical IDs, and lifecycle states across venues. - [Trading Venues on Kairos: Polymarket, Kalshi, and More](https://docs.kairos.trade/concepts/venues.md): Kairos connects to Polymarket, Kalshi, Predict.fun, Opinion, and Hyperliquid. Compare collateral types and how to list available venues via the API. - [Order Types, Fields, and Lifecycle in Kairos Explained](https://docs.kairos.trade/concepts/orders.md): How Kairos handles order submission, fills, and cancellation. Covers limit and market orders, EIP-712 self-custody signing, and fee quotes before trading. - [Kairos Wallet Modes: Hosted, Self-Custody, and Allowances](https://docs.kairos.trade/concepts/wallets.md): Compare hosted and self-custody wallet modes on Kairos. Learn about deposit wallets, on-chain ERC-20 allowances, EIP-712 signing, and CTF outcome tokens. - [What Are Prediction Markets?](https://docs.kairos.trade/learn/prediction-markets.md): A beginner-friendly intro to prediction markets and how trading works - [The Order Book](https://docs.kairos.trade/learn/order-book.md): Understanding bids, asks, the spread, and how to read an order book - [Order Types](https://docs.kairos.trade/learn/order-types.md): Market orders, limit orders, resting orders, and maker vs taker - [Time-in-Force](https://docs.kairos.trade/learn/time-in-force.md): GTC, IOC, FOK, and GTD — controlling how long your order lives - [Execution & Slippage](https://docs.kairos.trade/learn/execution-and-slippage.md): Buying up, selling down, slippage, partial fills, and retries - [Positions & PnL](https://docs.kairos.trade/learn/positions-and-pnl.md): Understanding your positions, calculating profit and loss, and settlement - [Glossary](https://docs.kairos.trade/learn/glossary.md): Quick reference for all trading terms - [API Overview](https://docs.kairos.trade/guides/overview.md): Kairos REST API and WebSocket quick start — base URLs, modules, auth, and rate limits - [Authentication](https://docs.kairos.trade/guides/authentication.md): API keys, JWTs, and scopes for the Data and Order Execution APIs - [Order Types](https://docs.kairos.trade/guides/order-types.md): How to place and manage orders on Kairos — kinds, time-in-force, status, and cancellation - [Route Orders Across Venues with Kairos Cross-Venue Routing](https://docs.kairos.trade/guides/cross-venue-routing.md): Fill large prediction market positions by routing orders across linked markets on Polymarket and Kalshi simultaneously using Kairos route execution. - [Trade Polymarket Combos and Multi-Leg Parlays with Kairos](https://docs.kairos.trade/guides/combos.md): Build, price, and execute Polymarket combo (parlay) positions — and cash out or redeem them — using the Kairos Execution API combo endpoints. - [Run Private Block Trade Auctions on the Kairos Agora API](https://docs.kairos.trade/guides/auctions.md): Use the Kairos Agora Auction House API to create private auctions, invite market makers, collect firm quotes, and execute institutional block trades. - [Synthetic Books](https://docs.kairos.trade/guides/synthetic-books.md): How weighted multi-market books work, what they represent, and when to use them - [Overview](https://docs.kairos.trade/perpetuals/overview.md): Kairos perpetual futures market data and integration contracts - [Instruments and identity](https://docs.kairos.trade/perpetuals/instruments-and-identity.md): Stable identifiers, symbols, asset roles, and contract units - [Exact values and time](https://docs.kairos.trade/perpetuals/exact-values-and-time.md): Decimal, unit, timestamp, and revision rules - [Order books](https://docs.kairos.trade/perpetuals/order-books.md): Deep-book representation, sequencing, and deterministic recovery - [Trades and candles](https://docs.kairos.trade/perpetuals/trades-and-candles.md): Reusable trade and candle shapes with perps-specific semantics - [Funding and market state](https://docs.kairos.trade/perpetuals/funding-and-market-state.md): Typed prices, market measures, funding phases, and revisions - [Accounts and margin](https://docs.kairos.trade/perpetuals/accounts-and-margin.md): Trading-account identity, balances, collateral, and margin modes - [Positions, orders, and fills](https://docs.kairos.trade/perpetuals/positions-orders-and-fills.md): Private trading state, immutable events, and idempotent projections - [Risk and liquidations](https://docs.kairos.trade/perpetuals/risk-and-liquidations.md): Risk tiers, restrictions, and public versus private liquidation facts - [Streaming and recovery](https://docs.kairos.trade/perpetuals/streaming-and-recovery.md): The live v2 book wire contract, sequencing, and client recovery - [Venue normalization](https://docs.kairos.trade/perpetuals/venue-normalization.md): How Hyperliquid, Polymarket Perps, and Kalshi Margin map to one contract - [Availability and guarantees](https://docs.kairos.trade/perpetuals/availability-and-guarantees.md): Live beta capabilities, integration contract, and failure guarantees - [Overview](https://docs.kairos.trade/external-execution/overview.md): Trade through Kairos while holding your own keys, gas, and funds — the external self-signing (bring-your-own-signer) execution lane - [Signing & Order Lifecycle](https://docs.kairos.trade/external-execution/signing.md): How to sign orders with your own EOA and place them through the external execution lane: intent, sign, submit, fills, and cancels - [Partner Auth & Self-Serve Onboarding](https://docs.kairos.trade/external-execution/partner-auth.md): Authenticate a partner integration and onboard without an account manager: SIWE wallet login, self-serve signing-wallet registration, Polymarket credential provisioning, partner delegation, and readiness/balance introspection - [Regional Execution Nodes](https://docs.kairos.trade/external-execution/regional-execution.md): Where to connect for the lowest latency: regional execution nodes in Ireland and Tokyo, what's served regionally vs centrally, and reading live positions - [Fees](https://docs.kairos.trade/trading/fees.md): Kairos platform fee policy — live fee tiers, per-venue exchange fees, and fee quotes - [Copy Trading](https://docs.kairos.trade/trading/copy-trading.md): Automatically mirror trades from any trader on Kairos - [Geo Restrictions](https://docs.kairos.trade/compliance/geo-restrictions.md): Countries blocked from accessing Kairos exchanges — generated from the live gating configuration - [Changelog](https://docs.kairos.trade/changelog.md): Product updates and announcements across the Kairos APIs and app ## OpenAPI Specs - [agora](/openapi/agora.yaml) - [data-api](/openapi/data-api.yaml) - [execution](/openapi/execution.yaml) - [market-data-api](/openapi/market-data-api.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.