Developers menu
Developers / LIVE / Webhook events / level_touch
Markdown copylevel_touch
Sent when the price touches the flip, the call wall or the put wall and turns back your chosen number of points on the side it came from.
This event serves
Plan: LIVE. LIVE: today's session every second, alerts, ASK, the levels API and the platform integrations, and 5 LAB credits a month. Every finished session is free in REPLAY. Pricing. Turn it on: Account, Level alerts: a webhook address, and the event on the watchlist.
When it is sent
- A touch is the price within 2 SPX points of the level, or past it without the closes that would make it a hold beyond.
- Armed only once the price has been more than your number of points away on that side.
- Not sent for where the price already is when the level is first seen.
Payload
| Field | Meaning | Unit |
|---|---|---|
| version1 | Payload version, 1. | |
| idstring | Event id, evt_ and 24 hex digits. The same on every try and for every account the event goes to: drop one you have seen. | |
| type"level_touch" | level_touch. | |
| symbolstring | SPX, ES, NQ, RTY or a ticker. | |
| levelobject | The level the event is about. | |
| level.kindflip | call_wall | put_wall | net_gamma | price | cvd | level_of_interest | chorus | null | flip, call_wall, put_wall, net_gamma, price for a price line, level_of_interest for C1 to C4 and P1 to P4 (with rank), cvd for a CVD line (its value in contracts of calls minus puts in one bar), or chorus for the chorus's strength (its value from -100 to 100). | |
| level.valuenumber | null | Its value at the event. | index points |
| level.fromnumber | null | Moves: where it stood before. | index points |
| level.rankstring | Levels of interest: the rank, C1 to C4 or P1 to P4, as on the chart. | |
| pricenumber | null | The price at the event. Null on a premarket event (see phase). | index points |
| bookvolume | open_interest | measured | volume+open_interest | The book the event was read in, as the account picked it for that card: volume, open_interest, measured (SPX, ES, NQ), or volume+open_interest (levels of interest only, as on the chart). A symbol without the book picked is read in volume. | |
| tsstring | When it was found, ISO 8601 in New York time. | |
| daystring | The ET trading day. | |
| levelsobject | The flip and the walls of the book in book at the event (the volume book's for volume+open_interest). | |
| levels.flipnumber | null | Flip. | index points |
| levels.call_wallnumber | null | Call wall. | index points |
| levels.put_wallnumber | null | Put wall. | index points |
| levels.put_supportdeprecatednumber | null | The put wall under its first name. Deprecated: read put_wall; removed after 2026-11-30. | index points |
| textstring | The sentence Telegram and push show. | |
| directionabove | below | The side the price came from and went back to. | |
| threshold_pointsnumber | The size you picked. | |
| threshold_minutesnumber | level_beyond, interest_beyond: the one-minute closes in a row the account picked. | minutes |
| fromstring | ES, NQ, RTY: the index whose book moved by the basis gives the levels. | |
| basisnumber | null | ES, NQ, RTY: the basis at the event. | index points |
| levels_asofstring | null | Symbols on a five-minute book: when that book was built. | |
| phasepremarket | Present only when a price line fired before the bell, from 04:00 ET to the open on a trading day: premarket. The line was crossed on the premarket's minute prices; price is then null, and levels are the previous session's closing levels. Absent on every event in the session. | |
| alertobject | Alert lines only: the line that fired. | |
| alert.idstring | The line, al_.... | |
| alert.kindstring | price, level or delta (a CVD line). | |
| alert.levelstring | null | A level line: flip, call_wall or put_wall. | |
| alert.pricenumber | null | A price line: its price. | index points |
| alert.modestring | once or repeat. | |
| joinsarray | One event for several levels on one price (a wall and levels of interest): the types it stands for, e.g. ["wall_break", "interest_cross"]. |
Delivery
| Answer | Any 2xx within 3 seconds. Redirects are not followed. |
| Retries | No answer, a 429 or a 5xx: tried again after 1 s and 4 s, three tries in all, the same id each time. |
| Switched off | After 10 failed events in a row; the account page shows why. Saving the address switches it on again. |
| Volume | Up to 30 events a minute per account; past that they are dropped and counted on the account page. |
| Test | type: "test", from Send test |
| Log | The last delivery (time, status, tries) on the account page. |
Verify every request before reading it: Webhooks: verify the signature.
Related events
flip_cross · wall_break · regime_change · wall_move · flip_move · level_near · level_beyond · interest_new · interest_move · interest_drop · interest_cross · interest_near · interest_beyond · interest_touch · chorus_strength · price_alert · level_line · cvd_line · order · test
Measurements of dealer positioning, never a forecast or a trade call. This page is built from FirmTape's public contract, the same files the OpenAPI document is built from; the tests hold them against the route code. Markdown: /docs/developers/live/events/level_touch.md.