Developers menu
Developers / Quickstart
Markdown copyQuickstart
From no account to a first answer in three steps; then the same call in Python and Node.
With no key: the archive
Every finished session answers with no account.
curl \ "https://firmtape.com/api/days"
With a key: the live levels
- Start LIVE on Pricing.
- Open Account, Integrations and make a key. It starts
ftpl_and is shown once. - Call it:
curl \ -H "Authorization: Bearer $FIRMTAPE_LIVE_KEY" \ "https://firmtape.com/api/v1/levels?sym=SPX,ES,QQQ"
import os, requests
H = {"Authorization": f"Bearer {os.environ['FIRMTAPE_LIVE_KEY']}"}
r = requests.get("https://firmtape.com/api/v1/levels?sym=SPX,ES,QQQ", headers=H)
print(r.status_code, r.text[:500])const r = await fetch("https://firmtape.com/api/v1/levels?sym=SPX,ES,QQQ", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.FIRMTAPE_LIVE_KEY}` },
});
console.log(r.status, await r.text());Poll it well
Put every symbol in one call, send the last ETag back as If-None-Match (a 304 is not counted), and wait next_update_s between calls.
Next
- API keys and scopes: which key opens what.
- Errors and Rate limits.
- Webhooks: alerts pushed to your server.
- MCP: the same data inside an assistant.
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/quickstart.md.