Stream live timing
Push raw RMonitor lines or vendor passings. Outlap decodes them, matches drivers, de-duplicates laps and tracks flag and session state.
…/timing-api/v1/events/{eventId}/stream This is the endpoint behind the timing bridge. Send the lines your timing system emits, unchanged, and Outlap folds them into a persistent feed state for the event: running order, class and competitor details, the current flag and session name. Each lap that is new since the last packet is stored.
Use it for MyLaps Orbits, MyLaps Trackside/X2, AxWare and any RMonitor relay. If you’re building your own integration, you can send either form:
lines: raw RMonitor records ($F,$A,$G,$J…).passings: one JSON object per completed lap, for systems that don’t speak RMonitor.
If both are present, lines wins.
Requires timing:write. Laps are matched to drivers by transponder, then car number, using the transponder list on the event’s Paddock tab.
Body
-
vendorstring default:rmonitorOne oforbits,trackside,axware,rmonitor,generic. Recorded as the lapsource(live:<vendor>). -
linesstring[] optionalRaw RMonitor records. Maximum 5,000. Lines not starting with$are ignored. -
passingsobject[] optionalVendor passings. Maximum 2,000. See below. -
session_idstring optionalAttach laps to a session. Lap numbers are de-duplicated within it. -
bridge_versionstring optionalShown in Race Control. Truncated to 40 characters. -
source_labelstring optionalFriendly name such as “Race Control PC”. Truncated to 120 characters.
At least one of lines or passings is required.
Passing object
-
transponderstring optionalOrtransponder_id. -
numberstring optionalCar number. Eithernumberor a transponder is required. -
namestring optionalCompetitor name. -
lap_numberinteger optionalOrlap. If omitted, laps are counted from the last one seen. A lap number already ingested is skipped. -
lap_time_msinteger optionalOrlap_timeas"1:42.311". Passings with no valid lap time are skipped. -
recorded_atstring optionalISO 8601 timestamp.
Response
-
okbooleanAlwaystrueon success. -
recognisedintegerRecords the decoder understood. A persistently low number means the wrong output is enabled on the timing system. -
laps_decodedintegerLaps found in this packet. -
laps_insertedintegerLaps stored after removing duplicates. -
flagstring | nullLatest flag:green,yellow,red,chequered,whiteorpurple. -
sessionstring | nullLatest session name from the$Brecord.
Behaviour worth knowing
- Idempotent. Resending a packet doesn’t duplicate laps. Existing laps are skipped by transponder and lap number within the session.
- Stateful. The feed state persists between packets, so you don’t need to resend
$Aregistrations each time, though sending them after a restart is harmless. - Heartbeat. A successful call marks the feed
live. UsePOST /feed/statusto reportstale,errororstopped. - Packet limits. More than 5,000 lines or 2,000 passings returns
413.