Replay · API reference
Public replay data of a shared flight.
GET /v1/replay/{public_id}
Public replay of a shared flight
Fixes and thermal events of a flight its pilot shared. Masked and unusable fixes are left out (a masked stretch splits the track); times are relative; at most max_points points. Unknown, revoked and deleted shares are the same 404.
Authentication: X-Api-Key header; required scope: scope table.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
public_id required | path | string | public_id of the share (the link) |
max_points | query | integer | Thinning limit100 ≤ x ≤ 5000 · default 5000 |
Responses
| Status | Description | Content |
|---|---|---|
200 | Public replay; ETag and Cache-Control: public headers | application/json → PublicReplay |
304 | If-None-Match matched the current ETag; no body | |
401 | code: auth_missing, auth_invalid, auth_revoked | application/json → ErrorBody |
403 | code: auth_scope | application/json → ErrorBody |
404 | code: replay_not_found, replay_not_ready | application/json → ErrorBody |
422 | code: request_invalid | application/json → ErrorBody |
429 | code: rate_limited, quota_exceeded (Retry-After seconds)Headers: Retry-After — Seconds until the exhausted window resets | application/json → ErrorBody |
POST /v1/replay/{public_id}/video
Ask for the MP4 video of a shared flight
Queues a video of the shared flight (the same public replay as the Atlas page) in the asked format and length, or returns the one already queued, rendering or ready. Made once per share, format and length; after a failure, asking again queues it again. On the server without a graphics card a 15 s video (the default) is ready in about 3.5 minutes, a 30 s one in about 7: show the pilot that it is being prepared and poll status_path.
Authentication: X-Api-Key header; required scope: scope table.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
public_id required | path | string | public_id of the share (the link) |
Request body
application/json → VideoRequest
Responses
| Status | Description | Content |
|---|---|---|
200 | The video is ready (url set) | application/json → VideoInfo |
202 | Queued or rendering; poll status_path | application/json → VideoInfo |
401 | code: auth_missing, auth_invalid, auth_revoked | application/json → ErrorBody |
403 | code: auth_scope | application/json → ErrorBody |
404 | code: replay_not_found, replay_not_ready | application/json → ErrorBody |
422 | code: request_invalid | application/json → ErrorBody |
429 | code: rate_limited, quota_exceeded (Retry-After seconds)Headers: Retry-After — Seconds until the exhausted window resets | application/json → ErrorBody |
503 | code: queue_unavailable, video_download_unavailable | application/json → ErrorBody |
GET /v1/replay/{public_id}/video/{video_format}
State of a video, with a download URL when ready
Authentication: X-Api-Key header; required scope: scope table.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
public_id required | path | string | public_id of the share (the link) |
video_format required | path | VideoFormat | 16x9 (1920x1080) or 9x16 (1080x1920) |
length_s | query | VideoLength | Longest video, seconds, as asked for with POST: 15 (default) or 30default 15 |
Responses
| Status | Description | Content |
|---|---|---|
200 | queued, rendering, ready (with url) or failed | application/json → VideoInfo |
401 | code: auth_missing, auth_invalid, auth_revoked | application/json → ErrorBody |
403 | code: auth_scope | application/json → ErrorBody |
404 | code: replay_not_found, replay_not_ready, video_not_found | application/json → ErrorBody |
422 | code: request_invalid | application/json → ErrorBody |
429 | code: rate_limited, quota_exceeded (Retry-After seconds)Headers: Retry-After — Seconds until the exhausted window resets | application/json → ErrorBody |
503 | code: queue_unavailable, video_download_unavailable | application/json → ErrorBody |
GET /v1/replay/{public_id}/video/{video_format}/file
Download a video through a signed URL (no API key)
Authentication: No key needed.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
public_id required | path | string | public_id of the share (the link) |
video_format required | path | VideoFormat | 16x9 (1920x1080) or 9x16 (1080x1920) |
expires required | query | integer | Unix seconds, from the signed URL |
signature required | query | string | From the signed URL0–64 chars |
length_s | query | VideoLength | Longest video, seconds, as asked for with POST: 15 (default) or 30default 15 |
Responses
| Status | Description | Content |
|---|---|---|
200 | The MP4 (Range requests answer 206 on a folder store) | video/mp4 → string (binary) |
403 | code: video_url_invalid, video_url_expired | application/json → ErrorBody |
404 | code: replay_not_found, video_not_found | application/json → ErrorBody |
422 | code: request_invalid | application/json → ErrorBody |
503 | code: video_download_unavailable | application/json → ErrorBody |