Outlap Docs
Open Outlap

Errors

Status codes and the JSON error shape returned by the Outlap APIs, with the messages you can match on.

Errors use standard HTTP status codes and a small JSON body.

{ "error": "invalid lap_time_ms" }

Some errors add fields that help you recover, for example required_scope or retry_after_s. Match on the HTTP status first, then on error where you need detail. Messages are stable for the cases listed below but may gain new variants.

Status codes

StatusMeaningWhat to do
200Success.n/a
400The request was malformed or failed validation.Fix the request. Don’t retry unchanged.
401Missing, invalid or revoked API key.Check the key and the Authorization header.
403Key is valid but not allowed: wrong club, or missing scope.Use a key for the event’s club, or one with the right scope.
404Unknown path, or an event that isn’t public or doesn’t belong to you.Check the ID. Private events return 404 to unauthenticated reads.
405Wrong HTTP method (Track API and key creation).Use GET (Track API) or POST (key creation).
413Stream packet too large.Send at most 5,000 lines or 2,000 passings per request.
429Rate limit exceeded.Wait Retry-After seconds. See rate limits.
500Server or database error. error carries the message.Retry with exponential backoff.
503Health check reports a degraded dependency.Retry later.

Validation messages

Laps

errorCause
laps must be an arrayBody missing, not JSON, or laps isn’t an array.
laps array is emptylaps is [].
max 1000 laps per requestMore than 1,000 laps in one request.
invalid lap_numberlap_number missing, not a number, or negative.
invalid lap_time_mslap_time_ms missing, zero or negative, or more than 24 hours.

Streams

errorCause
invalid json bodyThe body couldn’t be parsed.
unknown vendorvendor isn’t orbits, trackside, axware, rmonitor or generic.
lines or passings requiredBoth arrays are empty or missing.
packet too largeMore than 5,000 lines or 2,000 passings (status 413).

Penalties and sessions

errorCause
penalties must be an arraypenalties missing or not an array.
invalid statusSession status isn’t scheduled, live or finished.

Retrying safely

  • 429: honour the Retry-After header.
  • 5xx: retry with exponential backoff and jitter (1 s, 2 s, 4 s … capped at 30 s).
  • Network errors: retry, but remember POST /laps is not idempotent. The stream endpoint de-duplicates for you, so prefer it for continuous feeds.
  • 4xx other than 429: don’t retry. The request will fail the same way.
esc
↑↓ to navigate ↵ to open esc to close