Polymarket
10 tablesPolymarket's on-chain prediction markets — events and the YES/NO outcome tokens that trade against them, with token-level snapshots, OHLC candles, price history, order books, and the full public trade tape.
Machine-readable spec: /api/openapi/public.json (OpenAPI 3.1)
Main· 3 tables
events
polymarket.eventsA real-world event that anchors a set of Polymarket markets — a single sports game, an election, a futures question, or any other resolvable scenario. E.g., "Mavericks vs Suns" game event or "2026 NBA Champion" futures event.
▸Fields18
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| competition_id | bigintnullable | — | Polymorphic cross-schema ref — {league}.games (team sports) or golf.tournaments (golf), resolved at app level by slug parsing via league_code. Dereference via main.competitions. NULL until linked. |
| condition_id | string | — | Polymarket event condition ID (stable identifier) e.g. 10354 |
| away_team | stringnullable | — | Tricode: "DAL" e.g. BOS |
| description | stringnullable | — | — e.g. asd |
| end_date | timestamptznullable | — | — e.g. 2025-02-09T12:00:00.000Z |
| fetched_at | timestamptz | — | — e.g. 2026-06-14T18:21:39.195Z |
| game_date | datenullable | — | Game date parsed from slug e.g. 2025-04-11T04:00:00.000Z |
| home_team | stringnullable | — | Tricode: "PHX" e.g. MIA |
| league_code | stringnullable | — | e.g. "nba", denormalized for filtering Values:nbanflmlbnhl |
| liquidity | bigintnullable | — | Current liquidity in USDC minor units e.g. 272 |
| market_count | integernullable | — | — e.g. 1 |
| neg_risk | boolean | — | True for multi-outcome groups (e.g., 30-team NBA Champion) Values:falsetrue |
| slug | string | — | URL slug, e.g. "nba-dal-phx-2026-04-08" e.g. nba-play-in-lakers-vs-pelicans |
| start_date | timestamptznullable | — | — e.g. 2024-08-17T12:00:00.000Z |
| status | string | — | "active", "closed", "resolved" Values:closedactive |
| title | string | — | — e.g. NBA |
| volume | bigintnullable | — | Lifetime volume in USDC minor units e.g. 150 |
GET/api/v1/polymarket/eventsList events for Polymarket
Requires one of:
league_code — requests satisfying none of these return 400.Parameters
league_codequerystringoptionalFilter to events for a single league/sport slug (e.g., "nba", "nfl", "soccer").
competition_idquerybigintoptionalFilter to events linked to a specific competition (cross-schema game; resolved from slug).
statusquerystringoptionalFilter by event status — "active" or "closed". Values: active, closed.
game_datequerydateoptionalFilter to events scheduled on a specific date (YYYY-MM-DD).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/events?league_code=example'Responses
200events rows matching the declared filter set, wrapped in { events, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/events/{id}Get a single event by id
Parameters
idpathbigintrequiredPrimary key (id) of the event row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/events/{pk_value}'Responses
200Single event row.application/jsonshow example ▸
404Row not found.
tokens
polymarket.tokensThe tradable outcome tokens within a Polymarket market — YES and NO for binary markets, or one token per outcome for multi-outcome markets (e.g., each team in a championship futures market). The clobTokenId is used to query CLOB API for pricing and trades.
▸Fields10
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| event_id | bigintnullable | Denormalized for direct event queries e.g. 1088 | |
| market_id | bigint | — e.g. 1 | |
| token_id | string | Polymarket clobTokenId (used for CLOB API queries) e.g. 11205199261467113320159240005096995304332333883272177893362… | |
| fetched_at | timestamptz | — | — e.g. 2026-06-14T18:21:39.195Z |
| final_price_bps | integernullable | — | Settlement price (10000 for winner, 0 for loser) e.g. 10000 |
| outcome | string | — | Outcome label: team name, "Yes", "No" e.g. Yes |
| outcome_index | integer | — | 0-based index of this outcome within the market e.g. 0 |
| price_bps | integernullable | — | Latest price in basis points (0-10000) e.g. 10000 |
| winner | booleannullable | — | True if this outcome won, null if unresolved Values:falsetrue |
GET/api/v1/polymarket/tokensList tokens for Polymarket
Requires one of:
market_id — requests satisfying none of these return 400.Parameters
market_idquerybigintoptionalFilter to outcome tokens for a single Polymarket market.
event_idquerybigintoptionalFilter to tokens linked to a single event (denormalized for direct event queries).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/tokens?market_id=1'Responses
200tokens rows matching the declared filter set, wrapped in { tokens, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/tokens/{id}Get a single token by id
Parameters
idpathbigintrequiredPrimary key (id) of the token row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/tokens/{pk_value}'Responses
200Single token row.application/jsonshow example ▸
404Row not found.
markets
polymarket.marketsAn individual prediction market on Polymarket — a specific question tied to an event, resolved on-chain, with one or more tradable outcome tokens. Each market has 2+ tokens representing outcome positions.
▸Fields21
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| competition_id | bigintnullable | — | Polymorphic cross-schema ref (denormalized from event) resolved at app level by league_code. Dereference via main.competitions. NULL until linked. |
| condition_id | string | — | Polymarket market condition ID (stable identifier) e.g. 0x141f2fb7dc316ca019d7ce9d0fe530a78e18b637ea84211d8f4cebe43… |
| event_id | bigint | — e.g. 1088 | |
| payout_token_id | stringnullable | Token ID that paid out at 1.00 (winner) e.g. 11205199261467113320159240005096995304332333883272177893362… | |
| active | boolean | — | — Values:truefalse |
| best_ask_bps | integernullable | — | Basis points (0-10000) e.g. 10000 |
| best_bid_bps | integernullable | — | Basis points (0-10000) e.g. 100 |
| closed | boolean | — | — e.g. true |
| fetched_at | timestamptz | — | — e.g. 2026-06-14T18:21:39.195Z |
| last_trade_price_bps | integernullable | — | Basis points (0-10000) e.g. 10000 |
| liquidity | bigintnullable | — | — e.g. — (all-null in sample) |
| neg_risk | boolean | — | — Values:falsetrue |
| outcome_count | integer | — | Number of tokens/outcomes (2 for binary, N for multi-outcome) e.g. 2 |
| question | stringnullable | — | Full question text e.g. Over 229.5 |
| resolution_source | stringnullable | — | "uma", "manual", etc. e.g. uma |
| resolved_at | timestamptznullable | — | When the market was resolved e.g. 2024-05-07T23:10:10.610Z |
| result | stringnullable | — | Winning outcome string, null if unresolved e.g. Over |
| slug | stringnullable | — | — e.g. nba-play-in-lakers-vs-pelicans |
| status | string | — | "active", "closed", "resolved" e.g. closed |
| volume | bigintnullable | — | — e.g. 150 |
GET/api/v1/polymarket/marketsList markets for Polymarket
Requires one of:
event_id or competition_id — requests satisfying none of these return 400.Parameters
event_idquerybigintoptionalFilter to all markets that belong to a single Polymarket event.
competition_idquerybigintoptionalFilter to markets linked to a specific competition (denormalized from event).
statusquerystringoptionalFilter by market status — "active" or "closed" ("resolved" appears only on 22 legacy rows that carry no resolution data; resolution fields live on closed rows). Values: active, closed, resolved.
activequerybooleanoptionalFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/markets?event_id=1'Responses
200markets rows matching the declared filter set, wrapped in { markets, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/markets/{id}Get a single market by id
Parameters
idpathbigintrequiredPrimary key (id) of the market row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/markets/{pk_value}'Responses
200Single market row.application/jsonshow example ▸
404Row not found.
Markets· 6 tables
candles
polymarket.candlesOHLC candlestick price summaries for Polymarket outcome tokens — the open, high, low, close, and volume over standard time bins (1 minute, 5 minute, 1 hour, 1 day). Bucketed by (token_id, period_interval, end_period_ts).
▸Fields11
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| market_id | bigint | — e.g. 51150 | |
| token_id | string | — e.g. 66335248502015003064991075849688982103034628117228927894281… | |
| close_bps | integernullable | — | — e.g. 9980 |
| end_period_ts | integer | — | Unix epoch second of period end e.g. 1775238091 |
| high_bps | integernullable | — | — e.g. 9980 |
| low_bps | integernullable | — | — e.g. 9980 |
| open_bps | integernullable | — | — e.g. 9980 |
| period_interval | integer | — | Period length in seconds (1, 60, 300, 3600) e.g. 1 |
| size | bigint | — | Total share size in micro-units e.g. 5000000 |
| volume | integer | — | Trade count in period e.g. 1 |
GET/api/v1/polymarket/candlesList candles for Polymarket
Requires one of:
market_id — requests satisfying none of these return 400.Parameters
market_idquerybigintoptionalFilter to candles for all tokens in a single Polymarket market.
token_idquerystringoptionalFilter to candles for a single outcome token (clobTokenId).
period_intervalqueryintegeroptionalBin width in seconds. Currently every row is period_interval=1 (event-driven captures, irregular spacing) — resample client-side for fixed OHLC bins.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/candles?market_id=1'Responses
200candles rows matching the declared filter set, wrapped in { candles, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/candles/{id}Get a single candle by id
Parameters
idpathbigintrequiredPrimary key (id) of the candle row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/candles/{pk_value}'Responses
200Single candle row.application/jsonshow example ▸
404Row not found.
market_snapshots
polymarket.market_snapshotsMarket-level snapshots on Polymarket — aggregate volume, open interest, last trade price, and resolution status captured over time as the market trades. Tracks bid/ask/last and volume/liquidity over time. Coverage begins 2026-04; cadence is roughly hourly.
▸Fields9
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| condition_id | string | — | Denormalized for efficient queries e.g. 0x141f2fb7dc316ca019d7ce9d0fe530a78e18b637ea84211d8f4cebe43… |
| market_id | bigint | — e.g. 1 | |
| best_ask_bps | integernullable | — | — e.g. 10000 |
| best_bid_bps | integernullable | — | — e.g. 100 |
| captured_at | timestamptz | — | — e.g. 2026-04-03T03:33:29.023Z |
| last_trade_price_bps | integernullable | — | — e.g. 10000 |
| liquidity | bigintnullable | — | — e.g. — (all-null in sample) |
| volume | bigintnullable | — | Cumulative at capture time e.g. 150 |
GET/api/v1/polymarket/market_snapshotsList market_snapshots for Polymarket
Requires one of:
market_id — requests satisfying none of these return 400.Parameters
market_idquerybigintoptionalFilter to snapshots for a single Polymarket market.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/market_snapshots?market_id=1'Responses
200market_snapshots rows matching the declared filter set, wrapped in { market_snapshots, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/market_snapshots/{id}Get a single market_snapshot by id
Parameters
idpathbigintrequiredPrimary key (id) of the market_snapshot row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/market_snapshots/{pk_value}'Responses
200Single market_snapshot row.application/jsonshow example ▸
404Row not found.
order_book_snapshots
polymarket.order_book_snapshotsOrder-book depth snapshots for Polymarket outcome tokens — the bid and ask ladders captured at a point in time, showing the resting liquidity at each price level. Top 10 levels per side per token at capture time. Coverage begins 2026-04; pregame cadence (captures generally stop shortly after tip-off).
▸Fields10
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| market_id | bigint | — e.g. 51444 | |
| token_id | string | — e.g. 10598314929116624557920643614421478308169503386167507401691… | |
| captured_at | timestamptz | — | — e.g. 2026-04-11T04:19:05.691Z |
| depth_rank | integer | — | 0=best (top of book), 1=second best, etc. e.g. 0 |
| midpoint_bps | integernullable | — | Midpoint price at capture time e.g. 15 |
| price_bps | integer | — | Price level in basis points e.g. 10 |
| side | string | — | "BID" or "ASK" Values:ASKBID |
| size | bigint | — | Size at this level in micro-units e.g. 25000000 |
| spread_bps | integernullable | — | Bid-ask spread at capture time (top of book only) e.g. 10 |
GET/api/v1/polymarket/order_book_snapshotsList order_book_snapshots for Polymarket
Requires one of:
market_id — requests satisfying none of these return 400.Parameters
market_idquerybigintoptionalFilter to order-book snapshots for all tokens in a single Polymarket market.
token_idquerystringoptionalFilter to order-book snapshots for a single outcome token (clobTokenId).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/order_book_snapshots?market_id=1'Responses
200order_book_snapshots rows matching the declared filter set, wrapped in { order_book_snapshots, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/order_book_snapshots/{id}Get a single order_book_snapshot by id
Parameters
idpathbigintrequiredPrimary key (id) of the order_book_snapshot row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/order_book_snapshots/{pk_value}'Responses
200Single order_book_snapshot row.application/jsonshow example ▸
404Row not found.
price_histories
polymarket.price_historiesHistorical price tracks for each Polymarket outcome token — the full time-series of trading prices since the market opened. Analogous to kalshi.candle.
▸Fields10
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| market_id | bigint | Denormalized for market-level queries e.g. 51144 | |
| token_id | string | Polymarket clobTokenId e.g. 57716766271829541136771648575472282770893966395215942629640… | |
| close_bps | integer | — | — e.g. 5 |
| high_bps | integer | — | — e.g. 5 |
| interval_seconds | integer | — | Period length in seconds (60, 3600, 86400) e.g. 86400 |
| low_bps | integer | — | — e.g. 5 |
| open_bps | integer | — | Opening price in basis points e.g. 5 |
| period_start | timestamptz | — | Start of this OHLC period e.g. 2026-04-03T03:36:43.000Z |
| volume | bigintnullable | — | Period volume e.g. — (all-null in sample) |
GET/api/v1/polymarket/price_historiesList price_histories for Polymarket
Requires one of:
token_id — requests satisfying none of these return 400.Parameters
token_idquerystringoptionalFilter to price history for a single Polymarket outcome token (clobTokenId).
market_idquerybigintoptionalFilter to price history for all tokens in a single market.
interval_secondsqueryintegeroptionalUpstream fetch-window label (currently always 86400) — NOT a bin width; points within a window are irregularly spaced. Resample client-side.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/price_histories?token_id=example'Responses
200price_histories rows matching the declared filter set, wrapped in { price_histories, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/price_histories/{id}Get a single price_history by id
Parameters
idpathbigintrequiredPrimary key (id) of the price_history row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/price_histories/{pk_value}'Responses
200Single price_history row.application/jsonshow example ▸
404Row not found.
public_trades
polymarket.public_tradesEvery executed trade on Polymarket — price, size, side (buy or sell of each token), and timestamp, comprising the public market tape. Represents completed market trades.
▸Fields10
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| market_id | bigint | Denormalized for market-level queries e.g. 51137 | |
| token_id | string | Polymarket clobTokenId e.g. 44914465637297319816681463234953032477919413063019359633128… | |
| trade_id | string | — | Trade ID from Polymarket API e.g. 0x8cf169f32ea173f635deebbeab98aeb505e9b654687ec7a243d288e3a… |
| maker_address | stringnullable | — | Maker address (limit order provider) from on-chain event e.g. 0x88906147a72d6e22a916f9bd17351a01e045cefb |
| price_bps | integer | — | Trade price in basis points (0-10000) e.g. 6300 |
| side | string | — | "BUY" or "SELL" Values:BUYSELL |
| size | bigint | — | Trade size (number of shares) e.g. 5000000 |
| taker_address | stringnullable | — | Taker address (market order) from on-chain event e.g. 0x4bfb41d5b3570defd03c39a9a4d8de6bd8b8982e |
| traded_at | timestamptz | — | — e.g. 2026-03-18T20:53:01.000Z |
GET/api/v1/polymarket/public_tradesList public_trades for Polymarket
Requires one of:
market_id — requests satisfying none of these return 400.Parameters
market_idquerybigintoptionalFilter to trades on a single Polymarket market.
token_idquerystringoptionalFilter to trades for a single outcome token (clobTokenId).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/public_trades?market_id=1'Responses
200public_trades rows matching the declared filter set, wrapped in { public_trades, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/public_trades/{id}Get a single public_trade by id
Parameters
idpathbigintrequiredPrimary key (id) of the public_trade row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/public_trades/{pk_value}'Responses
200Single public_trade row.application/jsonshow example ▸
404Row not found.
token_snapshots
polymarket.token_snapshotsToken-level snapshots on Polymarket — the bid, ask, and last trade price for each outcome token captured over time as the market trades. Critical for multi-outcome markets where each token moves independently. Coverage begins 2026-04; cadence is roughly 1-2 hours.
▸Fields5
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| market_id | bigint | Denormalized for market-level queries e.g. 1 | |
| token_id | string | Polymarket clobTokenId e.g. 11205199261467113320159240005096995304332333883272177893362… | |
| captured_at | timestamptz | — | — e.g. 2026-04-03T03:33:29.023Z |
| price_bps | integer | — | Price in basis points (0-10000) e.g. 10000 |
GET/api/v1/polymarket/token_snapshotsList token_snapshots for Polymarket
Requires one of:
token_id — requests satisfying none of these return 400.Parameters
token_idquerystringoptionalFilter to snapshots for a single Polymarket outcome token (clobTokenId).
market_idquerybigintoptionalFilter to snapshots for all tokens in a single market (denormalized for market-level queries).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/token_snapshots?token_id=example'Responses
200token_snapshots rows matching the declared filter set, wrapped in { token_snapshots, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonGET/api/v1/polymarket/token_snapshots/{id}Get a single token_snapshot by id
Parameters
idpathbigintrequiredPrimary key (id) of the token_snapshot row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/token_snapshots/{pk_value}'Responses
200Single token_snapshot row.application/jsonshow example ▸
404Row not found.
Misc· 1 table
sports
polymarket.sportsSport categories used on Polymarket — basketball, football, baseball, hockey, soccer, MMA, and other tags that organize sports markets. Small reference table (~20 rows).
▸Fields5
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| sport_id | integernullable | Polymarket sport ID from API e.g. — (all-null in sample) | |
| fetched_at | timestamptz | — | — e.g. — (all-null in sample) |
| name | string | — | Display name, e.g. "NBA" e.g. — (all-null in sample) |
| tag_slug | string | — | e.g. "nba", "nfl", "soccer" e.g. — (all-null in sample) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/polymarket/sportsList sports for Polymarket
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/sports?limit=3'Responses
200sports rows matching the declared filter set, wrapped in { sports, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/json503Coming soon — handler returns 503 until data is wired in.
GET/api/v1/polymarket/sports/{id}Get a single sport by id
Parameters
idpathbigintrequiredPrimary key (id) of the sport row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/polymarket/sports/{pk_value}'Responses
200Single sport row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.