KnownAt API
Market tools, indicators and model outputs. The same API powers the dashboard, your integrations and MCP clients.
https://api.knownat.comGetting started
Market tools, indicators and model outputs through one API.
KnownAt provides market analysis through REST, the dashboard and MCP. Raw datasets and bulk downloads are no longer offered. Source records and archives remain internal inputs for calculations, validation and model training.
- Create a key in the API key dashboard. Store it on your server; never embed it in browser code.
- Verify access with
GET /v1/account/key. - Read a tool, for example
GET /v1/signals/yields?venue=polymarket&budget=100.
curl "https://api.knownat.com/v1/signals/yields?venue=polymarket&budget=100" \
-H "Authorization: Bearer YOUR_API_KEY"The REST base URL is https://api.knownat.com. Use the endpoint reference below for supported filters, response fields and errors. /v1/datasets and its child routes have been removed.
Available products
Read each product according to its publication status.
| Product | Endpoint | Meaning |
|---|---|---|
| Carry & Yields | /v1/signals/yields | Conditional returns if the selected outcome wins, with recorded depth, budget and fee availability. Polymarket and Predict.fun. |
| Large executions | /v1/signals/large-trades | Up to 100 observed Polymarket wallet trade rows of at least 10,000 USDC within 24 hours; not a calibrated whale signal. |
| Source leaderboard | /v1/signals/trader-ranking | Top 50 Polymarket source leaderboard entries. Source PnL is not KnownAt verified realized profit or a skill score. |
| Whale Alert v2 | /v1/signals/whale-alerts/v2 | KnownAt publication history, including corrections and withdrawals. Preparing until verified release. |
| Accumulation v2 | /v1/signals/accumulation/v2 | KnownAt accumulation publications. Preparing until verified release. |
| Top Traders v2 | /v1/signals/top-traders/v2 | KnownAt verified rankings, separate from the source leaderboard. Preparing until verified release. |
| Liquidation map | /v1/models/liquidation-map | Dated BTC research-alpha snapshot. Estimated liquidation exposure, not a live map of actual liquidation orders. |
| Market context | /v1/instruments, /v1/instruments/chart, /v1/prediction-markets, /v1/prediction-prices | Instrument discovery, chart candles and prediction-market prices used by the product. |
| Macro | /v1/macro/series, /v1/macro/observations, /v1/macro/calendar | BLS, BEA, New York Fed, Treasury and EIA series and consumer activity (Revolut card spending via ONS, Eurostat retail volume, TSA air travel) with every revision and when it became known (as_of for point-in-time reads), and the release calendar with capture latency. |
A preparing response is not evidence that no trading activity occurred. Read publication status, coverage and observation timestamps before presenting results. A successful request does not guarantee complete market coverage.
Yield figures assume a winning outcome; they are not expected profit or guaranteed interest. A scheduled end is not the payout date. Entry price, depth, fees and settlement delay affect the calculation.
Authentication
Workspace permissions apply across clients.
Send an API key as Authorization: Bearer YOUR_API_KEY. Supported OAuth clients use their issued bearer access token. Health, public status, documentation and restricted preview endpoints do not require an API key.
The dashboard authenticates a user session and sends a short-lived signed workspace credential to the official API. It does not create a permanent personal dashboard key. REST, dashboard and MCP requests share route authorization and workspace entitlements.
| Scope | Use |
|---|---|
account:read | Key metadata and usage. |
datasets:read | Legacy permission identifier retained for market discovery, prediction prices and the research liquidation map. It does not grant raw dataset downloads. |
polymarket:read | Polymarket tools. |
predict_fun:read | Predict.fun tools. |
hyperliquid:read | Hyperliquid market charts. |
Each endpoint documents its required permission. Restricted /v1/previews/* routes use the same calculation services with smaller pages and fewer filters; they are not an alternative to authenticated historical access.
Limits and usage
Current policy, shared by REST, dashboard and MCP.
Current plans and limits from the pricing catalog.
| Plan | Requests/min | Expensive/min | Readings/period | Rows/period | GiB/period | Max page | API keys | Reset |
|---|---|---|---|---|---|---|---|---|
| Free | 10 | 2 | 1,000 | 10,000 | 1 | 1,000 | 1 | calendar month |
| Pro | 60 | 10 | 100,000 | 500,000 | 100 | 10,000 | 3 | calendar month |
| Scale | 300 | 40 | 1,000,000 | 20,000,000 | 1,024 | 50,000 | 10 | calendar month |
Read GET /v1/account/usage for your workspace limits and counters. Requests share a workspace per-minute allowance, including current tool tables. Current signal reads, discovery, account reads and the research liquidation map do not consume paid readings. Chart and prediction-price requests are metered.
Explicit historical signal replay with as_of, and signal cursors with a cutoff older than five minutes, use metered query admission and replay eligibility checks. The dashboard has no blanket exemption from metering; the endpoint and request determine the policy for every client.
Successful metered responses count a request, returned rows and uncompressed response bytes. Endpoint caps can be lower than plan limits. QUOTA_EXCEEDED blocks delivery without automatic overage charges. For RATE_LIMIT_EXCEEDED, respect the retry-after response header.
Pagination and replay
Follow the contract of the endpoint you call.
For cursor-enabled endpoints, pass meta.next_cursor back as cursor until meta.has_more is false. Treat cursors as opaque and preserve all request filters, including page size. Do not assume every endpoint offers pagination: large executions and source rankings are bounded snapshots.
Replay support is endpoint-specific. Published signals use a publication cutoff and versioned outputs; a request cannot manufacture missing historical observations. Source leaderboards and large executions are current views. The liquidation map reports the timestamp of its research snapshot.
Freshness and coverage
Observation time and publication time are different.
Read the timestamp fields and coverage metadata defined by each response schema. Source time describes the underlying event; observation or ingestion time describes when KnownAt received or stored it; publication time describes when an output became available. Do not use request time as the observation time.
GET /v1/status reports source, receive and storage freshness. Its legacy datasets field identifies monitored internal feeds, not a catalog available for purchase. A fresh feed can still have gaps; freshness alone does not establish completeness.
Errors
Branch on machine-readable codes.
Errors use an error object with code, message and request_id. Use the code for application logic and include x-request-id when reporting a problem. Validation failures, missing permissions, unavailable upstream services and exhausted quotas have distinct responses in the reference.
Do not replace an authorization, quota or upstream failure with a successful empty result. Preparing states are normal product responses and must remain distinguishable from request failures.
MCP and the dashboard
One implementation, multiple interfaces.
Connect an MCP client to https://api.knownat.com/mcp using an API key or a supported OAuth flow. MCP tool calls dispatch through the same REST routes, schemas, authorization and limits used by the dashboard.
| MCP tool | REST route |
|---|---|
knownat_yields | /v1/signals/yields |
knownat_large_trades | /v1/signals/large-trades |
knownat_trader_ranking | /v1/signals/trader-ranking |
knownat_whale_alerts | /v1/signals/whale-alerts/v2 |
knownat_accumulation | /v1/signals/accumulation/v2 |
knownat_top_traders | /v1/signals/top-traders/v2 |
knownat_data_status | /v1/status |
knownat_account | /v1/account/key |
The endpoint reference is generated from registered REST routes. This guide is shared by the website and API reference. Internal raw storage, archives and training pipelines are not public products.
System
Health, availability and data freshness.
/healthLiveness probe
Reports whether the API Worker is running. This endpoint performs no dependency checks and no authentication, so it stays answerable during a database outage and is safe for a high-frequency external uptime monitor. Use /health/ready to check dependencies and /v1/status to check data freshness.
Response · 200
The Worker is running.
status"ok" | "degraded"- Whether the Worker itself is serving requests.
servicestringenvironmentstringreleasestring- Release identifier of the running deployment, for correlating errors with a deploy.
git_shastringgenerated_atstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
Errors
| Status | Code | When |
|---|---|---|
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
/health/readyReadiness probe
Probes every dependency required to serve API traffic and reports each one individually with its latency. Returns 503 when any dependency is unhealthy, so a load balancer or deployment gate can act on it. Slower than /health: do not poll it at high frequency.
Response · 200
Every dependency is healthy.
status"ok" | "degraded"- Whether the Worker itself is serving requests.
servicestringenvironmentstringreleasestring- Release identifier of the running deployment, for correlating errors with a deploy.
git_shastringgenerated_atstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
dependencies[]object[]- Result of probing each dependency required to serve requests.
dependencies[].namestringdependencies[].healthybooleandependencies[].latency_msintegerdependencies[].errorstring | null
Errors
| Status | Code | When |
|---|---|---|
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | — | At least one dependency is unhealthy. |
/health/dataIngestion pipeline health
Flat view of every collector heartbeat, including source, receive and write lag per feed. Intended for the KnownAt watchdog and operational dashboards rather than for client applications, which should use /v1/status. Requires the account:read scope.
Response · 200
Current state of every ingestion feed.
status"operational" | "delayed" | "degraded" | "offline" | "maintenance"- `operational` — the feed is within its documented lag budget. `delayed` — data is still arriving but later than the budget allows. `degraded` — lag is severe enough to affect most use cases. `offline` — no recent data has been persisted. `maintenance` — a planned interruption, announced in advance.
generated_atstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
feeds[]object[]- Flat list of every collector heartbeat, for internal dashboards and the watchdog.
feeds[].status"operational" | "delayed" | "degraded" | "offline" | "maintenance"- `operational` — the feed is within its documented lag budget. `delayed` — data is still arriving but later than the budget allows. `degraded` — lag is severe enough to affect most use cases. `offline` — no recent data has been persisted. `maintenance` — a planned interruption, announced in advance.
feeds[].freshness_basis"persisted_observations"- For Predict.fun, timestamps describe queryable observations. Receive time is confirmed through storage, not an independent live recorder heartbeat. Catalog has no source event clock. Rates count projected rows across five complete receive-time minutes.
feeds[].source_lag_msinteger | null- Time since the newest event timestamp reported by the source. Grows when the source itself stops producing data.
feeds[].receive_lag_msinteger | null- Time since KnownAt last received an event. Grows when the collector loses its connection to the source.
feeds[].write_lag_msinteger | null- Time since KnownAt last persisted an event. Fresh receive lag with stale write lag means the pipeline, not the source, is failing.
feeds[].last_source_timestampstring (date-time) | null- Event time of the newest record, as reported by the source.
feeds[].last_received_atstring (date-time) | null- When KnownAt received that record.
feeds[].last_written_atstring (date-time) | null- When KnownAt persisted that record to queryable storage.
feeds[].events_per_secondnumber- Recent throughput of the feed.
feeds[].feedstring- Feed identifier, `dataset.stream`.
feeds[].datasetstringfeeds[].streamstring
Errors
| Status | Code | When |
|---|---|---|
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/statusData freshness and feed status
Current status and lag of every live KnownAt feed, grouped by dataset and stream. Public and unauthenticated so it can be polled by a client before it decides to trust live data, or wired into a customer-side monitor. status at the top level is the worst status across all feeds. Poll at most once every 10 seconds.
Response · 200
Status of every feed.
status"operational" | "delayed" | "degraded" | "offline" | "maintenance"- Worst status across every feed. Use it as a single health signal.
generated_atstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
datasetsobject- Per-dataset, per-stream freshness, keyed by dataset slug and then by stream name.
datasets.{key}.{key}.status"operational" | "delayed" | "degraded" | "offline" | "maintenance"- `operational` — the feed is within its documented lag budget. `delayed` — data is still arriving but later than the budget allows. `degraded` — lag is severe enough to affect most use cases. `offline` — no recent data has been persisted. `maintenance` — a planned interruption, announced in advance.
datasets.{key}.{key}.freshness_basis"persisted_observations"- For Predict.fun, timestamps describe queryable observations. Receive time is confirmed through storage, not an independent live recorder heartbeat. Catalog has no source event clock. Rates count projected rows across five complete receive-time minutes.
datasets.{key}.{key}.source_lag_msinteger | null- Time since the newest event timestamp reported by the source. Grows when the source itself stops producing data.
datasets.{key}.{key}.receive_lag_msinteger | null- Time since KnownAt last received an event. Grows when the collector loses its connection to the source.
datasets.{key}.{key}.write_lag_msinteger | null- Time since KnownAt last persisted an event. Fresh receive lag with stale write lag means the pipeline, not the source, is failing.
datasets.{key}.{key}.last_source_timestampstring (date-time) | null- Event time of the newest record, as reported by the source.
datasets.{key}.{key}.last_received_atstring (date-time) | null- When KnownAt received that record.
datasets.{key}.{key}.last_written_atstring (date-time) | null- When KnownAt persisted that record to queryable storage.
datasets.{key}.{key}.events_per_secondnumber- Recent throughput of the feed.
reconciliationobject- Independent evidence coverage. Computed over the latest 15 complete non-empty minute windows after finality and lateness grace.
reconciliation.polymarket_wallet_tradesobjectreconciliation.polymarket_wallet_trades.status"operational" | "delayed" | "degraded" | "offline" | "maintenance"- `operational` — the feed is within its documented lag budget. `delayed` — data is still arriving but later than the budget allows. `degraded` — lag is severe enough to affect most use cases. `offline` — no recent data has been persisted. `maintenance` — a planned interruption, announced in advance.
reconciliation.polymarket_wallet_trades.window_startstring (date-time) | null- UTC timestamp in ISO 8601 format with millisecond precision.
reconciliation.polymarket_wallet_trades.window_endstring (date-time) | null- UTC timestamp in ISO 8601 format with millisecond precision.
reconciliation.polymarket_wallet_trades.computed_atstring (date-time) | null- UTC timestamp in ISO 8601 format with millisecond precision.
reconciliation.polymarket_wallet_trades.data_api_rowsintegerreconciliation.polymarket_wallet_trades.data_api_transactionsintegerreconciliation.polymarket_wallet_trades.matched_rowsintegerreconciliation.polymarket_wallet_trades.ambiguous_rowsintegerreconciliation.polymarket_wallet_trades.transaction_only_rowsintegerreconciliation.polymarket_wallet_trades.missing_onchain_rowsintegerreconciliation.polymarket_wallet_trades.invalid_hash_rowsintegerreconciliation.polymarket_wallet_trades.matched_transactionsintegerreconciliation.polymarket_wallet_trades.exact_row_coveragenumber- Share of Data API rows matched to exactly one economically identical canonical OrderFilled.
reconciliation.polymarket_wallet_trades.transaction_coveragenumber- Share of unique Data API transaction hashes present in canonical Polygon OrderFilled events.
reconciliation.polymarket_wallet_trades.max_finalized_blockinteger
Errors
| Status | Code | When |
|---|---|---|
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
Account
API key verification and usage counters.
/v1/account/keyVerify an API key
Returns the identity, scopes and plan associated with the presented API key. Use it as a connectivity and credentials check when wiring up a client: a 200 means the key is valid, unexpired and unrevoked, and the scopes array tells you exactly what it may call. The key itself is never echoed back.
Response · 200
The key is valid.
authenticatedtruekeyobject- Everything the API knows about the presented key. The key itself is never echoed.
key.idstring (uuid)- Identifier of the presented key, safe to log.
key.namestring- Label given to the key in the dashboard.
key.environment"test" | "live"- Whether this is a test or live key, derived from its prefix.
key.scopes[]string[]- Permissions granted to this key.
key.planstringkey.expires_atstring (date-time) | null- Expiry, or null for a non-expiring key.
Errors
| Status | Code | When |
|---|---|---|
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/account/usageCurrent period usage
Exact subscription usage and live database limits for the configured quota period. Successful data queries (API and Explorer) consume requests, returned rows and JSON bandwidth. Account/catalog reads are free. Pending requests reserve allowance for up to two minutes. Includes daily usage and dataset/endpoint activity. The response example is illustrative; actual limits are read from the subscription configuration.
Response · 200
Usage for the current period.
planstringplan_namestringcan_querybooleanperiodobject- Quota period from subscription plan configuration. Billing periods follow Paddle; calendar-month plans reset at UTC month boundaries.
period.startstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
period.endstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
requestsobject- Successful product requests plus in-flight reservations. Account and catalog reads are excluded.
requests.usednumberrequests.limitnumberrowsobject- Product rows returned, not database rows scanned.
rows.usednumberrows.limitnumberbandwidth_gbobject- Uncompressed UTF-8 JSON response size in GiB (2^30 bytes).
bandwidth_gb.usednumberbandwidth_gb.limitnumberlimitsobjectlimits.requests_per_minutenumberlimits.expensive_requests_per_minutenumberlimits.max_page_sizenumberlimits.max_api_keysnumberlimits.quota_resetstringdaily[]object[]daily[].daystringdaily[].requestsnumberdaily[].rowsnumberdaily[].bytesnumberdatasets[]object[]datasets[].datasetstringdatasets[].endpointstringdatasets[].requestsnumberdatasets[].rowsnumberdatasets[].last_used_atstring (date-time)- UTC timestamp in ISO 8601 format with millisecond precision.
Errors
| Status | Code | When |
|---|---|---|
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
Instruments
Market discovery, prices and chart history.
/v1/markets/correlationsRead precomputed aggregate market correlations
Pearson correlation of aligned aggregate matched-venue log returns. No filling gaps. At least 60% of the full window plus a minimum number of pairs is required. Results refresh in the background every minute. No causality or identity claim.
Parameters
horizonstring · default 1hoptional- Return window the correlation is computed over.
leftstringoptional- Canonical ID of the first market of a pair. Requires right; returns that pair's recorded history.
rightstringoptional- Canonical ID of the second market of a pair. Requires left.
Response · 200
Graph, quality gates and recorded correlation history
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/markets/historyRead aggregate reference candles and current snapshot
Recorded reference candles for the active publisher generation: the last twelve hours of one-minute candles, or up to 720 candles of a longer interval rolled up from them, the forming candle included through the last completed minute. Flows sum; CVD, open interest and depth are end-of-candle states. Gaps remain missing. Requires product access.
Parameters
marketstringrequired- Canonical ID of the aggregated market.
intervalstring · default 1moptional- Candle interval; buckets are aligned to UTC.
beforeintegeroptional- Older page: up to 720 recorded candles before this candle start, in epoch milliseconds, aligned to the interval. Returns
moreinstead ofthroughandsnapshot.
Response · 200
Recorded reference candles
generationstringmarketstringintervalstringthroughnumber- Last recorded minute included, in epoch milliseconds.
moreboolean- Older page only: whether earlier candles remain.
candles[]object[]snapshotobject
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/markets/liquidityRead captured order book liquidity by distance band
Captured resting liquidity for an aggregated market: the last 720 candles of the interval, one frame per candle (the last captured minute in it), summed in USD across sources into distance bands from the reference price: 0.02% bands within 0.1%, then wider bands out to 10%. Resting orders, not executions; coverage varies by exchange. Requires product access.
Parameters
marketstringrequired- Canonical ID of the aggregated market.
intervalstring · default 1moptional- Candle interval; buckets are aligned to UTC.
beforeintegeroptional- Older page: up to 720 frames before this candle start, in epoch milliseconds, aligned to the interval. Adds
more.
Response · 200
Liquidity frames
generationstringmarketstringintervalstringbands[]unknown[][]minutes[]number[]references[]number[]cells[]unknown[][]moreboolean- Older page only: whether earlier frames remain.
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/markets/live-sessionOpen a five-minute authenticated reference-price stream
One-use WebSocket ticket for admitted aggregate markets. Omit market for quotes-only directory updates; specify market for its candles and book. Requires product access; quotes are indicative, not executable. Maximum four connections per workspace. Reauthenticate after expiry.
Parameters
marketstringoptional- Canonical ID of the aggregated market to stream candles and book for. Omit for quotes-only directory updates.
Response · 200
Single-use stream ticket
ticketstringexpires_atnumberurlstring
Errors
| Status | Code | When |
|---|---|---|
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/instrumentsDiscover captured instruments
Shared directory for the workspace and API clients. Currently covers Hyperliquid metadata captured by KnownAt, including inactive instruments. Returns the latest metadata per source instrument at a fixed ingestion cutoff, without a 24-hour discovery window. Presence does not certify active trading or complete history. Source identities are not canonical assets; classification and cross-venue mapping are separate. Search matches source symbol and available source name/coin fields. Pagination is signed and bound to search, cutoff and the market-cap snapshot. Capitalization is a periodically refreshed local snapshot for explicitly mapped native coins; unmapped instruments sort last. Metadata is source-native, not a stable normalized asset schema.
Parameters
directionstringoptional- Sort direction. Missing values and inactive contracts remain last.
sortstringoptional- Global sort before pagination, inactive contracts last. Defaults to volume for TradFi categories, market cap for all/crypto. Volume ranks recent captured 24h quote-volume; missing/stale values last within each status group.
overviewstringoptional- Include last captured market context, including historical values for inactive contracts. observed_at is the snapshot time; these are not necessarily current values. Missing coverage is null.
source_idstringoptional- Exact source instrument identifier, case-sensitive.
marketstring · default alloptional- Categories use explicit source-contract mappings. TradFi includes non-crypto HIP-3 contracts, including unclassified new listings. Unclassified filters HIP-3 contracts awaiting classification. Crypto includes native and mapped HIP-3 crypto markets.
qstring · default optional- Case-insensitive source symbol or available source name.
limitinteger · default 50optional- Maximum instruments per page; up to 100.
cursorstringoptional- Signed cursor bound to the search and ingestion cutoff.
Response · 200
Instrument metadata, ordered globally by the requested metric with inactive contracts last and source instrument ID as a tie-breaker. Snapshot values may be historical; inspect observed_at.
data[]object[]data[].snapshotobject | nulldata[].snapshot.pricenumber | nulldata[].snapshot.change_24hnumber | nulldata[].snapshot.volume_24hnumber | nulldata[].snapshot.funding_ratenumber | nulldata[].snapshot.open_interestnumber | nulldata[].snapshot.observed_atstringdata[].capitalizationobject | nulldata[].capitalization.usdnumberdata[].capitalization.updated_atstringdata[].idstringdata[].source"hyperliquid"data[].source_instrument_idstringdata[].metadata_observed_atstringdata[].display_namestringdata[].symbolstringdata[].kind"spot" | "perpetual" | "unknown"data[].category"crypto" | "stocks" | "metals" | "energy" | "agriculture" | "indices" | "forex" | "rates" | "funds" | "pre-ipo" | "unclassified"data[].venuestringdata[].quotestring | nulldata[].status"active" | "inactive" | "unknown"data[].logostring | nulldata[].metadataobjectmetaobjectmeta.direction"asc" | "desc"meta.sort"name" | "price" | "change" | "market_cap" | "volume" | "funding" | "open_interest"meta.inactive_lastbooleanmeta.recordsnumbermeta.has_morebooleanmeta.next_cursorstring | nullmeta.as_ofstringmeta.generated_atstringmeta.sources[]string[]meta.market_capobjectmeta.market_cap.sourcestringmeta.market_cap.captured_atstringmeta.market_cap.orderstringmeta.market_cap.missingstring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_CURSOR | One or more request parameters failed validation. The pagination cursor is malformed, expired, or was issued for different filters. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/assetsBrowse canonical assets and cross-venue contracts
Captured Hyperliquid, Bybit and Deribit identities. mode=assets lists verified asset groups with a verified Hyperliquid perpetual where one exists and, for assets with an aggregate reference, its trailing-day summary (last close, change since the window start, captured perpetual volume; the window starts later when the reference generation is younger); mode=instruments requires asset and separates verified mappings from candidates; mode=review prioritizes unresolved contracts with recent trades/books. Spot, futures, perpetuals and options retain distinct identities. Mapping never grants aggregation eligibility. Coverage endpoints do not prove continuous history. Cursors expire when the published catalog revision changes.
Parameters
modestring · default assetsoptional- List verified assets, contracts of one asset, or the mapping review queue.
assetstringoptional- Canonical asset ID, required for instruments; for example metals:gold.
qstring · default optional- Case-insensitive asset name, symbol or source contract search.
categorystringoptional- Filter by asset class; tradfi selects every class except crypto.
contractstringoptional- Exact catalog contract ID, for example hyperliquid:BTC. In assets mode, returns the asset that contract is verified to reference.
sourcestringoptional- Exchange filter for contract and review modes.
kindstringoptional- Contract type filter for contract and review modes.
statusstringoptional- Last source-reported status; expiry and data recency are separate.
mappingstring · default verifiedoptional- For instruments, verified relationships or proposed mappings awaiting review.
limitinteger · default 40optional- Maximum records per page.
cursorstringoptional- Signed cursor bound to filters and catalog revision. Refresh without a cursor after a catalog update.
Response · 200
Persisted canonical catalog page
data[]object[]assetobject | nullmetaobjectmeta.revisionstringmeta.updated_atstringmeta.generated_atstringmeta.recordsnumbermeta.total_unfilterednumber | nullmeta.has_morebooleanmeta.next_cursorstring | nullmeta.aggregation_eligiblefalsemeta.coverage_continuitystring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_CURSOR | One or more request parameters failed validation. The pagination cursor is malformed, expired, or was issued for different filters. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/instruments/chartPage captured chart candles backwards
At most 500 candle slots per request, aggregated from deduplicated captured trades at display precision. Missing slots are omitted. Pass next_before and the original as_of for older history. Values use display precision and are intended for product charts; internal exact-decimal source records are not exposed.
Parameters
market_idstringrequired- Exact Hyperliquid source contract identifier.
intervalstring · default 1moptional- Candle duration; up to 500 aligned time slots per page.
beforestringoptional- Exclusive UTC candle boundary returned as next_before.
as_ofstringoptional- Fixed ingestion cutoff from the first page. Defaults to the current completed minute.
Response · 200
Bounded candle page.
rows[]object[]rows[].observed_atstringrows[].opennumberrows[].highnumberrows[].lownumberrows[].closenumberrows[].volumenumberrows[].vwapnumber | nullsincestringuntilstringas_ofstringnext_beforestring | nullmarketstringinterval"1m" | "5m" | "15m" | "1h" | "4h" | "1d"interval_secondsnumber
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/prediction-marketsDiscover captured prediction markets and recurring series
Latest captured catalog for Polymarket and predict.fun. Groups recurring crypto series and source-linked candidates for navigation; this does not certify equivalent settlement rules. Contracts retain venue identities. Category is based on source tags; unknown categories remain Other. Status is last captured status, not a live trading guarantee. Live keyset pagination, not a historical snapshot. Group selects individual contracts. No price or model data is fabricated.
Parameters
qstring · default optional- Search captured title or source slug.
categorystring · default alloptional- Category derived from source tags.
venuestring · default alloptional- Filter by captured source venue.
statusstring · default openoptional- Last captured status. Open excludes elapsed windows with known schedules.
limitinteger · default 30optional- Page size, from 1 to 100.
cursorstringoptional- Signed keyset cursor bound to filters.
groupstringoptional- Exact navigation group ID to list its individual contracts.
Response · 200
Paged groups or venue contracts, ordered by stable identity.
data[]object[]metaobjectmeta.modestringmeta.has_morebooleanmeta.next_cursorstring | nullmeta.generated_atstringmeta.cache"hit" | "miss" | "stale" | "coalesced"- Shared catalog cache status. generated_at is the snapshot time, not the request time.
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_CURSOR | One or more request parameters failed validation. The pagination cursor is malformed, expired, or was issued for different filters. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/prediction-pricesCaptured prices and book for a prediction contract
One venue contract, up to 24 hours and 601 sampled points per outcome. Books remain venue-specific. Midpoint is calculated only from valid two-sided uncrossed quotes; missing quotes remain null. Polymarket price snapshots are an explicitly labelled fallback when no books are captured. Predict.fun outcome indexSet=2 is derived by swapping and complementing the Yes book with source precision. Quote timestamps are preserved; this is captured data, not a live execution feed.
Parameters
venuestringrequired- Source venue.
market_idstringrequired- Exact venue catalog market ID, not a group ID.
sincestringrequired- Inclusive UTC window start.
untilstringrequired- Inclusive UTC end, at most 24 hours after since.
Response · 200
Bounded captured outcome prices and the last book within the window.
outcomes[]object[]metaobject
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/prediction-horizonsUp/Down probability ladder across horizons for one asset
For each horizon (5m, 15m, 1h, 4h, 1d) the market whose window is open and the next one: probability, change over 5 and 15 minutes, a z-score against the same asset, horizon and point in the window over 30 days, and 15-minute traded volume with a thin flag. Polymarket's recurring Up or Down markets, priced from their trades (Up price; a Down trade at q counts as 1 - q). Trades arrive 2-5 minutes after they happen.
Parameters
assetstringrequired- Asset ticker: BTC, ETH, SOL, XRP, DOGE, BNB, HYPE or ZEC for 5m-1d crypto windows; stock and index tickers (for example NVDA, SPX) list daily windows.
Response · 200
One row per horizon.
assetstringdata[]object[]data[].horizonstringdata[].horizon_secondsnumberdata[].liveobject | nulldata[].live.condition_idstringdata[].live.market_idstringdata[].live.slugstringdata[].live.starts_atstringdata[].live.ends_atstringdata[].live.elapsednumber | null- Share of the window already elapsed, 0 before it opens.
data[].live.probabilitynumber | null- Up price of the last traded minute.
data[].live.price_atstring | nulldata[].live.change_5mnumber | nulldata[].live.change_15mnumber | nulldata[].live.phasenumber- -1 before the window opens, then 0-9 for each tenth of it.
data[].live.znumber | null- Standard deviations from the mean price of the same asset, horizon and phase over 30 days.
data[].live.typicalobject | nulldata[].live.typical.meannumber | nulldata[].live.typical.sdnumber | nulldata[].live.typical.markets_minutesnumberdata[].live.usdc_15mnumber | nulldata[].live.trades_15mnumberdata[].live.thinboolean- Less than meta.thin_usdc traded in the last 15 minutes: the price is unreliable.
data[].live.staleboolean- No trade within meta.stale_seconds.
data[].nextobject | nulldata[].next.condition_idstringdata[].next.market_idstringdata[].next.slugstringdata[].next.starts_atstringdata[].next.ends_atstringdata[].next.elapsednumber | null- Share of the window already elapsed, 0 before it opens.
data[].next.probabilitynumber | null- Up price of the last traded minute.
data[].next.price_atstring | nulldata[].next.change_5mnumber | nulldata[].next.change_15mnumber | nulldata[].next.phasenumber- -1 before the window opens, then 0-9 for each tenth of it.
data[].next.znumber | null- Standard deviations from the mean price of the same asset, horizon and phase over 30 days.
data[].next.typicalobject | nulldata[].next.typical.meannumber | nulldata[].next.typical.sdnumber | nulldata[].next.typical.markets_minutesnumberdata[].next.usdc_15mnumber | nulldata[].next.trades_15mnumberdata[].next.thinboolean- Less than meta.thin_usdc traded in the last 15 minutes: the price is unreliable.
data[].next.staleboolean- No trade within meta.stale_seconds.
metaobjectmeta.generated_atstringmeta.history_daysnumbermeta.thin_usdcnumbermeta.stale_secondsnumbermeta.notestring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/prediction-horizons/historyUp probability per horizon over time
Rows for a time x horizon heatmap: per bucket, the Up price at the last traded minute of the market whose window was open. Polymarket's recurring Up or Down markets, priced from their trades (Up price; a Down trade at q counts as 1 - q). Trades arrive 2-5 minutes after they happen.
Parameters
assetstringrequired- Asset ticker: BTC, ETH, SOL, XRP, DOGE, BNB, HYPE or ZEC for 5m-1d crypto windows; stock and index tickers (for example NVDA, SPX) list daily windows.
sincestringoptional- Inclusive start. Defaults to 24 hours before until.
untilstringoptional- Exclusive end. Defaults to now.
intervalinteger · default 300optional- Bucket width in seconds; at most 2,000 buckets per request.
Response · 200
Points per horizon, oldest first.
assetstringdata[]object[]data[].horizonstringdata[].horizon_secondsnumberdata[].points[]object[]data[].points[].timenumberdata[].points[].probabilitynumber | nulldata[].points[].usdcnumber | nullmetaobjectmeta.sincestringmeta.untilstringmeta.interval_secondsnumbermeta.notestring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/prediction-horizons/calibrationHow often Up/Down forecasts came true
Resolved markets binned by forecast (5 points wide) with the share that resolved Up, Brier skill against a coin flip and the calibration slope, per horizon. Polymarket's recurring Up or Down markets, priced from their trades (Up price; a Down trade at q counts as 1 - q). Trades arrive 2-5 minutes after they happen.
Parameters
assetstringoptional- Asset ticker; every asset when omitted.
atstring · default openoptional- open: the price in the two minutes before the window opens; half: in the window's fifth tenth.
sincestringoptional- Windows ending at or after this instant. Defaults to 30 days ago.
Response · 200
Calibration per horizon.
assetstring | nullat"open" | "half"data[]object[]data[].horizonstringdata[].horizon_secondsnumberdata[].marketsnumberdata[].up_ratenumber | nulldata[].briernumber | nulldata[].brier_coinnumberdata[].skillnumber | null- 1 - Brier / 0.25: share of the coin-flip error removed.
data[].slopenumber | null- Outcome on forecast distance from 50%: 1 calibrated, above 1 under-confident.
data[].bins[]object[]data[].bins[].fromnumberdata[].bins[].tonumberdata[].bins[].marketsnumberdata[].bins[].forecastnumber | nulldata[].bins[].realizednumber | nullmetaobjectmeta.sincestringmeta.untilstringmeta.notestring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
Signals
Market tools and versioned signal publications. Replay availability depends on the endpoint.
/v1/signals/whale-alerts/v2Read published Whale Alert v2 revisions
Immutable emission, correction and retraction stream ordered by publication time (newest first). Uses stored whale-alert.v2 decisions, never recalculates historical alerts. as_of freezes publication visibility; next_cursor preserves that snapshot and filters. Apply revisions by alert_key and revision, not transaction time. A minimum-notional filter retains subsequent retractions of matching alerts. Returns preparing until the explicit public release. Requires polymarket:read or predict_fun:read according to venue. Polymarket and Predict.fun via the venue parameter, with independent calibration and release. Predict.fun uses whale-alert.predict-fun.v2 with identical numerical rules and BNB settlement evidence; unusual position building does not establish smart-money identity or profitability.
Parameters
venuestringoptional- Venue. Defaults to polymarket; predict_fun has its own calibration, immutable source manifest and release gate.
as_ofstringoptional- Publication cutoff. Omit for current visibility; pagination freezes this instant.
limitinteger · default 20optional- Maximum published revisions per page, between 1 and 100.
cursorstringoptional- Exact next_cursor string from the previous page, using unchanged filters and cutoff.
walletstringoptional- Exact lowercase wallet address.
marketstringoptional- Exact lowercase condition ID on the selected venue.
min_net_usdnumbernulloptional- Minimum net buying of a published alert. Later corrections and withdrawals of matching alerts remain visible.
Response · 200
Stored revisions or explicit preparing state.
data[]object[]data[].alert_keystringdata[].revisionintegerdata[].action"emitted" | "corrected" | "retracted"data[].published_atstringdata[].input_cutoffstringdata[].calibration_fingerprintstringdata[].payloadobjectdata[].payload.candidateobjectdata[].payload.candidate.venuestringdata[].payload.candidate.walletstringdata[].payload.candidate.marketstringdata[].payload.candidate.tokenstringdata[].payload.candidate.startstringdata[].payload.candidate.endstringdata[].payload.candidate.buyUsdstringdata[].payload.candidate.sellUsdstringdata[].payload.candidate.netUsdstringdata[].payload.candidate.netSharesstringdata[].payload.candidate.availableAtstringdata[].payload.candidate.executionIds[]string[]data[].payload.decisionstringdata[].payload.reasons[]string[]data[].payload.smart_money"unverified"data[].payload.wallet_profilestringdata[].payload.concurrent_outcome_tokens[]string[]data[].payload.decision_fingerprintstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"whale-alert.v2" | "whale-alert.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.has_morebooleanmeta.next_cursorstring | nullmeta.first_windowstring | nullmeta.can_filterbooleanmeta.can_replayboolean
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/signals/accumulation/v2Read published Accumulation v2 revisions
Immutable emission, correction and retraction stream ordered by publication time (newest first). Uses stored accumulation.v2 decisions, never recalculates historical alerts. as_of freezes publication visibility; next_cursor preserves that snapshot and filters. Apply revisions by alert_key and revision, not transaction time. A minimum-notional filter retains subsequent retractions of matching alerts. Returns preparing until the explicit public release. Polymarket and Predict.fun use the same numerical rules over 24h, 72h and 168h. Select venue=predict_fun for BNB evidence and accumulation.predict-fun.v2 history. Requires predict_fun:read or polymarket:read according to venue; sustained buying does not establish smart-money identity or profitability.
Parameters
venuestringoptional- Venue. Defaults to polymarket. Predict.fun has independent BNB evidence, publication history and release.
as_ofstringoptional- Publication cutoff. Omit for current visibility; pagination freezes this instant.
limitinteger · default 20optional- Maximum published revisions per page, between 1 and 100.
cursorstringoptional- Exact next_cursor string from the previous page, using unchanged filters and cutoff.
walletstringoptional- Exact lowercase wallet address.
marketstringoptional- Exact lowercase condition ID on the selected venue.
min_net_usdnumbernulloptional- Minimum net buying of a published alert. Later corrections and withdrawals of matching alerts remain visible.
Response · 200
Stored revisions or explicit preparing state.
data[]object[]data[].alert_keystringdata[].revisionintegerdata[].action"emitted" | "corrected" | "retracted"data[].published_atstringdata[].input_cutoffstringdata[].calibration_fingerprintstringdata[].payloadobjectdata[].payload.candidateobjectdata[].payload.candidate.venuestringdata[].payload.candidate.walletstringdata[].payload.candidate.marketstringdata[].payload.candidate.tokenstringdata[].payload.candidate.startstringdata[].payload.candidate.endstringdata[].payload.candidate.asOfstringdata[].payload.candidate.netUsdstringdata[].payload.candidate.netSharesstringdata[].payload.candidate.boughtUsdstringdata[].payload.candidate.soldUsdstringdata[].payload.candidate.marketBoughtUsdstringdata[].payload.candidate.marketBuyShareBpsnumberdata[].payload.candidate.buyCountnumberdata[].payload.candidate.buyHoursnumberdata[].payload.candidate.buySpanMsnumberdata[].payload.candidate.executions[]object[]data[].payload.candidate.executions[].idstringdata[].payload.candidate.executions[].venuestringdata[].payload.candidate.executions[].walletstringdata[].payload.candidate.executions[].marketstringdata[].payload.candidate.executions[].tokenstringdata[].payload.candidate.executions[].side"BUY" | "SELL"data[].payload.candidate.executions[].eventAtstringdata[].payload.candidate.executions[].availableAtstringdata[].payload.candidate.executions[].usdstringdata[].payload.candidate.executions[].sharesstringdata[].payload.decisionstringdata[].payload.reasons[]string[]data[].payload.decision_fingerprintstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"accumulation.v2" | "accumulation.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.has_morebooleanmeta.next_cursorstring | nullmeta.first_windowstring | nullmeta.can_filterbooleanmeta.can_replayboolean
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/signals/top-traders/v2Read a verified Top Traders ranking snapshot
Polymarket and Predict.fun have independent evidence, versioned snapshots and public release gates. Select venue=predict_fun with predict_fun:read; defaults to polymarket with polymarket:read. Predict.fun uses top-traders.predict-fun.v2 and stays preparing until wallet costs, fee treatment and settlement are reconciled. Seven-day realized execution P&L after charged execution fees. Rankings are separate for each collateral token; amounts are nominal collateral units, not an FX-adjusted USD total. Rewards, fee rebates and unrealized price changes are excluded. ROI is return on realized cost, not capital at risk. At least five traded markets must be fully closed and realized cost must be at least 100 collateral units. Unknown cost or incomplete portfolio evidence excludes the portfolio, with coverage counts reported. as_of and next_cursor freeze the published snapshot and its revision. Corrections never rewrite earlier snapshots. Returns preparing until a validated public release. No sampled-position audit is eligible for this feed.
Parameters
venuestringoptional- Venue; defaults to polymarket. Predict.fun remains preparing until complete wallet cost and settlement evidence is verified.
as_ofstringoptional- Publication cutoff; omit for latest visibility. Historical replay requires an eligible subscription.
limitinteger · default 20optional- Maximum portfolios per page. Anonymous web access is limited to 20.
cursorstringoptional- Exact next_cursor from the previous page; preserves snapshot, revision, filters and publication cutoff.
walletstringoptional- Exact lowercase wallet address. Sign-in required.
collateralstringoptional- Exact lowercase collateral contract. Rankings and nominal amounts are separate per collateral.
Response · 200
Immutable ranking snapshot or preparing state
data[]object[]data[].walletstringdata[].collateralstringdata[].rankintegerdata[].realized_pnlstringdata[].realized_coststringdata[].closed_marketsintegerdata[].return_on_realized_cost_bpsnumberdata[].open_positions[]object[]data[].open_positions[].tokenstringdata[].open_positions[].sharesstringdata[].open_positions[].coststring | nulldata[].proof_hashstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"top-traders.v2" | "top-traders.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.next_cursorstring | nullmeta.has_morebooleanmeta.can_filterbooleanmeta.can_replaybooleanmeta.snapshot_keystring | nullmeta.revisioninteger | nullmeta.window_startstring | nullmeta.window_endstring | nullmeta.observed_portfoliosintegermeta.eligible_portfoliosintegermeta.excluded_portfoliosinteger
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/signals/yieldsCompare conditional carry returns and token-matched buying context
Immutable yield.v2 input snapshots, with original yield.v1 replay, for Polymarket and Predict.fun. Calculates purchases against recorded ask depth for an entry budget. Payout assumes the selected outcome wins and pays one collateral unit per share; price is not a calibrated probability. Partial depth reports unspent capital. Polymarket entry-fee estimates use the stored feeSchedule with exponent 1 and the pinned SDK cash-fee curve; zero-fee flags are supported. Predict v2 uses each stored market feeRateBps and deducts the base taker fee from purchased shares: floor(bps*min(p,1-p)*shares/p/10000), using D18 price and rounding per observed level. Account-specific discounts and refunds are excluded. purchased_shares and payout_before_entry_fee_if_win are before the share fee; shares and payout_if_win are after it. estimated_entry_fee is the entry-price collateral equivalent of the fee, not an extra cash debit for Predict. Exact per-fill rounding can differ for aggregated depth. Unverified fees remain null. The budget includes known entry fees; gas, funding, withdrawal, redemption and optional builder costs are excluded. Predict scheduled ends come from captured category endsAt with exact market/condition membership and a 15-minute freshness limit; missing dates remain unknown. Scheduled end is not promised settlement. Annualization is simple, not compounded; Predict collateral yield/rewards are excluded. Published Whale Alert and Accumulation context matches venue, condition and token at the snapshot cutoff; purchases are not proof of current holdings. Polymarket Top Traders context uses the last published holdings from top 100 portfolios per collateral, at most 24 hours old, and never claims a current balance. Unreleased rankings remain preparing. Predict holdings stay unavailable until their CTF contract identity is supported. Snapshots refresh every five minutes, cover a bounded candidate sample, and retain publication history for replay. An omitted token in a later snapshot means it is no longer in that candidate sample, not that a prior trade was reversed. Scopes are polymarket:read or predict_fun:read by venue.
Parameters
venuestring · default polymarketoptional- Venue and collateral denomination.
categorystring · default alloptional- Filter by source or inferred market category; all disables category filtering.
budgetstring · default 100optional- Entry budget in venue collateral units, including verified entry fees; unverified fees and external costs are excluded. Default 100; custom budget requires sign-in.
min_return_pctnumbernull · default 0optional- Minimum conditional gross return percentage. Not an estimated win probability.
max_daysintegeroptional- Maximum days until scheduled end; unknown/overdue dates are excluded when set.
settlement_delay_daysintegernull · default 0optional- Additional assumed settlement delay for simple annualization.
contextstring · default anyoptional- Require available, token-matched published buying context. Unreleased indicators never count as zero activity.
sortstring · default returnoptional- Sort by conditional gross return, net return (unknown last), recorded capacity or scheduled end.
as_ofstringoptional- Publication cutoff for point-in-time replay; subscription required for historical cutoffs.
limitinteger · default 20optional- Page size; public access is capped at 20.
cursorstringoptional- Cursor binds venue, query, snapshot and cutoff. Use unchanged filters on subsequent pages.
Response · 200
Calculated carry page from a fixed stored input snapshot
data[]object[]data[].category"sports" | "politics" | "crypto" | "economy" | "weather" | "entertainment" | "other"data[].category_source"source" | "inferred" | "unknown"data[].keystringdata[].venue"polymarket" | "predict_fun"data[].marketstringdata[].conditionstringdata[].tokenstringdata[].titlestringdata[].outcomestringdata[].urlstringdata[].collateralstringdata[].signal_version"yield.v1" | "yield.v2"data[].budgetstringdata[].spentstringdata[].unspentstringdata[].sharesstring- Shares received after supported entry share fees (Predict yield.v2); before fees for legacy v1.
data[].purchased_sharesstring- Purchased shares before entry share fees, present in yield.v2.
data[].estimated_entry_fee_sharesstring | nulldata[].estimated_entry_feestring | null- Collateral equivalent at entry price. Predict v2 deducts the fee from shares, not as additional cash.
data[].payout_before_entry_fee_if_winstringdata[].net_basisstringdata[].scheduleobjectdata[].schedule.sourcestringdata[].schedule.record_idstringdata[].schedule.category_slugstringdata[].schedule.marketstringdata[].schedule.conditionstringdata[].schedule.observed_atstringdata[].schedule.available_atstringdata[].schedule.starts_atstring | nulldata[].schedule.ends_atstring | nulldata[].schedule.statusstringdata[].recorded_capacitystringdata[].average_pricestring | nulldata[].quote_atstringdata[].available_atstringdata[].end_atstring | nulldata[].quote_status"observed" | "unavailable"data[].reasons[]string[]data[].payout_if_winstringdata[].profit_if_win_grossstringdata[].return_if_win_gross_pctnumber | nulldata[].profit_if_win_netstring | nulldata[].return_if_win_net_pctnumber | nulldata[].annualized_net_pctnumber | nulldata[].annualized_net_if_7d_late_pctnumber | nulldata[].days_to_scheduled_endnumber | nulldata[].feeobjectdata[].fee.status"unknown" | "zero" | "observed"data[].fee.sourcestringdata[].fee.observed_atstring | nulldata[].fee.model"polymarket-curve-cash.v1" | "predict-min-shares.v1"data[].fee.ratestringdata[].fee.rate_bpsintegerdata[].fee.exponent1data[].contextobjectdata[].input_ids[]string[]metaobjectmeta.as_ofstringmeta.signal_version"yield.v1" | "yield.v2"meta.venue"polymarket" | "predict_fun"meta.status"preparing" | "live" | "stale"meta.snapshot_idstring | nullmeta.published_atstring | nullmeta.input_cutoffstring | nullmeta.can_filterbooleanmeta.can_replaybooleanmeta.coverageobjectmeta.recordsnumbermeta.has_morebooleanmeta.next_cursorstring | null
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/signals/large-tradesRecent large Polymarket executions
Latest 100 observed wallet trade rows worth at least 10,000 USDC in the last 24 hours. Deduplicated by source trade ID, not economic transaction. A transaction can include multiple fills and counterparties. Outcome prices are last observed trades within 24 hours with timestamps, not live quotes. Unobserved outcome prices remain null. Categories may be inferred. This is not the calibrated Whale Alert v2 signal or evidence of profitability.
Response · 200
Bounded observed trade sample
data[]object[]data[].idstringdata[].walletstringdata[].marketstringdata[].tokenstringdata[].outcomestringdata[].sidestringdata[].usdnumberdata[].pricenumberdata[].sharesnumberdata[].txstringdata[].timestringdata[].titlestringdata[].category"sports" | "politics" | "crypto" | "economy" | "weather" | "entertainment" | "other"data[].category_source"source" | "inferred" | "unknown"data[].options[]object[]data[].options[].outcomestringdata[].options[].pricenumber | nulldata[].options[].price_atstring | nullmetaobjectmeta.as_ofstringmeta.latest_trade_atstring | nullmeta.threshold10000meta.limit100meta.venue"polymarket"
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SEAT_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. The workspace subscription is active, but this member holds no seat on its plan. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/signals/trader-rankingPolymarket source leaderboard
Top 50 entries from the Polymarket Data API leaderboard for a category, period and sort order. PnL and volume retain the source definitions; PnL is not asserted to be realized-only and volume is not invested capital. This is distinct from KnownAt Top Traders v2. retrieved_at records retrieval, not the upstream calculation time.
Parameters
categorystring · default OVERALLoptional- Source leaderboard category; OVERALL includes all categories.
periodstring · default WEEKoptional- Source leaderboard period: DAY, WEEK, MONTH or ALL.
sortstring · default PNLoptional- Rank by source PnL or traded volume; neither is a KnownAt skill score.
Response · 200
Validated source leaderboard
data[]object[]data[].rankstringdata[].proxyWalletstringdata[].userNamestringdata[].volnumberdata[].pnlnumbermetaobjectmeta.source"Polymarket Data API"meta.retrieved_atstringmeta.category"OVERALL" | "SPORTS" | "POLITICS" | "CRYPTO" | "CULTURE" | "WEATHER" | "ECONOMICS" | "TECH" | "FINANCE"meta.period"DAY" | "WEEK" | "MONTH" | "ALL"meta.sort"PNL" | "VOL"meta.limit50
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SEAT_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. The workspace subscription is active, but this member holds no seat on its plan. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/previews/yieldsPublic preview: Compare conditional carry returns and token-matched buying context
Immutable yield.v2 input snapshots, with original yield.v1 replay, for Polymarket and Predict.fun. Calculates purchases against recorded ask depth for an entry budget. Payout assumes the selected outcome wins and pays one collateral unit per share; price is not a calibrated probability. Partial depth reports unspent capital. Polymarket entry-fee estimates use the stored feeSchedule with exponent 1 and the pinned SDK cash-fee curve; zero-fee flags are supported. Predict v2 uses each stored market feeRateBps and deducts the base taker fee from purchased shares: floor(bps*min(p,1-p)*shares/p/10000), using D18 price and rounding per observed level. Account-specific discounts and refunds are excluded. purchased_shares and payout_before_entry_fee_if_win are before the share fee; shares and payout_if_win are after it. estimated_entry_fee is the entry-price collateral equivalent of the fee, not an extra cash debit for Predict. Exact per-fill rounding can differ for aggregated depth. Unverified fees remain null. The budget includes known entry fees; gas, funding, withdrawal, redemption and optional builder costs are excluded. Predict scheduled ends come from captured category endsAt with exact market/condition membership and a 15-minute freshness limit; missing dates remain unknown. Scheduled end is not promised settlement. Annualization is simple, not compounded; Predict collateral yield/rewards are excluded. Published Whale Alert and Accumulation context matches venue, condition and token at the snapshot cutoff; purchases are not proof of current holdings. Polymarket Top Traders context uses the last published holdings from top 100 portfolios per collateral, at most 24 hours old, and never claims a current balance. Unreleased rankings remain preparing. Predict holdings stay unavailable until their CTF contract identity is supported. Snapshots refresh every five minutes, cover a bounded candidate sample, and retain publication history for replay. An omitted token in a later snapshot means it is no longer in that candidate sample, not that a prior trade was reversed. Scopes are polymarket:read or predict_fun:read by venue.
Parameters
venuestring · default polymarketoptional- Venue and collateral denomination.
categorystring · default alloptional- Filter by source or inferred market category; all disables category filtering.
budgetstring · default 100optional- Entry budget in venue collateral units, including verified entry fees; unverified fees and external costs are excluded. Default 100; custom budget requires sign-in.
min_return_pctnumbernull · default 0optional- Minimum conditional gross return percentage. Not an estimated win probability.
max_daysintegeroptional- Maximum days until scheduled end; unknown/overdue dates are excluded when set.
settlement_delay_daysintegernull · default 0optional- Additional assumed settlement delay for simple annualization.
contextstring · default anyoptional- Require available, token-matched published buying context. Unreleased indicators never count as zero activity.
sortstring · default returnoptional- Sort by conditional gross return, net return (unknown last), recorded capacity or scheduled end.
as_ofstringoptional- Publication cutoff for point-in-time replay; subscription required for historical cutoffs.
limitinteger · default 20optional- Page size; public access is capped at 20.
cursorstringoptional- Cursor binds venue, query, snapshot and cutoff. Use unchanged filters on subsequent pages.
Response · 200
Calculated carry page from a fixed stored input snapshot
data[]object[]data[].category"sports" | "politics" | "crypto" | "economy" | "weather" | "entertainment" | "other"data[].category_source"source" | "inferred" | "unknown"data[].keystringdata[].venue"polymarket" | "predict_fun"data[].marketstringdata[].conditionstringdata[].tokenstringdata[].titlestringdata[].outcomestringdata[].urlstringdata[].collateralstringdata[].signal_version"yield.v1" | "yield.v2"data[].budgetstringdata[].spentstringdata[].unspentstringdata[].sharesstring- Shares received after supported entry share fees (Predict yield.v2); before fees for legacy v1.
data[].purchased_sharesstring- Purchased shares before entry share fees, present in yield.v2.
data[].estimated_entry_fee_sharesstring | nulldata[].estimated_entry_feestring | null- Collateral equivalent at entry price. Predict v2 deducts the fee from shares, not as additional cash.
data[].payout_before_entry_fee_if_winstringdata[].net_basisstringdata[].scheduleobjectdata[].schedule.sourcestringdata[].schedule.record_idstringdata[].schedule.category_slugstringdata[].schedule.marketstringdata[].schedule.conditionstringdata[].schedule.observed_atstringdata[].schedule.available_atstringdata[].schedule.starts_atstring | nulldata[].schedule.ends_atstring | nulldata[].schedule.statusstringdata[].recorded_capacitystringdata[].average_pricestring | nulldata[].quote_atstringdata[].available_atstringdata[].end_atstring | nulldata[].quote_status"observed" | "unavailable"data[].reasons[]string[]data[].payout_if_winstringdata[].profit_if_win_grossstringdata[].return_if_win_gross_pctnumber | nulldata[].profit_if_win_netstring | nulldata[].return_if_win_net_pctnumber | nulldata[].annualized_net_pctnumber | nulldata[].annualized_net_if_7d_late_pctnumber | nulldata[].days_to_scheduled_endnumber | nulldata[].feeobjectdata[].fee.status"unknown" | "zero" | "observed"data[].fee.sourcestringdata[].fee.observed_atstring | nulldata[].fee.model"polymarket-curve-cash.v1" | "predict-min-shares.v1"data[].fee.ratestringdata[].fee.rate_bpsintegerdata[].fee.exponent1data[].contextobjectdata[].input_ids[]string[]metaobjectmeta.as_ofstringmeta.signal_version"yield.v1" | "yield.v2"meta.venue"polymarket" | "predict_fun"meta.status"preparing" | "live" | "stale"meta.snapshot_idstring | nullmeta.published_atstring | nullmeta.input_cutoffstring | nullmeta.can_filterbooleanmeta.can_replaybooleanmeta.coverageobjectmeta.recordsnumbermeta.has_morebooleanmeta.next_cursorstring | null
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/previews/whale-alerts/v2Public preview: Read published Whale Alert v2 revisions
Immutable emission, correction and retraction stream ordered by publication time (newest first). Uses stored whale-alert.v2 decisions, never recalculates historical alerts. as_of freezes publication visibility; next_cursor preserves that snapshot and filters. Apply revisions by alert_key and revision, not transaction time. A minimum-notional filter retains subsequent retractions of matching alerts. Returns preparing until the explicit public release. Requires polymarket:read or predict_fun:read according to venue. Polymarket and Predict.fun via the venue parameter, with independent calibration and release. Predict.fun uses whale-alert.predict-fun.v2 with identical numerical rules and BNB settlement evidence; unusual position building does not establish smart-money identity or profitability.
Parameters
venuestringoptional- Venue. Defaults to polymarket; predict_fun has its own calibration, immutable source manifest and release gate.
as_ofstringoptional- Publication cutoff. Omit for current visibility; pagination freezes this instant.
limitinteger · default 20optional- Maximum published revisions per page, between 1 and 100.
cursorstringoptional- Exact next_cursor string from the previous page, using unchanged filters and cutoff.
walletstringoptional- Exact lowercase wallet address.
marketstringoptional- Exact lowercase condition ID on the selected venue.
min_net_usdnumbernulloptional- Minimum net buying of a published alert. Later corrections and withdrawals of matching alerts remain visible.
Response · 200
Stored revisions or explicit preparing state.
data[]object[]data[].alert_keystringdata[].revisionintegerdata[].action"emitted" | "corrected" | "retracted"data[].published_atstringdata[].input_cutoffstringdata[].calibration_fingerprintstringdata[].payloadobjectdata[].payload.candidateobjectdata[].payload.candidate.venuestringdata[].payload.candidate.walletstringdata[].payload.candidate.marketstringdata[].payload.candidate.tokenstringdata[].payload.candidate.startstringdata[].payload.candidate.endstringdata[].payload.candidate.buyUsdstringdata[].payload.candidate.sellUsdstringdata[].payload.candidate.netUsdstringdata[].payload.candidate.netSharesstringdata[].payload.candidate.availableAtstringdata[].payload.candidate.executionIds[]string[]data[].payload.decisionstringdata[].payload.reasons[]string[]data[].payload.smart_money"unverified"data[].payload.wallet_profilestringdata[].payload.concurrent_outcome_tokens[]string[]data[].payload.decision_fingerprintstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"whale-alert.v2" | "whale-alert.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.has_morebooleanmeta.next_cursorstring | nullmeta.first_windowstring | nullmeta.can_filterbooleanmeta.can_replayboolean
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/previews/accumulation/v2Public preview: Read published Accumulation v2 revisions
Immutable emission, correction and retraction stream ordered by publication time (newest first). Uses stored accumulation.v2 decisions, never recalculates historical alerts. as_of freezes publication visibility; next_cursor preserves that snapshot and filters. Apply revisions by alert_key and revision, not transaction time. A minimum-notional filter retains subsequent retractions of matching alerts. Returns preparing until the explicit public release. Polymarket and Predict.fun use the same numerical rules over 24h, 72h and 168h. Select venue=predict_fun for BNB evidence and accumulation.predict-fun.v2 history. Requires predict_fun:read or polymarket:read according to venue; sustained buying does not establish smart-money identity or profitability.
Parameters
venuestringoptional- Venue. Defaults to polymarket. Predict.fun has independent BNB evidence, publication history and release.
as_ofstringoptional- Publication cutoff. Omit for current visibility; pagination freezes this instant.
limitinteger · default 20optional- Maximum published revisions per page, between 1 and 100.
cursorstringoptional- Exact next_cursor string from the previous page, using unchanged filters and cutoff.
walletstringoptional- Exact lowercase wallet address.
marketstringoptional- Exact lowercase condition ID on the selected venue.
min_net_usdnumbernulloptional- Minimum net buying of a published alert. Later corrections and withdrawals of matching alerts remain visible.
Response · 200
Stored revisions or explicit preparing state.
data[]object[]data[].alert_keystringdata[].revisionintegerdata[].action"emitted" | "corrected" | "retracted"data[].published_atstringdata[].input_cutoffstringdata[].calibration_fingerprintstringdata[].payloadobjectdata[].payload.candidateobjectdata[].payload.candidate.venuestringdata[].payload.candidate.walletstringdata[].payload.candidate.marketstringdata[].payload.candidate.tokenstringdata[].payload.candidate.startstringdata[].payload.candidate.endstringdata[].payload.candidate.asOfstringdata[].payload.candidate.netUsdstringdata[].payload.candidate.netSharesstringdata[].payload.candidate.boughtUsdstringdata[].payload.candidate.soldUsdstringdata[].payload.candidate.marketBoughtUsdstringdata[].payload.candidate.marketBuyShareBpsnumberdata[].payload.candidate.buyCountnumberdata[].payload.candidate.buyHoursnumberdata[].payload.candidate.buySpanMsnumberdata[].payload.candidate.executions[]object[]data[].payload.candidate.executions[].idstringdata[].payload.candidate.executions[].venuestringdata[].payload.candidate.executions[].walletstringdata[].payload.candidate.executions[].marketstringdata[].payload.candidate.executions[].tokenstringdata[].payload.candidate.executions[].side"BUY" | "SELL"data[].payload.candidate.executions[].eventAtstringdata[].payload.candidate.executions[].availableAtstringdata[].payload.candidate.executions[].usdstringdata[].payload.candidate.executions[].sharesstringdata[].payload.decisionstringdata[].payload.reasons[]string[]data[].payload.decision_fingerprintstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"accumulation.v2" | "accumulation.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.has_morebooleanmeta.next_cursorstring | nullmeta.first_windowstring | nullmeta.can_filterbooleanmeta.can_replayboolean
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/previews/top-traders/v2Public preview: Read a verified Top Traders ranking snapshot
Polymarket and Predict.fun have independent evidence, versioned snapshots and public release gates. Select venue=predict_fun with predict_fun:read; defaults to polymarket with polymarket:read. Predict.fun uses top-traders.predict-fun.v2 and stays preparing until wallet costs, fee treatment and settlement are reconciled. Seven-day realized execution P&L after charged execution fees. Rankings are separate for each collateral token; amounts are nominal collateral units, not an FX-adjusted USD total. Rewards, fee rebates and unrealized price changes are excluded. ROI is return on realized cost, not capital at risk. At least five traded markets must be fully closed and realized cost must be at least 100 collateral units. Unknown cost or incomplete portfolio evidence excludes the portfolio, with coverage counts reported. as_of and next_cursor freeze the published snapshot and its revision. Corrections never rewrite earlier snapshots. Returns preparing until a validated public release. No sampled-position audit is eligible for this feed.
Parameters
venuestringoptional- Venue; defaults to polymarket. Predict.fun remains preparing until complete wallet cost and settlement evidence is verified.
as_ofstringoptional- Publication cutoff; omit for latest visibility. Historical replay requires an eligible subscription.
limitinteger · default 20optional- Maximum portfolios per page. Anonymous web access is limited to 20.
cursorstringoptional- Exact next_cursor from the previous page; preserves snapshot, revision, filters and publication cutoff.
walletstringoptional- Exact lowercase wallet address. Sign-in required.
collateralstringoptional- Exact lowercase collateral contract. Rankings and nominal amounts are separate per collateral.
Response · 200
Immutable ranking snapshot or preparing state
data[]object[]data[].walletstringdata[].collateralstringdata[].rankintegerdata[].realized_pnlstringdata[].realized_coststringdata[].closed_marketsintegerdata[].return_on_realized_cost_bpsnumberdata[].open_positions[]object[]data[].open_positions[].tokenstringdata[].open_positions[].sharesstringdata[].open_positions[].coststring | nulldata[].proof_hashstringmetaobjectmeta.status"preparing" | "live"meta.signal_version"top-traders.v2" | "top-traders.predict-fun.v2"meta.as_ofstringmeta.recordsintegermeta.next_cursorstring | nullmeta.has_morebooleanmeta.can_filterbooleanmeta.can_replaybooleanmeta.snapshot_keystring | nullmeta.revisioninteger | nullmeta.window_startstring | nullmeta.window_endstring | nullmeta.observed_portfoliosintegermeta.eligible_portfoliosintegermeta.excluded_portfoliosinteger
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
Models
Model outputs with explicit version and publication status.
/v1/models/liquidation-mapBTC liquidation map research alpha
Returns the fixed Bybit BTCUSDT research snapshot used in the dashboard, including scenario densities and original input hash. This artifact is not live, does not update on request, and does not identify actual liquidation positions. Read eventEnd and generatedAt before interpreting it. Free authenticated access with datasets:read.
Parameters
symbolstring · default BTCoptional- Research alpha currently covers BTC only.
Response · 200
Dated research artifact
dataobjectdata.versionstringdata.generatedAtstringdata.eventEndstringdata.marketstringdata.inputSha256stringdata.historyHoursnumberdata.missingHoursnumberdata.scenarios[]object[]data.scenarios[].idstringdata.scenarios[].labelstringdata.scenarios[].coverageobjectdata.scenarios[].coverage.longnumberdata.scenarios[].coverage.shortnumberdata.scenarios[].rows[]object[]data.scenarios[].rows[].timestringdata.scenarios[].rows[].pricenumberdata.scenarios[].rows[].cells[]number[][]metaobjectmeta.status"research_snapshot"meta.livefalse
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | INSUFFICIENT_SCOPE | The API key is valid but lacks the scope this endpoint requires. |
| 429 | RATE_LIMIT_EXCEEDED | The workspace rate limit has been exceeded. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
Macro
Official economic series with every revision and the time it became known, plus the release calendar.
/v1/macro/seriesMacro indicators with their latest values
Inflation, labor, growth, consumer activity, rates and energy series with the latest value, a headline (level, year-over-year percent change or change on the previous period, as stated by basis), up to 24 recent headline points and the next scheduled release. Values come from the official publishers (BLS, BEA, DOL, New York Fed, Treasury, EIA; ONS for Revolut card spending, Eurostat, TSA) as they were captured; every change is kept with the time it became known, so revisions stay visible. capture_started gives when each source was first captured: for earlier periods the first value is our first capture, not the original release. sources reports when each publisher was last checked.
Response · 200
Every curated macro series.
data[]object[]data[].idstringdata[].namestringdata[].group"inflation" | "labor" | "growth" | "consumer" | "rates" | "energy"data[].frequency"daily" | "weekly" | "monthly" | "quarterly"data[].unitstringdata[].basis"level" | "yoy" | "change"- level: the value; yoy: percent change on a year earlier; change: difference from the previous period.
data[].sourcestringdata[].source_labelstringdata[].source_urlstringdata[].releasestring | nulldata[].notestring | null- What the publisher says the numbers do not show, when it says so.
data[].capture_startedstring | null- When this source was first captured; earlier periods show first capture, not first release.
data[].latestobject | nulldata[].latest.periodstringdata[].latest.datestring | nulldata[].latest.valuenumber | nulldata[].latest.first_seen_atstringdata[].latest.last_changed_atstringdata[].latest.versionsnumberdata[].previousobject | nulldata[].previous.periodstringdata[].previous.valuenumber | nulldata[].headlineobject | nulldata[].headline.basis"level" | "yoy" | "change"data[].headline.valuenumberdata[].headline.periodstringdata[].headline.compare_periodstring | nulldata[].spark[]object[]data[].spark[].periodstringdata[].spark[].valuenumber | nulldata[].next_releaseobject | nulldata[].next_release.namestringdata[].next_release.scheduled_atstringsources[]object[]sources[].sourcestringsources[].last_checkstringsources[].last_successstringsources[].outcomestringmetaobjectmeta.generated_atstringmeta.capture_startedstringmeta.notestringmeta.groups[]string[]
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/macro/observationsHistory and revisions of one macro series
One series, newest periods first up to limit, each with its current value, the first value captured and when, and the number of versions. revisions lists every change of a published value, newest first. as_of returns what was known at that instant. Values come from the official publishers (BLS, BEA, DOL, New York Fed, Treasury, EIA; ONS for Revolut card spending, Eurostat, TSA) as they were captured; every change is kept with the time it became known, so revisions stay visible. capture_started gives when each source was first captured: for earlier periods the first value is our first capture, not the original release.
Parameters
seriesstringrequired- Series ID from /v1/macro/series, for example cpi, payrolls, gdp, sofr or crude_stocks.
as_ofstringoptional- Knowledge cutoff: only versions captured at or before this instant, so a backtest sees what was known then. Defaults to now.
limitinteger · default 120optional- Most recent periods to return.
Response · 200
Periods and revisions of the series.
seriesobjectseries.idstringseries.namestringseries.group"inflation" | "labor" | "growth" | "consumer" | "rates" | "energy"series.frequency"daily" | "weekly" | "monthly" | "quarterly"series.unitstringseries.basis"level" | "yoy" | "change"- level: the value; yoy: percent change on a year earlier; change: difference from the previous period.
series.sourcestringseries.source_labelstringseries.source_urlstringseries.releasestring | nullseries.notestring | null- What the publisher says the numbers do not show, when it says so.
observations[]object[]observations[].periodstringobservations[].datestring | nullobservations[].valuenumber | nullobservations[].first_valuenumber | nullobservations[].first_seen_atstringobservations[].last_changed_atstringobservations[].versionsnumberobservations[].first_releasestring | nullobservations[].headlinenumber | nullrevisions[]object[]revisions[].periodstringrevisions[].fromnumber | nullrevisions[].tonumber | nullrevisions[].atstringrevisions[].releasestring | nullmetaobjectmeta.as_ofstringmeta.periodsnumbermeta.truncatedbooleanmeta.capture_startedstringmeta.notestring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |
/v1/macro/calendarScheduled macro releases and capture latency
Releases from the BLS, BEA and ONS calendars, EIA and DOL weekly reports and the daily New York Fed and Treasury publications. Around each one the collector polls every 2 seconds; captured releases report the delay from the scheduled time to the first change seen, and the series each release updates.
Parameters
fromstringoptional- Inclusive start. Defaults to 7 days ago.
tostringoptional- Inclusive end, at most 120 days after from. Defaults to 14 days ahead.
Response · 200
Releases in the window, oldest first.
data[]object[]data[].sourcestringdata[].keystringdata[].namestringdata[].scheduled_atstringdata[].probes[]string[]data[].series[]string[]data[].status"upcoming" | "in_window" | "captured" | "no_capture"data[].first_change_atstring | nulldata[].latency_msnumber | nullmetaobjectmeta.fromstringmeta.tostringmeta.generated_atstringmeta.window_minutesnumbermeta.notestring
Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_PARAMETER | One or more request parameters failed validation. |
| 401 | INVALID_API_KEY | The API key is missing, malformed, expired, or revoked. |
| 403 | SUBSCRIPTION_REQUIRED | The API key is valid but lacks the scope this endpoint requires. An active subscription is required. |
| 429 | QUOTA_EXCEEDED | The workspace rate limit has been exceeded. The subscription allowance has been reached. |
| 500 | INTERNAL_ERROR | An unexpected error occurred. The request ID identifies it in our logs. |
| 503 | SERVICE_UNAVAILABLE | A dependency required to serve this request is unavailable. |