Skip to main content
GET
Get a trader's closing line value on large trades
Use this endpoint to see whether a wallet gets better prices than the market settles on before kickoff. Closing line value (CLV) compares each large trade’s price with the market’s closing line, and this endpoint summarises it over the wallet’s large trades in a window. The trades are the ones Large trade history returns with trader set to the same wallet and the same from, to, min_size, and category. Each of those trades carries its own clv, so you can rebuild every figure here from them.

Parameters

How CLV is measured

A trade’s clv_cents is positive when the trader beat the close:
  • On a buy, it is the closing price minus the price paid, times 100.
  • On a sell, it is the price received minus the closing price, times 100.
Both use the price of the outcome traded, so the figure is in cents per share, where a winning share pays $1. It does not subtract fees. It uses the exact price the trade filled at, so recomputing it from the trade’s price, which is rounded to 4 decimal places, can differ by up to 0.005 cents. Only trades placed before kickoff have a CLV; a trade during the game is counted in excluded.in_play.

Key response fields

The averages are null when no trade has a CLV, never 0.

Example

What it does not return

  • The wallet’s smaller trades. Only trades at or above min_size that 0xinsider records as large trades are counted.
  • CLV after fees, or the price a trade moved to minutes after it filled.
  • A summary from part of the window. A window with more than 25,000 large trades returns 400; narrow it or raise min_size.
  • A wallet 0xinsider has no record of. That returns 404.

Caching

Save the response’s ETag and send it in If-None-Match on your next request. If nothing has changed, the server returns 304 Not Modified with no body. Send to to get a stable window, because the default to is the time of the request.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict
If-None-Match
string

Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.

Path Parameters

address
string
required

Wallet address (0x...), username, or trd_-prefixed trader id.

Query Parameters

from
string<date-time>

Inclusive RFC3339 lower bound on the trade time. Defaults to 90 days before to.

to
string<date-time>

Exclusive RFC3339 upper bound on the trade time. Defaults to now; must be after from, and at most 366 days after it.

min_size
number
default:5000

Minimum trade size in USD. The capture floor was 3,000 USD before 2026-07-06 and 10,000 USD from then (1,000 USD in earnings markets), so 10000 gives one size rule across the whole archive. From 2026-09-23 a fill must also be at least 0.1% of its market's recorded traded volume (Polymarket's own share count); rows written before that date were not re-filtered.

category
string

Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657).

Response

The wallet's closing line value over its large trades in the window.

object
string
required
Allowed value: "trader_clv"
data
object
required

Closing line value over one wallet's large trades in a window (#32517).

meta
object
required