gexbot api

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.

GET/{ticker}/orderflow/{category}Orderflow Tier

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

PrefixExpiration HorizonDescription
z_ / zero_ / un-prefixed0 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

NameTypeDescription
AuthorizationstringRequired. Format: "Bearer <YOUR_API_KEY>"
User-AgentstringRequired. Identify your client application.
AcceptstringRequired. Set to "application/json".

Path parameters

NameTypeDescription
tickerstringTicker symbol from GET /tickers, for example SPX or ES_SPX.
categorystringOrderflow data category. Set to orderflow.

Response

FieldTypeDescription
timestampintegerUnix timestamp in seconds of the snapshot.
tickerstringThe ticker symbol for the requested asset.
spotnumberThe spot price of the underlying asset. null when spot data is not available to the caller.
z_mlgammanumberNearest Expiry Major Long Gamma level (taker long convexity).
z_msgammanumberNearest Expiry Major Short Gamma level (taker short convexity).
o_mlgammanumberNext Expiry Major Long Gamma level.
o_msgammanumberNext Expiry Major Short Gamma level.
zero_mcallnumberNearest Expiry Major Call exposure level from GEX Profile.
zero_mputnumberNearest Expiry Major Put exposure level from GEX Profile.
one_mcallnumberNext Expiry Major Call exposure level from GEX Profile.
one_mputnumberNext Expiry Major Put exposure level from GEX Profile.
zcvrnumberNearest Expiry Net Convexity (long gex - short gex).
ocvrnumberNext Expiry Net Convexity.
zgrnumberNearest Expiry Net GEX imbalance (call gex imbalance - put gex imbalance).
ogrnumberNext Expiry Net GEX.
zvannanumberNearest Expiry Net Vanna exposure ($MM until expiry).
ovannanumberNext Expiry Net Vanna exposure ($MM until expiry).
zcharmnumberNearest Expiry Net Charm exposure ($MM/hr).
ocharmnumberNext Expiry Net Charm exposure ($MM/hr).
agg_dexnumberCumulative delta from all transactions so far that day for the nearest expiry (0 DTE).
one_agg_dexnumberCumulative delta from all transactions so far that day for the next expiry (1 DTE).
agg_call_dexnumberCumulative delta from call transactions so far that day for the nearest expiry (0 DTE).
one_agg_call_dexnumberCumulative delta from call transactions so far that day for the next expiry (1 DTE).
agg_put_dexnumberCumulative delta from put transactions so far that day for the nearest expiry (0 DTE).
one_agg_put_dexnumberCumulative delta from put transactions so far that day for the next expiry (1 DTE).
net_dexnumberNet taker delta exposure across the current chain (DEX ladder) for the nearest expiry (0 DTE).
one_net_dexnumberNet taker delta exposure across the current chain (DEX ladder) for the next expiry (1 DTE).
net_call_dexnumberNet taker delta exposure from call positions across the current chain for the nearest expiry (0 DTE).
one_net_call_dexnumberNet taker delta exposure from call positions across the current chain for the next expiry (1 DTE).
net_put_dexnumberNet taker delta exposure from put positions across the current chain for the nearest expiry (0 DTE).
one_net_put_dexnumberNet taker delta exposure from put positions across the current chain for the next expiry (1 DTE).
dexoflownumberDEX Orderflow (change in taker delta over the last second) for the nearest expiry (0 DTE).
one_dexoflownumberDEX Orderflow (change in taker delta over the last second) for the next expiry (1 DTE).
gexoflownumberGEX Orderflow (change in taker gamma over the last second) for the nearest expiry (0 DTE).
one_gexoflownumberGEX Orderflow (change in taker gamma over the last second) for the next expiry (1 DTE).
cvroflownumberConvexity Orderflow (change in taker convexity over the last second) for the nearest expiry (0 DTE).
one_cvroflownumberConvexity 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: true

Errors

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.

StatusBodyWhen
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.

On this page