Venue Statistics
This is the context the generated Reference pages cannot carry. Each of the three operations has its own page rendered from the contract; what follows is what they share — why they are public, what the figures mean, and the three places a plausible reading is wrong.
Aggregate venue telemetry: cumulative traded volume, open interest, and the distribution of account balances. Three operations, all public — they declare security: [], so no API key is needed.
These are the venue-wide figures. Per-account state lives on the Account pages in the Reference sidebar and the Positions pages.
Aggregate by construction — and that is a guarantee, not a limitation
Every schema on this page is documented as carrying no per-account data at all: "Aggregate only — it carries no account id, address, or per-account volume by construction." That is the contract's own wording, and it is the reason these endpoints are public while everything on Account is not.
If you are building a public dashboard, a market-data page, or an agent that needs venue context, these are the endpoints to use. Do not derive venue aggregates by fanning out over per-account reads.
On this page
Two more /stats operations are documented elsewhere. GET /stats (venue snapshot) and GET /stats/history (throughput samples) are tagged Markets in the contract and are covered on GET /stats. All five are public.
None of the three operations here has an /api/v1 twin — they are gateway paths only.
Testnet data is illustrative, and the contract says so in-band
All three responses carry two fields you should surface rather than strip:
testnet
boolean, always true today. The data is illustrative.
note
a human-readable disclaimer, including the one-sided-versus-gross warning on open interest
Figures restart when the service does — these are indexer-local projections, not an all-time ledger. coverage_start_ms on the volume response is what tells you how far back a total actually reaches.
Decimals are strings
Every notional figure is a lossless decimal serialized as a string (the Decimal schema). Parse with a decimal type, never a float. account_count and count are JSON integers; timestamps are Unix epoch milliseconds (TimestampMs).
The two sides are never pre-summed, and the naming is deliberate
Read this before captioning any number from this endpoint.
long_oi_quote(orshort_oi_quote) is the figure to caption. On a matched book the two are equal by construction; a persistent difference means the projection has desynced from the engine.gross_oi_two_sided_quoteislong + short— twice the one-sided figure. It is namedgrossandtwo_sidedprecisely so it cannot be passed off as the one-sided total.Venue figures are quote-only. There is deliberately no venue-wide base-unit total: base units do not add across markets, so the contract refuses to publish a number with no coherent unit rather than publish one.
Related
GET /stats—GET /statsandGET /stats/history, plus per-market summaries and risk parameters.the Tickers pages in the Reference sidebar — 24-hour rolling price and volume statistics per market.
Schemas — component schema reference.
Open questions
Gaps in the contract, flagged rather than filled:
No schemas are declared for the sub-objects' bounds types.
BalanceBucket.minandmaxcarry descriptions but no declared type in the contract; they are documented here as decimal strings on the strength of "in USDX collateral" and the page-wide decimal convention.testnetis typed as a boolean but documented as "alwaystrue". There is no stated behaviour for a deployment where it would befalse, and no operation exposes which deployment you are talking to.Retention is unstated. All three are described as restarting with the service, but no retention window, buffer size, or checkpoint cadence is given — so how far back
coverage_start_mscan reach is not knowable from the contract.quote_errorvalues are not enumerated. Three causes are described in prose (no mark mirrored, stale mark, overflow) but the strings themselves are not specified, so they cannot be branched on safely.
Last updated

