Surface the story
as it happens.
40+ synthesized race events, race control messages, steward decisions, and live timing — on your desk within a second of the moment on track, structured and signed, with no polling loop to babysit through a race weekend.
What media teams build on RaceHooks
Live blogs & liveticker
The race-events feed is already the beat: overtakes, pit stops, retirements, penalties, fastest laps, and lead changes arrive as discrete typed events with the driver attached. Template each event type once and a liveticker writes its own spine while your reporter adds the colour.
Broadcast graphics & lower-thirds
Drive on-air furniture off pushed state instead of a scraper: running order, gaps, lap and sector times, and the top-three board update as the timing screen does. Every payload is HMAC-signed, so a graphics rig can trust what it renders.
Newsroom alerts & social automation
Route flags, safety cars, retirements, grid penalties, and steward decisions straight into Slack, a CMS, or a scheduled post. Because it is push, the alert fires on the event rather than on your next poll — the difference between breaking a penalty and matching it.
Post-race recaps & data journalism
Reach back for the numbers a piece actually needs — results, qualifying, lap-by-lap times, stints, pit stops, fastest laps, and standings, from 1950 forward. One API for the live beat and the archive behind it.
One payload, straight onto the screen
A race event arrives already structured for output — a type, a lap, a driver, and the cause. These are the three places it lands in a newsroom: the blog and the alert are that payload rendered, and the lower-third is the same treatment applied to timing.data.
One template per event type and the feed writes the spine of the blog; the safety-car entry is the payload above, rendered.
Route race control and steward decisions into Slack or a CMS. Because it is push, the alert fires on the event — not on your next poll.
Example interfaces, rendered from the fields above — your product, your design system. Nothing here is a template you have to adopt.
The endpoints that build it
Every route is Bearer-authenticated and versioned under /v1. Base URL https://api.racehooks.io/v1.
| Method | Path | What it gives you |
|---|---|---|
| POST | /v1/webhooks | Subscribe an endpoint to a feed. One endpoint can carry the full live catalog; filter by driver at subscription time to keep a desk-specific feed narrow. |
| GET | /v1/stream | Server-Sent Events for newsroom dashboards and browser clients — one long-lived connection, no public webhook host required. |
| GET | /v1/historical/:season/:round/results | Final classification for a completed round, plus qualifying, sprint, and practice on sibling routes. |
| GET | /v1/historical/:season/:round/laps | Lap-by-lap times for a session — the raw material for a pace chart or a race-defining-moment reconstruction. |
| GET | /v1/historical/:season/:round/pitstops | Every stop of a race with lap and duration. stints gives the compound plan around it. |
| GET | /v1/historical/:season/driverStandings | Championship standings by season, for title-race context in a live piece or a season review. |
events.race40+ synthesized events — overtakes, pit stops, safety cars, retirements, penalties, fastest laps.race-control.messagesFlags, safety car and VSC calls, track status, and race control's own wording.timing.dataLap times, sector times, gaps, and running order — every lap, every driver.regulatory.stewards-decisionSteward decisions as they publish, with the offence and the penalty applied.race.grid-penaltyGrid penalties ahead of the race — the pre-race story, before lights out.session.infoSession lifecycle, clock, and lap count — when a show starts, and where it is.Developer includes all 30 live data feeds, not just the ones above; the remaining 25 in the 55-feed catalog are the Custom analytics feeds. Every id, cadence, and payload schema is documented.
Three ways the data reaches you
Pick per integration — you can run all three against one API key. Webhook and SSE frames both meter against your monthly delivery bucket; REST reads meter against the request rate limit instead.
Webhook
Push · defaultRegister an HTTPS endpoint and subscribe it to feeds. RaceHooks POSTs each event as it fires — typically well within a second. Every payload is HMAC-SHA256 signed, retried with exponential backoff on failure, and every attempt is logged in your console with headers, status, and latency.
POST /v1/webhooks
{ "webhookUrl": "https://your-app.com/hook",
"feedId": "events.race" }SSE stream
Push · no public URLOpen one long-lived connection and read frames as they arrive — no public webhook server to host or expose. Each frame is `event: <feedType>` + a JSON `data:` line, with a ping every 30s so proxies hold the connection open. Auth by Bearer header, or `?token=` for browser EventSource, which cannot set headers.
GET /v1/stream?feeds=raceevent,timingdata
Authorization: Bearer $TOKENREST
Pull · on demandQuery completed and reference data directly whenever you need it — results, standings, laps, stints, pit stops, and the segment endpoints above. Use it to backfill history, hydrate a new user, or reconcile after an outage rather than to follow a live session.
GET /v1/historical/2026/16/results
Authorization: Bearer $TOKENTest the whole thing on a quiet Tuesday
Simulate replays a real current-season session through your own webhooks at any speed from 0.1× to 120×. Your integration receives the exact payloads it would in a live race — real data, known result — so you can validate media logic end to end before a live session ever runs. Free includes 5 sessions, Developer 10; Custom replays the full archive.
How Simulate works →What the ML layer adds for media
Everything above reports what just happened, fast. The ML layer tells you what is about to happen — which is the difference between calling an overtake and setting it up two laps early. On Custom, fourteen production ML models attach an analytics key to every payload you already receive — same feeds, same delivery, same code path.
Overtake probability
Per-pair probability that a pass is coming, updated every lap. The cue for a director to take a camera, or for a liveblog to tell readers where to look next.
Tyre health & predicted cliff lap
Live degradation per stint with the lap the drop-off is expected to land — "he has about three laps left on these" as a number rather than a guess.
Win & podium probability
Calibrated, recomputed as the race moves — on-screen odds that respond to a safety car in real time, and the graphic that makes a comeback legible.
Mini-sector timing & classified results
Mini-sector splits for where a lap was actually won, plus the classified-result and race-summary feeds that close a broadcast out.
Start on the free tier.
Build and test a complete integration on historical and replayed sessions — no credit card. Go Developer when you need it live.