Real F1 data,
for the sim on your desk.
Compound and stint histories, lap and sector times, qualifying pace, and circuit-side weather from real sessions — the reference a setup, a degradation curve, or a pace benchmark is checked against. Then replay a real session into your own endpoint and watch your tooling react to it.
What sim racing and esports developers build on RaceHooks
Calibrating a simulator against the real thing
Stint histories with compound and tyre age, lap-by-lap times behind them, and air and track temperature on the same clock. That is a real degradation curve and a real track-evolution trace, per circuit, rather than a number someone posted on a forum.
Pace benchmarks & hotlap targets
Qualifying times per driver per session, with personal bests, best sectors, and speed-trap rankings alongside them. Set a league's target lap from what the real car did at that circuit, sector by sector, instead of from a leaderboard screenshot.
Companion apps & event overlays
Run the same live surfaces a broadcast uses over your own league night: running order, gaps, tyre state, flags, and every car's position on the circuit, pushed rather than polled. One SSE connection is enough for a browser overlay.
Coaching & post-session analysis
Per-driver lap telemetry summaries and stint aggregates from completed sessions — where the time went, which lap the tyre fell away, how a stint actually decayed. The comparison a driver coach makes by hand, as an endpoint.
One payload, straight onto the screen
A sim developer wants two things from real data — a number to calibrate against, and a way to run their tooling without waiting for a race. These are both, plus the overlay a league night ends up needing.
Simulate is the same delivery path as a live session, so the code you test midweek is the code that runs on race day. Every frame is marked as a replay.
The live surfaces a broadcast uses, over your own event. One SSE connection from the page — no backend to stand up for one night.
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 |
|---|---|---|
| GET | /v1/simulate/sessions | Replayable sessions — the reason most of this segment signs up. Prepare one and it delivers to your real endpoint at any speed from 0.1× to 120×, same payloads, same order. Free covers 5 distinct current-season sessions and Developer 10; the full archive is Custom. |
| GET | /v1/stream | Server-Sent Events over one long-lived connection — a league-night overlay with no backend behind it. |
| POST | /v1/webhooks | Subscribe an endpoint to a feed. The same endpoint receives a replay and a live session, so what you tested midweek is what runs on Sunday. |
| GET | /v1/historical/:season/:round/qualifying | Qualifying results for any round, with a sibling route for the qualifying laps behind them. |
| GET | /v1/historical/:season/:round/stints | Stint plans — compound and tyre age per driver — for the degradation model behind a setup. |
| GET | /v1/telemetry/races/:raceId/drivers/:driverId/laps | Per-lap telemetry summaries for one driver in a completed session, for coaching and comparison tools. |
tire.historyFull stint history per driver: compound, start lap, laps on the tyre — the degradation reference.timing.lap-historyAccumulated per-driver lap series, for the pace trace behind a stint.timing.statsPersonal best lap, best sectors, and speed-trap rankings — the benchmark a hotlap target is set from.events.qualifyingQualifying-specific events: lap improvements, eliminations, and position changes through Q1 to Q3.weather.data-seriesAir and track temperature, humidity, and rainfall over the session — track evolution, measured.telemetry.track-positionEvery car's live position on the circuit: lap fraction plus x/y coordinates, for an overlay or a map.timing.dataPosition, gaps, lap and sector times — the running order a companion app is built on.session.track-statusGreen, yellow, safetyCar, red — one named status, already resolved from the raw flag code.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 sim & esports 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 sim & esports
Everything above is the observed record and a replay of it — enough to calibrate a sim and run a league night. Custom opens the archive and the modelled layer on top of it. On Custom, fourteen production ML models attach an analytics key to every payload you already receive — same feeds, same delivery, same code path.
The full historical archive, replayable
Self-serve replay is current-season and capped at distinct sessions. Custom lifts both — any session in the archive, as many times as you want, through the same delivery path.
True pace & mini-sector timing
analytics.true-pace strips fuel load, tyre age, and traffic out of a lap, and timing.mini-sectors shows which part of the corner the time came from — the two things a setup comparison actually needs.
Tyre cliff & compound modelling
analytics.tire-strategy gives next-compound probabilities and the tyre-cliff model predicts the lap performance drops away — a degradation curve with a prediction attached rather than a fit after the fact.
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.