GET /perps/skew: Long/Short Account Skew
curl --request GET \
--url https://partner-api.bravadotrade.com/perps/skewimport requests
url = "https://partner-api.bravadotrade.com/perps/skew"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/perps/skew', 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/perps/skew",
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/perps/skew"
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/perps/skew")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/perps/skew")
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{
"available": true,
"reason": "<string>",
"instrument": "<string>",
"venue": "<string>",
"at_ms": 123,
"snapshot_ts_ms": 123,
"universe_size": 123,
"universe_class": "<string>",
"observed_universe_only": true,
"sweep_age_ms": 123,
"completeness": {},
"long_accounts": 123,
"long_contracts": "<string>",
"concentration": {},
"series": [
{}
]
}Perps data
GET /perps/skew: Long/Short Account Skew
Long and short account counts, exact contract sums and concentration for a Polymarket Perps instrument, point-in-time or as a series of 1-minute bars, over the observed account universe. Scope analytics.read.
GET
/
perps
/
skew
GET /perps/skew: Long/Short Account Skew
curl --request GET \
--url https://partner-api.bravadotrade.com/perps/skewimport requests
url = "https://partner-api.bravadotrade.com/perps/skew"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/perps/skew', 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/perps/skew",
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/perps/skew"
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/perps/skew")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/perps/skew")
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{
"available": true,
"reason": "<string>",
"instrument": "<string>",
"venue": "<string>",
"at_ms": 123,
"snapshot_ts_ms": 123,
"universe_size": 123,
"universe_class": "<string>",
"observed_universe_only": true,
"sweep_age_ms": 123,
"completeness": {},
"long_accounts": 123,
"long_contracts": "<string>",
"concentration": {},
"series": [
{}
]
}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.
at, or a series of 1-minute bars with from and to. Part of the Perps Data product; scope analytics.read.
Skew is measured over the observed (gated) account universe, not every counterparty on the venue.
universe_size is how many accounts the snapshot covers, and the completeness gap reports what it could not see. Read these as skew across the accounts Bravado observes, not as the whole market’s positioning.GET https://partner-api.bravadotrade.com/perps/skew
Query Parameters
string
required
The instrument, by its venue-native id (for example
6). Skew takes the venue-native id only — it carries no canonical symbol. Matches [A-Za-z0-9._-]{1,32}.string
Point-in-time mode: the moment to read the snapshot as of. Accepts RFC3339, unix seconds or unix milliseconds. Defaults to now. Ignored when
from/to are given.string
Series mode: start of the window. Returns 1-minute bars. Same formats as
at.string
Series mode: end of the window. The window may span at most 3 days; a wider range is refused with
400 range_too_large.integer
default:"1000"
Rows per page in series mode,
1–5000.Response
In point-in-time mode, one snapshot. In series mode, an array of 1-minute snapshots underseries, oldest first. When no snapshot exists for the requested moment, the response is available: false with a reason — never a zeroed snapshot.
boolean
false when no snapshot exists for the requested moment; a reason accompanies it. true otherwise. A missing snapshot is never served as zeroed counts.string
Present when
available is false: why no snapshot could be served.string
The instrument the snapshot is for.
string
The venue.
integer
The requested point-in-time, in unix milliseconds (
at_offset_ms is how far the served snapshot sits from it).integer
When the served snapshot was taken, in unix milliseconds (
snapshot_ts in seconds); computed_ts_ms / computed_ts is when it was computed.integer
How many accounts the snapshot covers — the size of the observed (gated) universe, not the whole venue.
string
The class of the observed universe.
boolean
Always
true: the snapshot is over the observed account universe, not every counterparty.integer
How old the underlying account sweep is, in milliseconds.
object
What the snapshot could and could not observe, so you can judge how complete the skew is.
integer
Number of accounts net long in the observed universe (
short_accounts and flat_accounts complete the split).string
Exact sum of long contracts across the observed universe (
short_contracts, long_minus_short_contracts, long_share_of_oi_bps, long_vs_oi_gap_contracts, total_notional_usd and oi complete the aggregate).object
top10, whale and rest buckets, each with share_bps, contracts and accounts.array
Series mode only: an array of 1-minute snapshots with the same per-snapshot fields.
Example
curl -G https://partner-api.bravadotrade.com/perps/skew \
-H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
-H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
-H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
-d instrument=6 \
-d at=2026-10-01T12:00:00Z
{
"available": true,
"instrument": "6",
"venue": "polymarket",
"at_ms": 1759320000000,
"snapshot_ts_ms": 1759319995800,
"universe_size": 3152,
"universe_class": "observed",
"observed_universe_only": true,
"sweep_age_ms": 4200,
"completeness": { "observed_accounts": 3152, "coverage_bps": 10000 },
"long_accounts": 1842,
"short_accounts": 1310,
"flat_accounts": 0,
"long_contracts": "58240.00",
"short_contracts": "49110.00",
"long_minus_short_contracts": "9130.00",
"total_notional_usd": "9654000000.00",
"oi": "107350.00",
"concentration": {
"top10": { "share_bps": 4100, "contracts": "44013.50", "accounts": 10 },
"whale": { "share_bps": 2200, "contracts": "23617.00", "accounts": 4 },
"rest": { "share_bps": 3700, "contracts": "39719.50", "accounts": 3138 }
}
}
{
"instrument": "6",
"available": false,
"reason": "no_snapshot"
}
Related
- Liquidations — detected liquidations over the same observed account universe.
- Perps Data overview — the product, its credential and shared conventions.