RaceHooks for Media & Broadcast

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.

Everything on this page ships on Developer$99/mo, self-serve.
Broadcast lower-third
1
LEC
Charles Leclerc
+2.418
INTERVAL
MEDIUM
14 laps
01 · What you build

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.

Built from
events.racerace-control.messagessession.info

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.

Built from
timing.datatiming.top-threesession.clocksession.lap-count

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.

Built from
race-control.messagesregulatory.stewards-decisionrace.grid-penaltyevents.race

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.

Built from
historical/:season/:round/lapshistorical/:season/:round/stintshistorical/:season/:round/fastestlaps
02 · What your users see

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.

Liveblog / liveticker
14:22:32SAFETY CAR

Safety car deployed on lap 34 after Alonso stops on track. The pit window opens for everyone who has not yet stopped.

14:21:58RETIREMENT

Alonso is out — the Aston Martin loses drive at the exit of Turn 7 and rolls to a stop against the barrier.

14:19:04OVERTAKE

Norris takes P2 from Piastri into Turn 1, DRS open, and immediately pulls clear by half a second.

One template per event type and the feed writes the spine of the blog; the safety-car entry is the payload above, rendered.

Newsroom alert
# f1-desk
RH
racehooksAPP14:22
SAFETY CAR DEPLOYED
Lap 34 of 53 · Italian Grand Prix. Cause: retirement, ALO.
RH
racehooksAPP14:31
STEWARDS: 5s time penalty
Car 4 (NOR) — unsafe release from the pit box. Applied at the next stop.

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.

↑ all of it, from this payload
POST to your endpoint — events.race, safety car deployed
{
  "feed": "events.race",
  "sessionId": "2026-italy_r",
  "event": {
    "type": "safety_car",
    "status": "DEPLOYED",
    "lap": 34,
    "utc": "2026-09-06T14:22:32.008Z",
    "message": "SAFETY CAR DEPLOYED",
    "cause": { "type": "retirement", "driver": "alonso-fernando", "tla": "ALO" }
  }
}

# Signed: X-RaceHooks-Signature: sha256=…  (HMAC-SHA256 over the raw body)
# Retried with exponential backoff; every attempt logged in your console.

Example interfaces, rendered from the fields above — your product, your design system. Nothing here is a template you have to adopt.

03 · Endpoints

The endpoints that build it

Every route is Bearer-authenticated and versioned under /v1. Base URL https://api.racehooks.io/v1.

MethodPathWhat it gives you
POST/v1/webhooksSubscribe 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/streamServer-Sent Events for newsroom dashboards and browser clients — one long-lived connection, no public webhook host required.
GET/v1/historical/:season/:round/resultsFinal classification for a completed round, plus qualifying, sprint, and practice on sibling routes.
GET/v1/historical/:season/:round/lapsLap-by-lap times for a session — the raw material for a pace chart or a race-defining-moment reconstruction.
GET/v1/historical/:season/:round/pitstopsEvery stop of a race with lap and duration. stints gives the compound plan around it.
GET/v1/historical/:season/driverStandingsChampionship standings by season, for title-race context in a live piece or a season review.
Feeds you subscribe to
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.

04 · Delivery

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 · default

Register 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" }
Best for: Server-side apps, scoring engines, alerting.

SSE stream

Push · no public URL

Open 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 $TOKEN
Best for: Local development, dashboards, browser clients.

REST

Pull · on demand

Query 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 $TOKEN
Best for: Backfill, reference data, reconciliation.
05 · Before race day

Test 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 →
Upgrade · Custom tier

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.

Talk to salesRead the model methodology →Custom also adds a delivery SLA, unlimited deliveries, and full-archive replay.

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.

Start buildingCompare plans