Outlap Docs
Open Outlap

Conventions

Units, identifiers, timestamps, pagination and CORS: the rules that apply to every endpoint.

Time and units

ThingFormat
Lap and sector timesInteger milliseconds: 92345 is 1:32.345. Fields end in _ms.
TimestampsISO 8601 in UTC, e.g. 2026-06-02T14:05:11Z. recorded_at defaults to the time of the request.
DatesYYYY-MM-DD (event dates, from / to filters).
MoneyInteger minor units (cents) with a lowercase ISO 4217 currency. Fields end in _minor.
SpeedKilometres per hour (speed_trap_kph).

To convert m:ss.SSS to milliseconds, use (minutes * 60 + seconds) * 1000 + millis. The RMonitor decoder also accepts 83.456 and 00:01:23.456.

Identifiers

IDs are opaque UUID strings. Event IDs appear in event URLs in the app and in the Connect timing screen of Race Control. Treat them as opaque; don’t parse them.

Request bodies

  • Send Content-Type: application/json.
  • Unknown fields are ignored, not rejected.
  • Request size is bounded per endpoint: 1,000 laps, 5,000 RMonitor lines, 2,000 passings.

Collections

List endpoints return an object with a named array, not a bare array, so new fields can be added without breaking you:

{ "event_id": "…", "laps": [ ] }

There is no cursor pagination in v1. Instead, endpoints cap their result size: GET /laps returns up to 5,000 laps; GET /events takes a limit (default 50, max 200).

Nulls and missing fields

Optional values you didn’t supply come back as null, not omitted. Fields may be added to responses at any time; ignore ones you don’t recognise.

CORS

Every endpoint answers OPTIONS and sends Access-Control-Allow-Origin: *, with authorization, x-client-info, apikey, content-type allowed. That makes public endpoints callable from a browser. Never call authenticated endpoints from a browser, because that means shipping a key to your visitors.

Versioning

Paths carry a major version (/v1). Within a version we only make additive changes: new endpoints, new optional request fields, new response fields. Breaking changes would ship under a new major version path.

esc
↑↓ to navigate ↵ to open esc to close