Local replay format
The importer accepts JSON, at most 5 MB, using apex-room-replay/v1. Files are read in browser memory and never uploaded by this app. Use only recordings you are entitled to use. No API tokens, personal positions, account details or video URLs belong in this format.
Required fields
| Field |
Meaning |
| schema |
Literal apex-room-replay/v1 |
| title |
1–100 character descriptive title |
| provenance.source |
Nonempty source declaration, at most 200 characters; displayed as file-author-supplied |
| provenance.kind |
recorded for historical measured data; simulation for generated samples. There is no live mode. |
| provenance.recordedAt |
An ISO 8601 date/time, preferably UTC, from which sample t is measured |
| track |
4–2,000 [x,z] points for schematic circuit geometry; required for recorded data. Original demo geometry is the default for synthetic data. |
| vehicles |
1–24 objects with unique id (1–30 chars), label (1–30 chars), color (#RRGGBB) and samples |
| samples |
At least two per vehicle; at most 100,000 total. Each has t seconds, x/z normalized local coordinates and optional speed in km/h |
Coordinates must be finite within ±100, share a coordinate frame with the supplied track, and describe a schematic local map. They are not interpreted as GPS. Time must be finite, nonnegative, strictly increasing per vehicle and no more than 86,400 seconds. Speed is optional and must be finite 0–1,000 km/h when supplied. Normalize geospatial/model coordinates before importing; do not overlay arbitrary OpenF1 x/y/z on terrain without a validated transformation.
Nearby positions interpolate linearly. If successive samples are more than five seconds apart, the marker disappears between observations. It is also hidden before first/after last observation; exact observed samples remain visible. Optional speed is held at the last observation until the next, never inferred from normalized coordinates. Vehicles remain in file order, not official race order. There is no map-matching, car orientation reconstruction or accuracy guarantee.
Minimal example
{
"schema": "apex-room-replay/v1",
"title": "My permitted local recording",
"provenance": {
"source": "Own test equipment · permitted personal recording",
"kind": "recorded",
"recordedAt": "2026-11-03T10:00:00Z"
},
"track": [[-20,-20],[20,-20],[20,20],[-20,20],[-20,-20]],
"vehicles": [{
"id": "A1", "label": "TEST A", "color": "#ffae65",
"samples": [
{"t":0,"x":-20,"z":-20,"speed":60},
{"t":1,"x":-18,"z":-20,"speed":62},
{"t":2,"x":-16,"z":-20}
]
}]
}
The room also offers Get sample, which downloads a complete generated replay. That file declares simulation and stays labelled simulation after import. Reload or Use demo removes imported content; malformed imports leave the current room intact. Source declarations in arbitrary files are not independent proof that the data is real or licensed.