/v2/account/usage Get your API usage
account_getUsage
Your own request counts per day over the last 30 days, split by scope group, with window totals and your current rate limit. Use it to see where your requests go.
Details
Scope groups are the OpenAPI tags (analytics.gex, market.reference and so on). rate_limit.per_min is the same value as the x-ratelimit-limit header on requests made with an API key. quota is not reported yet and is always absent for now.
Units
count values are requests; date is a UTC calendar day, YYYY-MM-DD.
Freshness
Counts are provisional: they are not billing figures and may not include every request.
Empty results
Before you make any requests, by_day is empty and totals_by_scope_group is {}.
Example
GET /v2/account/usage{
"data": {
"trailing_days": 30,
"by_day": [
{
"date": "2026-09-27",
"scope_group": "analytics.gex",
"count": 4
}
],
"totals_by_scope_group": { "analytics.gex": 4 },
"rate_limit": { "per_min": 600 }
},
"meta": { "caps": { "tier": "pro", "applied": [] } }
}Response
Prices are dollars, timestamps epoch milliseconds, strikes integer thousandths of a dollar; null means unknown. Units →
200application/json
{trailing_days, by_day, totals_by_scope_group, rate_limit, quota?} in data
object
A successful response: the payload consumers parse plus response metadata. data shapes are the platform types — never reshaped by the envelope.
data object required
data shape for GET /v2/account/usage.
by_day array<UsageDay> required
Per-(day, scope-group) counts, ascending. Empty when nothing recorded.
count integer · int64 required Metered request count for that day + scope group.
date string required ISO date Civil date, YYYY-MM-DD (UTC).
scope_group string required The scope group (OpenAPI tag) the requests fell under.
quota object nullable
Monthly quota position. Not reported yet: quota is always absent from the response for now.
limit integer · int64 required resets_at integer · int64 required epoch ms Reset instant, epoch-ms.
used integer · int64 required rate_limit object required
Your current rate limit.
per_min integer · int32 required Requests-per-minute cap for the caller's tier.
totals_by_scope_group map<string, integer · int64> required Window totals per scope group.
trailing_days integer · int32 required Width of the trailing window, in days.
meta object required
Response metadata.
caps object nullable
meta.caps — the entitlement caps that shaped this response. applied lists the caps that actually changed it (for example range_clamped).
applied array<string> required Which caps actually shaped this response (e.g. range_clamped). Empty = nothing was clamped.
darkpool boolean nullable Whether this account can use Off-Exchange in the site.
flow boolean nullable Whether the OPRA option-flow capability (flow) is granted to this principal in the app: site Pro plus a CBOE non-professional attestation (never on an itm_ key). Emitted explicitly — true and false — by the account endpoints, so the app reads the grant instead of inferring it from tier and attestation; absent on routes that do not report it.
gexDepth string nullable GEX data depth when the route reports it. Camel-cased to match the browser capability bundle; absent on unrelated routes.
tier string required The tier the request was served under.
cursor string nullable Opaque continuation cursor (pass back as ?cursor=); absent when there is nothing more to read.
plane string nullable Which serving tier answered the read (meta.plane). Informational provenance: treat it as an opaque label, because new values may appear.
Errors
Every error is the JSON error envelope; branch on error.code.
| Status | Meaning |
|---|---|
| 401 |
|