Flow Levels API
Live, intraday-adjusted versions of the key technical levels: gamma flip, call wall, put wall, and max pain - recomputed on effective OI.
Endpoint
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
expiry |
query | no | all expiries | Filter chain to a single expiry (yyyy-MM-dd). Omit to aggregate across all expiries |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/levels/SPY"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/levels/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Live gamma flip: {data['live_gamma_flip']}")
print(f"Live call wall: {data['live_call_wall']}")
print(f"Live put wall: {data['live_put_wall']}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/levels/SPY",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`Live gamma flip: ${data.live_gamma_flip}`);
console.log(`Live call wall: ${data.live_call_wall}`);
console.log(`Live put wall: ${data.live_put_wall}`);
Response
{
"symbol": "SPY",
"as_of": "2026-05-12T18:42:10Z",
"underlying_price": 597.505,
"expiry": "2026-05-15",
"live_gamma_flip": 595.50,
"live_call_wall": 600.0,
"live_put_wall": 595.0,
"live_max_pain": 597.0
}
Key Response Fields
| Field | Type | Description |
|---|---|---|
symbol | string | Underlying symbol |
as_of | string | ISO 8601 timestamp |
underlying_price | number | Current price of underlying |
live_gamma_flip | number | Strike where live net GEX crosses zero (the gamma flip point) |
live_call_wall | number | Strike with highest live call GEX - the call wall (resistance) |
live_put_wall | number | Strike with highest live put GEX - the put wall (support) |
live_max_pain | number | Max pain strike using effective OI |
Any field may be null if the underlying profile cannot resolve it (e.g., no gamma flip exists in the strike range).
About Flow Levels
Flow Levels returns the live versions of the four key technical levels traders anchor to: gamma flip, call wall, put wall, and max pain. The settled versions in /v1/exposure/levels are computed on the morning OPRA-broadcast OI and stay fixed all session. This endpoint runs the same level-detection logic on the OI simulator's effective OI, so when a wall starts losing OI or a new strike accumulates positioning, the levels move with it. Same definitions, intraday-adjusted inputs.
Common Use Cases
- Live wall tracking - watch call/put walls migrate during the session instead of staring at stale morning levels
- Gamma flip alerts - trigger when the live gamma flip crosses spot
- Pin-magnet planning - pair live max pain with proximity to set end-of-day targets
- Setup confirmation - validate a trade idea against live walls before sizing up
- Settled vs live diff - fetch both endpoints and surface the deltas as a "levels are shifting" signal
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.