Skip to main content
Sign each request with a fresh HMAC signature. The cURL and HTTP header values below are placeholders, not reusable credentials. For runnable signing code, use request signing examples.
The Combos Data API covers Polymarket Combos (multi-leg parlays) across the whole venue, not only the combos placed through Bravado. Every settlement on the Combos exchange is indexed from Polygon, and each combo’s legs are normalised so an underlying market can be queried on its own. It is part of the Data API product: same key, same gate and same credit model as /trader-analytics/*. It is independent of the Combos API, which is the execution surface (/v2/trade/combo/*). The base URL is https://partner-api.bravadotrade.com and every route lives under /v2/data.

Authentication

Requests are signed with a Data API credential (analytics.read scope) using the three HMAC headers. See authentication. A Trade API or WebSockets key is refused with 401.
Create or manage a Data API credential in Console.

All Endpoints

Every HTTP call costs 1 API credit, including a 400 or 404 answer. See API credits.

Identifiers

Wherever a route accepts market=, you may pass the leg market in any of three forms: its V2 condition id (bytes31 or padded), Gamma’s 32-byte conditionId, or Gamma’s numeric market id.

Counting rule

The Combos exchange emits one fill per maker order matched plus one aggregate fill for the taker order, whose counterparty is the exchange itself. That aggregate row is one settlement. Volume, trade counts, stats and the default leaderboard count those rows only (role=taker), so a settlement matched against three market makers is counted once, not four times. role=maker returns the other side of each settlement, role=all both. On a taker row wallet is the trader who took liquidity; on a maker row it is the market maker. fee is charged in collateral (pUSD) on both sides and is reported as-is, for a BUY as much as for a SELL.

Numbers, times, resolution

  • Money and shares are decimal strings with a fixed scale (8 places for price, 6 for amounts). Parse them with an arbitrary-precision type, never a float. See Numeric conventions.
  • timestamp is epoch milliseconds; block_time and every *_at field are ISO-8601.
  • A combo’s resolution / status is one of unresolved, win (YES paid in full), loss (a leg lost) or partial (a leg split its payout), as known at read time.
  • realized_pnl on a trade is null until the combo resolves. It is never reported as 0 when unknown.
  • Data lags the chain by finality (about 1 to 2 minutes). Coverage starts at the launch of Polymarket Combos.

Pagination

The two list routes page with an opaque cursor: pass back the next_cursor of the previous page until it is null. limit is 1 to 200 (default 50). The leaderboard takes limit 1 to 100 (default 25) and does not page.

Errors

All errors are { "error": "...", "code": "..." }. See the Error reference.