# Alert lines (session only)

> The price and level lines a trader sets on the chart. /api/alerts answers the signed-in terminal only, with the session cookie; it takes no API key.

Source: https://firmtape.com/docs/developers/live/alert-lines

The price and level lines a trader sets on the chart. `/api/alerts` answers the signed-in terminal only, with the session cookie; it takes no API key.

`GET POST DELETE /api/alerts`

**This page serves:** [LIVE: Alert lines](https://firmtape.com/docs/live#alert-lines), [LIVE: The list of your alert lines](https://firmtape.com/docs/live#alert-lines-list). **Plan:** [LIVE](https://firmtape.com/features/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.

A fired line reaches a program through the level alerts' webhook, as an event of type `price_alert` or `level_line` with the line beside it under `alert`. That is the way to receive lines from code today.

| Request | Answer |
| --- | --- |
| `GET /api/alerts` | `{ lines, max, live }` |
| `POST /api/alerts` `{ sym, kind: "price", price, mode? }` | 201 `{ line, lines }`: a price line |
| `POST /api/alerts` `{ sym, kind: "level", level: "flip" \| "call_wall" \| "put_wall", mode? }` | 201: a line that follows its level |
| `POST /api/alerts` `{ id, price?, mode? }` | 200: moved or switched |
| `DELETE /api/alerts?id=<id>` | 200 `{ ok, lines }` |

Errors are `{ "error": "<words>" }`: 400 bad shape, 401 signed out, 402 not LIVE, 404 no such line, 409 at the 25 line maximum, 413 too large, 415 not JSON, 429 too many changes.

Opening it to API keys is planned only once a customer asks for it.
