Developers menu
Developers / Versioning and changelog
Markdown copyVersioning and changelog
A path carries its major version where it has one (/api/v1, geo.firmtape.com/v1); a webhook body carries version. Within a version a change only adds: a new field, a new endpoint, a new event type. Ignore fields you do not know.
- A field that is removed or renamed is first marked deprecated here with a removal date at least 30 days out, and keeps its value until that date.
- A breaking change gets a new version and the old one keeps answering for at least 90 days.
- Every change is a dated line on its endpoint's page (Changes) and in the list below.
Deprecated
| What | Use | Since | Removed after |
|---|---|---|---|
levels.put_support in the level alerts webhook body | levels.put_wall | 2026-10-11 | 2026-11-30 |
X-FirmTape-Signature-V0 on the POSITIONS webhook | X-FirmTape-Signature with X-FirmTape-Timestamp | 2026-10-11 | 2026-11-30 |
Changes
| Date | Product | Change |
|---|---|---|
| 2026-10-12 | LIVE | The developer hub: every API, webhook and MCP tool documented from one source at /docs/developers. |
| 2026-10-11 | LIVE | Levels API: a finished day answers with its closing levels, read at 15:45 ET (12:45 on a 13:00 close), and adds levels_at and last_second. |
| 2026-10-11 | LIVE | Level alerts webhook: version 1; levels.put_wall added beside levels.put_support (the same number, deprecated). |
| 2026-10-11 | ORDERS | POSITIONS webhook: signed as the alerts are (X-FirmTape-Timestamp, signature over <timestamp>.<raw body>); the old body-only signature moved to X-FirmTape-Signature-V0 (deprecated). |
| 2026-10-11 | LIVE | Levels API: RTY and M2K. |
| 2026-10-05 | LIVE | Levels API: history answers the last 90 days for an account key; older days with DATASET. |
| 2026-09-30 | LIVE | Levels API v1: symbols, levels, gamma, history, levels.txt, bookmap.csv, key. |
Planned
One webhook format
POSITIONS and Geo move to the alerts' envelope (type, id, version, ts), header set (X-FirmTape-Event, X-FirmTape-Event-Id, X-FirmTape-Timestamp, X-FirmTape-Signature: sha256=) and delivery policy (3 seconds, retries after 1 s and 4 s, switch-off after 10 failures). Plan: (1) send the new format beside the old one, each request carrying both header sets, for 30 days from the day it starts, announced on this page and by mail to every account with a webhook; (2) event stays in the body beside type for the same 30 days; (3) Geo's t=,v1= signature stays in its own header, X-FirmTape-Signature-Geo, for those 30 days; (4) then the old format stops. Not started; no live sender changes before the start is announced here.
A key of its own for the dataset
The DATASET files open with a dataset scope key made on the account page, rather than the lab key. The lab key keeps working for the files for 30 days after the new key ships.
A delivery log for the alerts webhook
Every delivery of the level alerts webhook in the account, with status, tries and a resend button, as Geo has.
One error envelope
{"error": {"code", "message", "docs"}} on every API, LAB and Geo included, docs linking the code's row on the errors page.
Alert lines from a key
/api/alerts stays session-only until a customer asks for it from code.
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/versioning.md.