Skip to main content
The newest entry is first.

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 carry Access-Control-Allow-Origin and expose X-RateLimit-*, Retry-After and X-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 422 venue_unsupported before. Each trade is ts_ms, outcome and notional_usd, as on every other venue. A Limitless market with no trade record yet answers 503 upstream_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_usd is 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 and venue descriptions 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=limitless answers 503 upstream_unavailable while 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 s max_age_s: the Limitless feed may have stopped. If our own store cannot be read for this check, the answer is 503 dependency_unavailable. Serving resumes once the record shows Limitless updates (checked about every 15 s).
  • On the stream, Limitless book and price subscriptions get status unavailable in 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 422 venue_unsupported before. Sizes are in contracts and prices 0..1, as on every other venue; max_age_s is 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_granted on every operation and on key creation: the account has no active grant (never granted, or the grant was withdrawn). x-known-codes lists it.
  • getKey’s example tier is FREE (was PREMIUM): 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_price 41.0, no_price 55.0, profit_cents 2.0, total_cost_cents 98.0, estimated_fee_cents 2.0, gas_fee_cents 0.0, max_contracts 120.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.5
  • arb_type names its venue tokens: kalshi and poly (for example kalshi_yes_poly_no); limitless and opinion are not yet confirmed in a live answer.
  • total_cost_cents is both legs plus estimated_fee_cents and gas_fee_cents; profit_cents is 100 minus it. Both legs’ prices, the fees and the profit are whole cents.
  • The listOpportunities example now uses kalshi_yes_poly_no and 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 tier became PREMIUM (was PRO) and getOrderbook’s max_age_s became 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 PublicError envelope, every field and parameter is described, and each operation has an id, a summary and a 200 example.
  • x-known-codes on the error code lists 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.