2026-10-20 — Browser requests from the documentation site
doc-sha256: 1116ef492485a555a4a84328d97e54fcd079e59c81816a5dd7f0c91358b1f08c generated-with: fastapi 0.136.3, pydantic 2.13.4- The documentation site, https://platform.trendlinelabs.ai, can send GET requests to
/public/v1/from the browser with the key you paste into its “try it” panel. Those answers carryAccess-Control-Allow-Originand exposeX-RateLimit-*,Retry-AfterandX-Request-Id; no cookies are sent or accepted. - Every other browser origin is unchanged. Keep keys on your server: never ship one in browser code.
- The document’s description changed; no route, parameter or response schema changed.
2026-10-20 — Request access on the website
doc-sha256: b486042e5ee61498bfb76cc1b765bc00b4c942a120d9243cc30a2094c27355a5 generated-with: fastapi 0.136.3, pydantic 2.13.4- API access is requested on the website’s API keys page, https://trendlinelabs.ai/developer, instead of by contacting the team. The same page creates, lists and revokes keys once access is granted.
- The access_not_granted message now names that page. No route, parameter or response schema changed.
2026-10-19 — Limitless trades
doc-sha256: a19adf2c5da7d0c697e0bb50877034b3497a34b9a0b3a7e182c412ef2cca8f93 generated-with: fastapi 0.136.3, pydantic 2.13.5- getTrades serves Limitless trades (
venue=limitless), which answered 422venue_unsupportedbefore. Each trade ists_ms,outcomeandnotional_usd, as on every other venue. A Limitless market with no trade record yet answers 503upstream_unavailable(“no live tape for this leg”), as any market with no trade record does; some Limitless markets have none. - On the stream, Limitless trades subscriptions are accepted.
notional_usdis price times size in USD. - A Limitless trade can reach us about a minute after it happened (an estimate from the one Limitless trade observed so far). Limitless trades are not refused by the Limitless liveness check, which applies to books only.
- The Limitless liveness check for books now also requires that the feed received Limitless updates live in its once-a-minute record, not only that it applied them.
- predict.fun and Opinion trades are still not served (422
venue_unsupported). The getTrades andvenuedescriptions changed; no route, parameter or response schema changed.
2026-10-19 — Limitless books stop when the Limitless feed stops
doc-sha256: c8a45f29f2edca26d921df8176e7cb741536ee9adde8decdc84b1f18ad734aad generated-with: fastapi 0.136.3, pydantic 2.13.5- getOrderbook with
venue=limitlessanswers 503upstream_unavailablewhile our market-data feed’s own once-a-minute record shows no Limitless update applied in the last 120 s, or that record is missing or unreadable, even for a book younger than its 3600 smax_age_s: the Limitless feed may have stopped. If our own store cannot be read for this check, the answer is 503dependency_unavailable. Serving resumes once the record shows Limitless updates (checked about every 15 s). - On the stream, Limitless book and price subscriptions get status
unavailablein the same cases, with the same codes; a Limitless book update the stream itself receives also counts as the feed being live. Frames resume when the feed does. - Other venues are unchanged. No route, parameter or response schema changed.
2026-10-17 — Limitless order books
doc-sha256: c8a45f29f2edca26d921df8176e7cb741536ee9adde8decdc84b1f18ad734aad generated-with: fastapi 0.136.3, pydantic 2.13.5- getOrderbook serves Limitless books (
venue=limitless), which answered 422venue_unsupportedbefore. Sizes are in contracts and prices 0..1, as on every other venue;max_age_sis 3600. - A Limitless book whose last change is older than 3600 s answers 503
upstream_unavailable, so a quiet Limitless market can be refused while its venue still quotes it. - Limitless trades are still not served (422
venue_unsupported). - No route, parameter or response schema changed.
2026-10-15 — free access, granted on request
doc-sha256: c8a45f29f2edca26d921df8176e7cb741536ee9adde8decdc84b1f18ad734aad generated-with: fastapi 0.136.3, pydantic 2.13.5- API access is free and granted on request: contact us, and we enable your account; then create keys as before. Every granted account is on one free plan.
- New 403 code
access_not_grantedon every operation and on key creation: the account has no active grant (never granted, or the grant was withdrawn).x-known-codeslists it. - getKey’s example
tierisFREE(wasPREMIUM): every granted account is on the free plan. - Withdrawing a grant also stops the account’s existing keys, on requests and on open streams.
- No route, parameter or body changed.
2026-10-14 — opportunity example numbers as sent
doc-sha256: 689ec1070004558c8cd6853ef9685083d59ca129004d224b73f60a383b548d6e generated-with: fastapi 0.136.3, pydantic 2.13.5- The listOpportunities example writes its number fields as the route sends them:
yes_price41.0,no_price55.0,profit_cents2.0,total_cost_cents98.0,estimated_fee_cents2.0,gas_fee_cents0.0,max_contracts120.0, and the Kalshi and Polymarket asks and sizes likewise. The values are unchanged; each is a JSON number, so read them as numbers, not integers. - No route, parameter, status or body changed.
2026-10-14 — opportunity example and field wording
doc-sha256: 4ec85ad05df0cad1d56cb8d1632e265b0993d99928cadd39654132efe1f27d34 generated-with: fastapi 0.136.3, pydantic 2.13.5arb_typenames its venue tokens:kalshiandpoly(for examplekalshi_yes_poly_no);limitlessandopinionare not yet confirmed in a live answer.total_cost_centsis both legs plusestimated_fee_centsandgas_fee_cents;profit_centsis 100 minus it. Both legs’ prices, the fees and the profit are whole cents.- The listOpportunities example now uses
kalshi_yes_poly_noand whole cents: yes 41, no 55, fee 2, gas 0, total 98, profit 2. - predict.fun’s bids and NO ask, and the 24-hour price change by venue, are labelled “unit not yet confirmed”.
- The previous entry’s example changes it did not name: getKey’s
tierbecamePREMIUM(wasPRO) and getOrderbook’smax_age_sbecame 1200 (was 60). - No route, parameter, status or body changed.
2026-10-14 — units for opportunity and snapshot prices
doc-sha256: 5c3b3dd5496929f470bb9343cc11295eb56dbb7feb175da58960ead364322371 generated-with: fastapi 0.136.3, pydantic 2.13.5- Opportunity prices are stated in cents (
yes_price,no_price, and the Kalshi and Polymarket asks); the Limitless asks’ unit is not yet confirmed. - Price-snapshot asks are cents on every venue but Polymarket, which is 0..1.
- Examples updated to match. No route, parameter, status or body changed.
2026-10-14 — v1 reference, guides and examples
doc-sha256: 87c861e67276ac2b5e9d00568466cdf364693baf91af049447326029231b20f7 generated-with: fastapi 0.136.3, pydantic 2.13.5- The reference is generated from the code: every error answer is the
PublicErrorenvelope, every field and parameter is described, and each operation has an id, a summary and a 200 example. x-known-codeson the errorcodelists the codes this version sends.- Guides: getting started, authentication, rate limits, errors, pagination, freshness, finding markets, venues and versioning; curl, Python and JavaScript examples for every operation.
- No route, parameter, status or body changed.