/v2/account/classification Declare your market-data classification
account_submitClassification
Records whether you use market data as a professional or non-professional subscriber and returns the stored record. A non_professional declaration takes effect on your next request.
Request body
application/jsonrequired
Details
The body is {"classification": "non_professional"} or {"classification": "professional"}; any other value is 400 invalid_params. A professional declaration is recorded but does not unlock data that requires a non-professional declaration, and it is final: a later non_professional submit returns the existing record unchanged, with locked: true.
Example
POST /v2/account/classification{
"data": {
"attested": true,
"submitted_at": 1789185753185,
"classification": "non_professional",
"locked": false
},
"meta": { "caps": { "tier": "pro", "flow": true, "applied": [] } }
}Response
Prices are dollars, timestamps epoch milliseconds, strikes integer thousandths of a dollar; null means unknown. Units →
200application/json
{attested, submitted_at, classification, locked} in data — the stored record after an accepted submit (attested_at refreshed); once professional has locked the account, a non_professional submit is refused with the unchanged existing record (locked: true, submitted_at not refreshed)
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
CBOE attestation status (drives attested in entitlement checks).
attested boolean required classification string nullable The stored classification — the CBOE vocabulary word professional | non_professional (None = never submitted).
locked boolean A stored professional classification is final — a later non_professional submit is refused — and this flag reports the account is locked (false until professional is on record). Only ITMatrixHQ support can unlock it; there is no endpoint for it.
submitted_at integer · int64 nullable epoch ms Submit time, epoch-ms (None = never submitted).
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 |
|---|---|
| 400 |
|
| 401 |
|
| 503 |
|