GET /v2/data/combos/trades: Combo Trades
curl --request GET \
--url https://partner-api.bravadotrade.com/v2/data/combos/tradesimport requests
url = "https://partner-api.bravadotrade.com/v2/data/combos/trades"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/v2/data/combos/trades', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.bravadotrade.com/v2/data/combos/trades",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.bravadotrade.com/v2/data/combos/trades"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.bravadotrade.com/v2/data/combos/trades")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/v2/data/combos/trades")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"trades": [
{
"trade_id": "<string>",
"tx_hash": "<string>",
"log_index": 123,
"block_number": 123,
"timestamp": 123,
"block_time": "<string>",
"venue": "<string>",
"combo_id": "<string>",
"wallet": "<string>",
"counterparty": "<string>",
"role": "<string>",
"side": "<string>",
"outcome_index": 123,
"outcome": "<string>",
"leg_count": 123,
"legs": [
{}
],
"price": "<string>",
"shares": "<string>",
"notional": "<string>",
"fee": "<string>",
"max_payout": "<string>",
"status": "<string>",
"realized_pnl": {},
"builder": {}
}
],
"next_cursor": {}
}Combos Data API
GET /v2/data/combos/trades: Combo Trades
Every combo settlement on Polymarket, newest first, with the combo’s legs, its resolution at read time and realized PnL once resolved.
GET
/
v2
/
data
/
combos
/
trades
GET /v2/data/combos/trades: Combo Trades
curl --request GET \
--url https://partner-api.bravadotrade.com/v2/data/combos/tradesimport requests
url = "https://partner-api.bravadotrade.com/v2/data/combos/trades"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/v2/data/combos/trades', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.bravadotrade.com/v2/data/combos/trades",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.bravadotrade.com/v2/data/combos/trades"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.bravadotrade.com/v2/data/combos/trades")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/v2/data/combos/trades")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"trades": [
{
"trade_id": "<string>",
"tx_hash": "<string>",
"log_index": 123,
"block_number": 123,
"timestamp": 123,
"block_time": "<string>",
"venue": "<string>",
"combo_id": "<string>",
"wallet": "<string>",
"counterparty": "<string>",
"role": "<string>",
"side": "<string>",
"outcome_index": 123,
"outcome": "<string>",
"leg_count": 123,
"legs": [
{}
],
"price": "<string>",
"shares": "<string>",
"notional": "<string>",
"fee": "<string>",
"max_payout": "<string>",
"status": "<string>",
"realized_pnl": {},
"builder": {}
}
],
"next_cursor": {}
}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.
role=taker, the aggregate fill whose wallet is the trader who took liquidity). Each row carries the combo’s legs, the combo’s status at read time and realized_pnl once the combo resolved.
GET https://partner-api.bravadotrade.com/v2/data/combos/trades
Query Parameters
string
Fills at or after this time. ISO-8601, or epoch seconds / milliseconds.
string
Fills before this time. Same formats as
start_time.string
Fills where
wallet is this address.string
Fills on this combo. bytes31 or the padded 32-byte form.
string
Fills on combos with this market as a leg. V2 condition id, Gamma
conditionId or Gamma numeric market id.string
Combo resolution at read time. One of
unresolved, win, loss, partial.string
default:"taker"
Which side of each settlement to return.
taker is the one aggregate fill per settlement, maker the market-maker fills it matched, all both.number
Minimum
notional of the fill.integer
default:"50"
Page size, 1 to 200.
string
Opaque. Pass back the previous page’s
next_cursor.Response
array
Show ComboTrade fields
Show ComboTrade fields
string
<tx_hash>:<log_index>.string
Polygon transaction hash.
integer
Index of the fill log within the transaction.
integer
Polygon block number.
integer
Block time, epoch milliseconds.
string
Block time, ISO-8601.
string
Always
polymarket.string
The combo’s condition id (bytes31).
string
Owner of the filled order: the trader on a taker row, the market maker on a maker row.
string
The other side; the exchange itself on a taker fill.
string
taker (the settlement) or maker.string
BUY or SELL.integer
0 for YES, 1 for NO.string
YES or NO side of the combo.integer
Number of legs.
array
Same leg objects as
GET /v2/data/combos.string
Fill price per share, decimal string with 8 places.
string
Shares filled.
string
price × shares, in pUSD.string
Fee charged in pUSD, on both BUY and SELL.
string
Payout if the combo wins (
shares at 1).string
The combo’s resolution at read time:
unresolved, win, loss or partial.string | null
Taker-side PnL of this fill given the combo’s resolution.
null until the combo resolves.string | null
Builder address attributed to the order, when the order carried one.
string | null
Pass back as
cursor for the next page. null on the last page.Errors
| Status | When |
|---|---|
400 Bad Request | INVALID_TIME, INVALID_CURSOR, INVALID_COMBO_ID, INVALID_MARKET, or a status / role / limit outside the allowed values |
401 Unauthorized | Missing or invalid HMAC credentials, or not a Data API key |
429 Too Many Requests | Rate limit exceeded, see Retry-After header |
Example
curl -G https://partner-api.bravadotrade.com/v2/data/combos/trades \
-H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
-H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
-H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
-d wallet=0xabc123...def456 \
-d start_time=2026-10-18T00:00:00Z \
-d limit=1
{
"trades": [
{
"trade_id": "0x7f1e...c0:3",
"tx_hash": "0x7f1e...c0",
"log_index": 3,
"block_number": 95620114,
"timestamp": 1792436405000,
"block_time": "2026-10-19T09:00:05.000Z",
"venue": "polymarket",
"combo_id": "0x03a1...9f",
"wallet": "0xabc123...def456",
"counterparty": "0xe333...00Aa",
"role": "taker",
"side": "BUY",
"outcome_index": 0,
"outcome": "YES",
"leg_count": 3,
"legs": [ { "leg_index": 0, "condition_id": "0x01b2...00", "question": "Will the Lakers win on Sunday?", "outcome": "Yes" } ],
"price": "0.14000000",
"shares": "100.000000",
"notional": "14.000000",
"fee": "0.060200",
"max_payout": "100.000000",
"status": "unresolved",
"realized_pnl": null,
"builder": null
}
],
"next_cursor": "eyJ0IjoxNz..."
}
Related
GET /v2/data/combos/leaderboardfor wallets ranked over these fills.WSS /stream/polymarket/partner/combosfor the same rows live.