Skip to main content

Documentation Index

Fetch the complete documentation index at: https://polynode.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Aggregated lifetime stats for a single outcome token: total trades, buy/sell split in USDC, total share volume. Enriched with market question, slug, outcome label, image, and condition_id. Computed from v2.fill, bucketing each fill into buy (someone paid USDC to get the token) or sell (someone paid the token to get USDC).

Request

GET /clobv2/markets/{token_id}/volume

Authentication

Paid tier required. See /clobv2/trades for auth formats.

Path parameters

ParameterTypeRequiredDescription
token_idstringYesOutcome token ID (uint256 as decimal string).
No query parameters.

Parameter validation

  • token_id: 1-78 digits, ^[0-9]+$.

Response

{
  "token_id": "32530407925029104312458780580530294728135746429755854137976885977399961033740",
  "source": "onchain-v2",
  "found": true,

  "total_trades": 1,
  "buys": 1,
  "sells": 0,
  "volume_usdc": 1.344,
  "buy_volume_usdc": 1.344,
  "sell_volume_usdc": 0.0,
  "volume_shares": 5.6,

  "market": "Solana Up or Down - April 20, 2:10AM-2:15AM ET",
  "slug": "sol-updown-5m-1776665400",
  "outcome": "Up",
  "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/SOL+fullsize.png",
  "condition_id": "0x1ee2fb3f919aa7c307565db03241926252666691aca6d7185af4654df603efdc"
}

Response fields

FieldTypeDescription
token_idstringEchoes the path parameter.
sourcestringAlways "onchain-v2".
foundbooleantrue if this token has at least one fill on v2, false otherwise (all volume fields will be zero).
total_tradesintegerTotal number of fills that touched this token.
buys / sellsintegerCount of buy and sell fills. A “buy” = someone paid USDC to receive this token; a “sell” = someone paid this token to receive USDC.
volume_usdcnumberTotal USDC that changed hands on this token (buy + sell).
buy_volume_usdcnumberUSDC spent buying the token.
sell_volume_usdcnumberUSDC received from selling the token.
volume_sharesnumberTotal outcome shares that changed hands.
marketstring | nullMarket question.
slugstring | nullPolymarket URL slug.
outcomestring | nullOutcome label.
imagestring | nullCDN URL of the market icon.
condition_idstring | nullParent market condition_id.
Unlike the trade endpoints, numeric fields here are returned as JSON numbers (not strings). Precision is still preserved for amounts ≤ 2^53.

Examples

curl "https://api.polynode.dev/clobv2/markets/32530407925029104312458780580530294728135746429755854137976885977399961033740/volume" \
  -H "x-api-key: pn_live_..."

Error responses

StatusBodyWhen
400{"error": "invalid token_id ..."}Path param isn’t a positive integer string.
401{"error": "missing API key ..."}No key or bad key.
402{"error": "paid plan required ..."}Free tier.
429{"error": "rate limit exceeded", "reset_at": <unix>}Rate limit hit.
5xx{"error": "upstream gateway error"}Transient upstream; retried once.

Notes

  • Returns found: false (not a 404) when the token_id has no v2 fills yet — all counts/volume fields are zero, metadata fields are null.
  • Volume is cumulative lifetime — not time-windowed. Use /clobv2/volume/hourly for time-sliced aggregates or /clobv2/candles/{token_id} for per-token time series.
  • total_trades = buys + sells always.