v2.fill, bucketing each fill into buy (someone paid USDC to get the token) or sell (someone paid the token to get USDC).
Request
Authentication
Paid tier required. See/clobv2/trades for auth formats.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
token_id | string | Yes | Outcome token ID (uint256 as decimal string). |
Parameter validation
token_id: 1-78 digits,^[0-9]+$.
Response
Response fields
| Field | Type | Description |
|---|---|---|
token_id | string | Echoes the path parameter. |
source | string | Always "onchain-v2". |
found | boolean | true if this token has at least one fill on v2, false otherwise (all volume fields will be zero). |
total_trades | integer | Total number of fills that touched this token. |
buys / sells | integer | Count of buy and sell fills. A “buy” = someone paid USDC to receive this token; a “sell” = someone paid this token to receive USDC. |
volume_usdc | number | Total USDC that changed hands on this token (buy + sell). |
buy_volume_usdc | number | USDC spent buying the token. |
sell_volume_usdc | number | USDC received from selling the token. |
volume_shares | number | Total outcome shares that changed hands. |
market | string | null | Market question. |
slug | string | null | Polymarket URL slug. |
outcome | string | null | Outcome label. |
image | string | null | CDN URL of the market icon. |
condition_id | string | null | Parent market condition_id. |
Examples
Error responses
| Status | Body | When |
|---|---|---|
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": "temporary_data_provider_error"} | Temporary data provider issue. Retry with backoff. |
Notes
- Returns
found: false(not a 404) when the token_id has no v2 fills yet — all counts/volume fields are zero, metadata fields arenull. - Volume is cumulative lifetime — not time-windowed. Use
/clobv2/volume/hourlyfor time-sliced aggregates or/clobv2/candles/{token_id}for per-token time series. total_trades = buys + sellsalways.

