orderflow
Provides a real-time snapshot of key orderflow metrics for the nearest and next expiries. This includes aggregated and net taker exposure (DEX), GEX, convexity, vanna, and charm, as well as orderflow indicators that measure the change in these exposures per second.
chart
Powers the orderflow charts — net gex, net convexity, dex orderflow, aggregate dex, and more.
Provides a real-time snapshot of key orderflow metrics for the nearest and next expiries. This includes aggregated and net taker exposure (DEX), GEX, convexity, vanna, and charm, as well as orderflow indicators that measure the change in these exposures per second.
Subscription
Requires an Orderflow subscription or higher.
Metric Concepts & Calculation Rules
Orderflow metrics separate into three distinct calculation classes:
1. Cumulative Session Flow (agg_*)
- Behavior: Running sum of transaction delta since session open (09:30 ET).
- Reset: Resets to zero every morning at 09:30 ET market open.
- Fields:
agg_dex,agg_call_dex,agg_put_dex,one_agg_dex,one_agg_call_dex,one_agg_put_dex. - Interpretation: Measures cumulative market order pressure throughout the trading day.
2. Current Chain Net Exposure (net_*, *cvr, *gr, *vanna, *charm)
- Behavior: Net taker exposure calculated across all active strikes for the current state of the chain.
- Fields:
net_dex,net_call_dex,net_put_dex,zcvr,ocvr,zgr,ogr,zvanna,ovanna,zcharm,ocharm. - Interpretation: Measures instantaneous structural taker gamma, delta, vanna, and charm exposure across the active chain.
3. Instantaneous Flow Velocity (*oflow)
- Behavior: Measures the change in taker exposures over the last second.
- Fields:
dexoflow,one_dexoflow,gexoflow,one_gexoflow,cvroflow,one_cvroflow. - Interpretation: Identifies acute transaction bursts and real-time execution spikes.
4. Expiry Prefix System
| Prefix | Expiration Horizon | Description |
|---|---|---|
z_ / zero_ / un-prefixed | 0 DTE (Nearest Expiry) | Contracts expiring in the current trading session. |
o_ / one_ | 1 DTE (Next Expiry) | Contracts expiring in the next scheduled trading session. |
Request
Example: /SPX/orderflow/orderflow
Headers
| Name | Type | Description |
|---|---|---|
Authorization | string | Required. Format: "Bearer <YOUR_API_KEY>" |
User-Agent | string | Required. Identify your client application. |
Accept | string | Required. Set to "application/json". |
Path parameters
| Name | Type | Description |
|---|---|---|
ticker | string | Ticker symbol from GET /tickers, for example SPX or ES_SPX. |
category | string | Orderflow data category. Set to orderflow. |
Response
| Field | Type | Description |
|---|---|---|
timestamp | integer | Unix timestamp in seconds of the snapshot. |
ticker | string | The ticker symbol for the requested asset. |
spot | number | The spot price of the underlying asset. null when spot data is not available to the caller. |
z_mlgamma | number | Nearest Expiry Major Long Gamma level (taker long convexity). |
z_msgamma | number | Nearest Expiry Major Short Gamma level (taker short convexity). |
o_mlgamma | number | Next Expiry Major Long Gamma level. |
o_msgamma | number | Next Expiry Major Short Gamma level. |
zero_mcall | number | Nearest Expiry Major Call exposure level from GEX Profile. |
zero_mput | number | Nearest Expiry Major Put exposure level from GEX Profile. |
one_mcall | number | Next Expiry Major Call exposure level from GEX Profile. |
one_mput | number | Next Expiry Major Put exposure level from GEX Profile. |
zcvr | number | Nearest Expiry Net Convexity (long gex - short gex). |
ocvr | number | Next Expiry Net Convexity. |
zgr | number | Nearest Expiry Net GEX imbalance (call gex imbalance - put gex imbalance). |
ogr | number | Next Expiry Net GEX. |
zvanna | number | Nearest Expiry Net Vanna exposure ($MM until expiry). |
ovanna | number | Next Expiry Net Vanna exposure ($MM until expiry). |
zcharm | number | Nearest Expiry Net Charm exposure ($MM/hr). |
ocharm | number | Next Expiry Net Charm exposure ($MM/hr). |
agg_dex | number | Cumulative delta from all transactions so far that day for the nearest expiry (0 DTE). |
one_agg_dex | number | Cumulative delta from all transactions so far that day for the next expiry (1 DTE). |
agg_call_dex | number | Cumulative delta from call transactions so far that day for the nearest expiry (0 DTE). |
one_agg_call_dex | number | Cumulative delta from call transactions so far that day for the next expiry (1 DTE). |
agg_put_dex | number | Cumulative delta from put transactions so far that day for the nearest expiry (0 DTE). |
one_agg_put_dex | number | Cumulative delta from put transactions so far that day for the next expiry (1 DTE). |
net_dex | number | Net taker delta exposure across the current chain (DEX ladder) for the nearest expiry (0 DTE). |
one_net_dex | number | Net taker delta exposure across the current chain (DEX ladder) for the next expiry (1 DTE). |
net_call_dex | number | Net taker delta exposure from call positions across the current chain for the nearest expiry (0 DTE). |
one_net_call_dex | number | Net taker delta exposure from call positions across the current chain for the next expiry (1 DTE). |
net_put_dex | number | Net taker delta exposure from put positions across the current chain for the nearest expiry (0 DTE). |
one_net_put_dex | number | Net taker delta exposure from put positions across the current chain for the next expiry (1 DTE). |
dexoflow | number | DEX Orderflow (change in taker delta over the last second) for the nearest expiry (0 DTE). |
one_dexoflow | number | DEX Orderflow (change in taker delta over the last second) for the next expiry (1 DTE). |
gexoflow | number | GEX Orderflow (change in taker gamma over the last second) for the nearest expiry (0 DTE). |
one_gexoflow | number | GEX Orderflow (change in taker gamma over the last second) for the next expiry (1 DTE). |
cvroflow | number | Convexity Orderflow (change in taker convexity over the last second) for the nearest expiry (0 DTE). |
one_cvroflow | number | Convexity Orderflow (change in taker convexity over the last second) for the next expiry (1 DTE). |
{
"timestamp": 1753283592,
"ticker": "SPX",
"spot": 6326.27,
"z_mlgamma": 6329.46,
"z_msgamma": 6335.55,
"o_mlgamma": 6299.44,
"o_msgamma": 6331.2,
"zero_mcall": 6345,
"zero_mput": 6280.08,
"one_mcall": 6330.08,
"one_mput": 6300,
"zcvr": -1908.01,
"ocvr": -648.1,
"zgr": -628.29,
"ogr": 155.51,
"zvanna": 130.96,
"ovanna": 481.58,
"zcharm": 14.62,
"ocharm": 8.68,
"agg_dex": -1150.22,
"one_agg_dex": -977.58,
"agg_call_dex": -949.2,
"one_agg_call_dex": -761.53,
"agg_put_dex": -201.02,
"one_agg_put_dex": -216.05,
"net_dex": -1024.74,
"one_net_dex": -977.82,
"net_call_dex": -723.98,
"one_net_call_dex": -773.31,
"net_put_dex": -300.76,
"one_net_put_dex": -204.51,
"dexoflow": 2.23,
"gexoflow": -26.74,
"cvroflow": 29.89,
"one_dexoflow": 0,
"one_gexoflow": -0.01,
"one_cvroflow": 0.04
}{
"type": "object",
"properties": {
"timestamp": {
"type": "integer",
"format": "int64"
},
"ticker": {
"type": "string",
"minLength": 2,
"maxLength": 6
},
"spot": {
"type": ["number", "null"],
"format": "double"
},
"z_mlgamma": {
"type": "number"
},
"z_msgamma": {
"type": "number"
},
"o_mlgamma": {
"type": "number"
},
"o_msgamma": {
"type": "number"
},
"zero_mcall": {
"type": "number"
},
"zero_mput": {
"type": "number"
},
"one_mcall": {
"type": "number"
},
"one_mput": {
"type": "number"
},
"zcvr": {
"type": "number"
},
"ocvr": {
"type": "number"
},
"zgr": {
"type": "number"
},
"ogr": {
"type": "number"
},
"zvanna": {
"type": "number"
},
"ovanna": {
"type": "number"
},
"zcharm": {
"type": "number"
},
"ocharm": {
"type": "number"
},
"agg_dex": {
"type": "number"
},
"one_agg_dex": {
"type": "number"
},
"agg_call_dex": {
"type": "number"
},
"one_agg_call_dex": {
"type": "number"
},
"agg_put_dex": {
"type": "number"
},
"one_agg_put_dex": {
"type": "number"
},
"net_dex": {
"type": "number"
},
"one_net_dex": {
"type": "number"
},
"net_call_dex": {
"type": "number"
},
"one_net_call_dex": {
"type": "number"
},
"net_put_dex": {
"type": "number"
},
"one_net_put_dex": {
"type": "number"
},
"dexoflow": {
"type": "number"
},
"gexoflow": {
"type": "number"
},
"cvroflow": {
"type": "number"
},
"one_dexoflow": {
"type": "number"
},
"one_gexoflow": {
"type": "number"
},
"one_cvroflow": {
"type": "number"
}
},
"additionalProperties": true
}type: object
properties:
timestamp:
type: integer
format: int64
ticker:
type: string
minLength: 2
maxLength: 6
spot:
type: [number, 'null']
format: double
z_mlgamma:
type: number
z_msgamma:
type: number
o_mlgamma:
type: number
o_msgamma:
type: number
zero_mcall:
type: number
zero_mput:
type: number
one_mcall:
type: number
one_mput:
type: number
zcvr:
type: number
ocvr:
type: number
zgr:
type: number
ogr:
type: number
zvanna:
type: number
ovanna:
type: number
zcharm:
type: number
ocharm:
type: number
agg_dex:
type: number
one_agg_dex:
type: number
agg_call_dex:
type: number
one_agg_call_dex:
type: number
agg_put_dex:
type: number
one_agg_put_dex:
type: number
net_dex:
type: number
one_net_dex:
type: number
net_call_dex:
type: number
one_net_call_dex:
type: number
net_put_dex:
type: number
one_net_put_dex:
type: number
dexoflow:
type: number
gexoflow:
type: number
cvroflow:
type: number
one_dexoflow:
type: number
one_gexoflow:
type: number
one_cvroflow:
type: number
additionalProperties: trueErrors
Most error responses have the body {"error": "<message>"}. A 401 response has no body. A 403 response from the API key product check also has no body.
| Status | Body | When |
|---|---|---|
400 | {"error": "User-Agent not found."} | The request has no User-Agent header. |
400 | {"error": "Authorization header not found."} | The request has no Authorization header. |
400 | {"error": "Invalid ticker format."} or {"error": "Unknown ticker symbol: <ticker>"} | The ticker is not a known symbol. |
400 | {"error": "Invalid category package combination."} | The category is not orderflow. |
401 | (no body) | The API key is not valid. |
403 | {"error": "User is not subscribed."} | The account has no subscription. |
403 | {"error": "User does not have permission to access this endpoint."} | The account does not have REST API access. |
403 | {"error": "Classic package does not have access."} | The account has a Classic subscription. This route needs Orderflow or higher. |
403 | {"error": "User is not subscribed to Orderflow package."} | The account has a State subscription. This route needs Orderflow or higher. |
403 | {"error": "Commercial child access is suspended."} | The commercial seat that owns the API key is suspended. |
429 | {"error": "Rate limit exceeded."} | The account has used its quota for this endpoint. See rate limits. |
500 | {"error": "Failed to get redis chart data: null or zero length"} | The server has no orderflow snapshot for the ticker. |
500 | {"error": "Failed to get chart data."} | The server could not decode the snapshot. Retry the request. |
options profile greeks
Displays the results of our orderflow classification engine, showing the net imbalance of transactions for a specified Greek. This allows for detailed analysis of taker long vs. short positioning and its associated risks.
overview
Quant is gexbot's all-access data tier providing real-time WebSockets, bulk historical archives, and per-expiry granularity across all packages.