Build on RadarPulse
Pipe scored options flow into your own bots, dashboards, and automations. The RadarPulse API gives you the same 0–100 scored flow, daily Top 25, and smart-money trackers that power the app, plus outbound webhooks that fire the moment a name hits a high score, an EXTREME print, or smart-money confluence. The API is in private beta.
Get a beta key. Programmatic access is rolling out to early users. Join the waitlist and mention you want API access.
Request API access →The API at a glance
Authenticate with your key via the x-api-key header. Read endpoints return a documented envelope ({ data, meta }) with honest real-vs-delayed labeling.
| Endpoint | Returns |
|---|---|
GET /api/v1/flow | Recent scored prints (filter by minScore, limit) |
GET /api/v1/flow/top | The daily Top 25, ranked by score with EXTREME/ELEVATED/NOTABLE flags |
GET /api/v1/score-explain | A print's 0–100 score broken into its four weighted factors |
GET /api/v1/heatmap | Sector/ticker premium heat data |
GET /api/v1/congress | Recent congressional trades (Pro+) |
POST /api/v1/hooks | Subscribe an outbound webhook to flow events |
Endpoints are part of the API beta; the full, authoritative reference ships with your key.
Quickstart
Fetch the day's EXTREME flow (score 85+):
# Python
import requests
r = requests.get("https://api.radarpulse.io/api/v1/flow",
params={"minScore": 85, "limit": 50},
headers={"x-api-key": "YOUR_KEY"})
for p in r.json()["data"]:
print(p["ticker"], p["type"], "score", p["score"], p["bias"])
// Node
const r = await fetch("https://api.radarpulse.io/api/v1/flow?minScore=85&limit=50",
{ headers: { "x-api-key": process.env.RADARPULSE_API_KEY } });
const { data } = await r.json();
data.forEach(p => console.log(p.ticker, p.type, "score", p.score, p.bias));
Webhooks
Subscribe a URL and RadarPulse will POST a rich, signed JSON event when a name fires. Each delivery carries the print, its score breakdown, the flag, and deep links, so a Discord/Slack/Telegram bot can render a complete alert with no extra calls.
{
"event": "flow.confluence",
"ticker": "NVDA", "type": "CALL", "bias": "BULL",
"score": 92, "flag": "EXTREME",
"scoreParts": { "volOI": 28, "premium": 30, "dte": 18, "otm": 16 },
"premium": 1840000, "premiumFmt": "$1.84M",
"volume": 12500, "oi": 3100, "volOI": 4.0,
"strike": 1300, "dte": 7, "side": "ASK", "kind": "SWEEP",
"links": {
"app": "https://radarpulse.io/?view=flow&t=NVDA",
"chart": "https://radarpulse.io/?view=charts&t=NVDA",
"news": "https://radarpulse.io/?view=news&t=NVDA"
},
"confluence": { "n": 7, "strikes": 3, "netFmt": "$920K bullish" }
}
Verify authenticity before acting. Each delivery also carries an X-RadarPulse-Timestamp header; the signature is an HMAC-SHA256 over timestamp + "." + rawBody (the exact bytes sent). Recompute it, compare in constant time, and reject stale timestamps:
// Node, verify X-RadarPulse-Signature (HMAC over "timestamp.body")
import crypto from "node:crypto";
const ts = req.get("X-RadarPulse-Timestamp"); // ms epoch, as a string
const sig = req.get("X-RadarPulse-Signature"); // "sha256=…"
const mac = "sha256=" + crypto.createHmac("sha256", SECRET)
.update(ts + "." + rawBody).digest("hex"); // sign timestamp + "." + raw body
const ok = sig.length === mac.length
&& crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(mac))
&& Math.abs(Date.now() - Number(ts)) < 5 * 60_000; // bound replay
SDKs, bots & recipes
Official Python and JavaScript/TypeScript SDKs (with a webhook-verify helper), ready-to-run Discord / Telegram / Slack bot templates, and Zapier / Make.com integrations are part of the developer rollout. Want to see what's possible today? The automations gallery has runnable example recipes, auto paper-trade the top EXTREME flows, post Congress + flow confluence to X, and more.
Embeddable widgets
Drop a live RadarPulse widget straight into a blog post, a Notion page, or your own dashboard, no API key, no build step. Each widget is a self-contained, auto-refreshing <iframe> that reads the public flow feed and renders the latest data on every load.
Copy-paste, point src at /embed/pulse or /embed/leaderboard (add ?window=month to the leaderboard for the monthly challenge, or ?theme=light for light-background sites):
<iframe src="https://radarpulse.io/embed/pulse"
title="RadarPulse Flow Pulse"
width="440" height="276"
style="border:0;border-radius:14px;max-width:100%"
loading="lazy"></iframe>
Request a beta API key
Programmatic scored flow, the daily Top 25, and confluence/EXTREME webhooks, for your bots, dashboards, and automations. Join the waitlist for early access.
Request API access →