GET /api/v1/indices/{id}/news, GET /api/v1/public/indices/{id}/news, and GET /api/v1/indices/{id}/filings use the markets the index currently includes. A contract staged for later inclusion does not contribute articles or filings. On the news routes for a market, an index, and a reference rate, a similarity read that exceeds the time budget asks the caller to retry.GET /api/v1/public/markets/{id}/filings, GET /api/v1/public/indices/{id}/filings, and GET /api/v1/public/rates/{id}/filings each return up to 3 filings whose status date is in the last 90 days and whose match clears the relevance floor, in similarity order. per_page defaults to 3 and accepts 1 to 3. A filing below the floor, or with a status date older than 90 days, is omitted. An unknown id is not found. A known id with no close filing returns an empty list. GET /api/v1/rates/{id}/filings returns the ranked list for a reference rate, including filings matched through its source markets, and includes older filings. On these filings routes, a similarity read that exceeds the time budget asks the caller to retry. A successful public response may be cached for 15 minutes.GET /api/v1/public/markets/{id}/related returns up to 3 active markets similar to that market. per_page defaults to 3 and accepts 1 to 3. Each row has market_id, similarity, platform, question, and, when present, description and latest_price. latest_price is the market's current price in cents (0 to 100), the same mark as market detail. The requested market is excluded. When the nearest markets include more than one venue, the list includes more than one venue. An unknown market id is not found. A known market with no similar markets returns an empty list. A similarity read that exceeds the time budget asks the caller to retry. A successful response may be cached for 15 minutes. The public related-news routes for a market, an index, and a reference rate use that same 15-minute cache.GET /api/v1/markets, GET /api/v1/public/markets, and the markets list export return 503 while the list catalog is rebuilding. Event search and the events list export do the same when that search cannot be served. The body is error service_unavailable and message catalog is rebuilding. Retry in a few seconds. An events list with no search is unchanged, and a successful list response is unchanged.GET /api/v1/indices/{id} and GET /api/v1/public/indices/{id}, an NFL team index (methodology nti, quote_convention points) whose ticker has no suffix publishes its first latest_price at the latest positive level of the index with ticker {TICKER}.K in the 7 days at or before that print. GET /api/v1/indices/{id}/prices and GET /api/v1/public/indices/{id}/prices start at the same level. When that .K index has no positive level in those 7 days, the first print is 1000. A ticker that already contains a dot, including .K and a season suffix, opens at 1000. Later levels compound from the first print. A live series resets to 1000 at reconstitution. A historical series opens at the {TICKER}.K level of its first bucket.GET /api/v1/public/indices returns one page. page defaults to 1 and per_page defaults to 100 (maximum 500), including when you omit them. The response includes methodologies, the distinct methodology tokens for the list you asked for. search, methodology, sort, sort_dir, and window narrow or order that page. exclude_derived=true omits derived total-return indices. sort is order (the published presentation order, the default), ticker, name, last, change, constituents, or methodology. window is 1d, 7d (default), 30d, or 90d. When sort is change, the page is ordered by the percent change for that window.GET /api/v1/public/rates accepts page, per_page (default 100, maximum 500), search, methodology, sort, and sort_dir. With any of those set, the response is one page of the matching rates. It also includes methodologies, the distinct methodology tokens. Omit those parameters to receive every listed rate in one response, as before. sort is ticker, name, last, change, spread, sources, or methodology. The default order is name, ascending.GET /api/v1/usage returns the authenticated account's request totals for a UTC window. Pass days (1 to 90, default 30). The response includes total_requests, successful_requests, error_requests, per-day buckets in daily, and per-route totals in by_endpoint (matched path templates such as /api/v1/markets/{id}). Rate-limit refusals are not counted.GET /api/v1/markets/{id}/indices and GET /api/v1/public/markets/{id}/indices list the indices that include that market. Each row has index_id, ticker, name, and weight. weight is the market's share of the index as a fraction of 1 (0.12 means 12 percent), the same figure that index's constituent list shows for this market. The list is empty when the market is not part of any index. weight is 0 when the market is included and carried no weight in the latest published value.GET /api/v1/events and GET /api/v1/public/events reject expires_after and expires_before. Date windows apply to markets.GET /api/v1/indices/{id} and GET /api/v1/rates/{id} include previous_close_1d and previous_close_7d, the last completed daily close in US Eastern time and the close seven days before that. GET /api/v1/rates/{id} also includes stats, the trailing returns and risk figures from the daily series.GET /api/v1/markets and GET /api/v1/events accept scope=constituents or scope=all. constituents keeps markets that belong to a public index, and events that contain one. Omit scope, or pass all, to list everything the token can read. GET /api/v1/events accepts embed=markets to include each event's child markets and is_constituent on the list row.GET /api/v1/indices/{id}/correlation returns the same Pearson matrix as GET /api/v1/public/indices/{id}/correlation, computed through the current time.GET /api/v1/indices/{id}/constituents and GET /api/v1/public/indices/{id}/constituents, weight is that name's share of the index as a fraction of 1 (0.18 means 18 percent). When the index has a published price, included shares sum to 1.0. When a book quality check omits a name, weight is 0, excluded is true, and exclude_reason names the check (for example one_sided_book). A name that has not been priced yet has weight 0 and excluded false. When the index has no published price yet, weight is the catalog share and excluded is false.GET /api/v1/markets/{id} and GET /api/v1/public/markets/{id}, a Polymarket US contract includes event_ticker (the event slug), rules_primary (the contract rules), yes_sub_title (the Yes outcome title), and market_type when the venue publishes them.GET /api/v1/markets/{id}/candles reports source polymarket_us_price_history for Polymarket US rows. Those candles carry bid and ask from the venue display-price feed. volume is absent on those rows. Polymarket Global rows stay polymarket_clob_history./api/v1/public/* receives 429 Too Many Requests with error too_many_requests and a retry message. Wait 10 seconds, then retry.link URLs. On GET /api/v1/markets, GET /api/v1/markets/{id}, and their public twins, a Polymarket link is https://polymarket.com/event/<event-slug>/<market-slug> when both slugs exist and differ. When only the event slug is usable, link is the event page. When only the market slug is usable, link is /market/<market-slug>. link is null when no working URL can be built.GET /api/v1/announcements and GET /api/v1/announcements/{id} list index-change notices (rebalances, methodology updates, corporate actions), newest first. Filter with type, from, to, and index. The public twins under /api/v1/public/announcements delay notices 15 minutes: a notice dated after the current delay window is not yet visible. Rebalance rows carry added_markets and removed_markets.GET /api/v1/indices/{id} and GET /api/v1/public/indices/{id}, each sleeves[].members[] row may carry active_from and active_until. active_until is omitted while that rate is still in the priced sleeve.GET /api/v1/markets/{id}/similar accepts platform (kalshi, polymarket, or gemini) to rank neighbors from that venue only. Omit it to search across venues.GET /api/v1/markets, GET /api/v1/events, their public twins, and the matching export paths accept gemini as a venue. Market platform is gemini for those contracts. Catalog volume is the lifetime taker contract count for that Gemini contract.GET /api/v1/events and GET /api/v1/public/events omit volume and open_interest when no child market reports a value. A measured zero still serializes as 0.GET /api/v1/rates/{id}, GET /api/v1/public/rates/{id}, and inlined sources on GET /api/v1/public/rates, weight is that market's share of the latest print. For claim-price and NTI sleeve rates, that share is lifetime volume among sources that entered the print. A source that did not enter still appears, with its catalog weight and no latest_price. volume is omitted when the print did not record it.methodology nti) includes sleeves (four seats: Super Bowl, conference, division, win-total) and official_daily_value. quote_convention is points and the level starts at 1000. GET /api/v1/indices/{id}/daily-values and GET /api/v1/indices/{id}/membership-events (and the /api/v1/public/indices/... twins) return the official daily series and recent sleeve admissions or settlements. Other families return empty lists.GET /api/v1/public/rates (inlined sources) and GET /api/v1/public/rates/{id}, each source's latest_price is omitted when the rate's last print is older than seven days. Configured sources still appear. GET /api/v1/rates/{id} uses the same window.GET /api/v1/filings and GET /api/v1/public/filings accept last_seen_days (integer, at least 1) to return only filings not observed on a CFTC listing in that many days. Pass sort=last_seen with sort_dir to order by when a filing last appeared on a listing.GET /api/v1/public/indices/{id} quotes the same stamped latest_price. A quiet index still omits latest_price when its last print is older than seven days.GET /api/v1/public/rates returns every public rate when the catalog has hundreds of rows (NFL team sleeve rates). A quiet rate still omits latest_price when its last print is older than seven days.GET /api/v1/indices/{id} and GET /api/v1/public/indices/{id}, each sleeves.members[] entry has mark_price (0-1) for that contract. A win-total pair therefore carries both marks.GET /api/v1/rates/{id} (and the public twin) uses last trade, then the remaining quote, then the half-cent floor. A prior half-cent print does not stick once last trade or a one-sided quote is available.GET /api/v1/indices/{id} and the public tier) labels a rate-backed constituent in constituent_returns with kind rate. Link those rows to the rate page.GET /api/v1/rates/{id}/news and GET /api/v1/public/rates/{id}/news return articles that match the rate itself or any of its source markets. via_market_id names the source market when that match wins; it is omitted when the rate itself matched more closely.GET /api/v1/indices/{id}/news and GET /api/v1/public/indices/{id}/news draw related articles from the index's constituent markets, including the source markets of any constituent rates. via_market_id names the closest market. GET /api/v1/indices/{id}/filings uses the same market set.GET /api/v1/indices/{id} and GET /api/v1/public/indices/{id}, an NTI index's wins sleeves.members lists the wrapping win-total rates from the latest prints. After the first mark, members continue to follow the printed pair.GET /api/v1/rates and the rates CSV export look back seven days when you omit start: a rate whose last print is older than that window returns latest_price and spread as null. Pass an earlier start to include older prints. GET /api/v1/public/rates, GET /api/v1/rates/{id}, and GET /api/v1/public/rates/{id} use the same seven-day window.GET /api/v1/public/rates/{id} (and the list's inlined sources) includes every configured source market. A source that did not enter the latest print omits latest_price.GET /api/v1/public/rates omits a rate when every source is inactive (is_active is false). The rate detail URL still returns the rate. The authenticated catalog is unchanged.GET /api/v1/events and GET /api/v1/public/events return total and total_pages as null when search is set, including when you also pass sort; page with has_next. A searched markets list is uncounted on relevance ranking, but passing sort on GET /api/v1/markets or GET /api/v1/public/markets returns a total over the ranked matches (at most 10,000). Events have no stable number for that request shape.search and sort are both set on a markets list and meta.total is 10,000, meta.total_capped is true. Render that as "10,000+", not as an exact count. Below the ceiling the total is exact.GET /api/v1/events and GET /api/v1/public/events return total and total_pages as null when search is set; page with has_next instead. Unsearched lists are unchanged and still carry an exact total. This matches GET /api/v1/markets, which has always been uncounted on a searched page. The previous total was bounded by the search's internal candidate window rather than the matched set, so it under-reported broad queries and changed as you paged through the same result set.GET /api/v1/public/filings returns filings whose CFTC status date falls in the last 90 days, with GET /api/v1/public/filings/filters for the feed, organization, and status values present, GET /api/v1/public/filings/{id} for one filing, and GET /api/v1/public/filings/{id}/markdown for the extracted text of its attachments. Filtering, relevance-ranked search, and sorting work on this tier too, within that window. Filings older than it, the change feed, and related records require the org:filings:read scope.GET /api/v1/filings returns the whole catalog, filtered by feed, org, status, and a relevance-ranked search across the organization, description, product name and type, affected products, and filing id. A searched page is uncounted, so page with has_next rather than a total, the same as the markets list. Pass sort (status_date, received, first_seen, org) with sort_dir to order by a field instead. GET /api/v1/filings/{id}/actions returns one filing's dated history: its receipt, each status change, and each later attachment.GET /api/v1/filings/events returns every observed change across the catalog, oldest first, each row carrying the filing it happened to. Poll it with since_seq set to the highest seq of the previous page to receive only what has changed since. Filter by kind (received, status_changed, documents_added), by feed, or by a since timestamp for a first poll that has no cursor yet.GET /api/v1/filings/{id}/markets, /news, and /similar return records related to a filing. GET /api/v1/markets/{id}/filings, GET /api/v1/news/{id}/filings, and GET /api/v1/indices/{id}/filings return the same relationships from the other side.GET /api/v1/events and GET /api/v1/export/events/{ext} accept venue (for example kalshi or polymarket). expires_after and expires_before apply to markets, not events. start and end are deprecated. Events are returned newest-added first, or by relevance when search is set.GET /api/v1/events (and GET /api/v1/export/events/{ext}) accept created_since and created_until (ISO date or datetime), which filter events by when they were first listed on the platform. The anonymous public events list does not implement those parameters; use an API key. Date windows (expires_after / expires_before) are markets-only.GET /api/v1/indices/{id} and the public tier) returns constituent_returns grouped by a dimension (group_by, for example state); each group carries its weight and both its point change and percent_change.visibility field on authenticated responses (public or organization; other values are reserved). The anonymous public tier returns only public indices and omits the field.search on GET /api/v1/markets and GET /api/v1/public/markets ranks results by relevance and matches a market's slug. A relevance-ranked search is uncounted: meta.total is null, so page with meta.has_next rather than a total count.GET /api/v1/public/events and GET /api/v1/public/markets honor an explicit sort and sort_dir when a search query is present.meta.total_capped. When true, meta.total and meta.total_pages are a lower bound rather than an exact count, so render them as, for example, "10,000+". The field is omitted when the count is exact.