Sources
POST /v1/sessions takes a source. type is optional — Hooper derives it from the URL, and a Veo link is always routed to the Veo path even if you say url.
- Upload your own file
- Public URL
- Veo
Two calls: create an upload, Submitting before the bytes have landed returns
PUT the bytes to the returned resumable URL, then submit.409 upload_incomplete.Options
Limits
The API accepts the same envelope a Hooper mobile recording produces:
Where the size is knowable at submit (an upload’s blob size, a URL’s
Content-Length) an oversize video is refused with 400 video_too_large and nothing is held. Resolution is only known once the video is downloaded and probed; if it exceeds the limit the session ends in failed with error.code = "video_too_large", the credit hold is voided (nothing is charged) and any uploaded bytes are deleted.
Lifecycle
A job that never reports back is swept after 24 hours: the session fails with
error.code = "timeout", the hold is voided, and you still receive a session.failed event.
The session object
- Highlights are the product. Each is a cut clip linked to its
shotand itsplayer(the scorer). - Embedded lists cap at 100 items.
has_more: truemeans page theurlwithlimit/offset. - Cross-links are ids:
shot.highlight→hl_…,shot.players.scorer/highlight.player→plr_…matchingplayers.data[].id. - A
queued,processingorfailedsession has the same keys with empty lists — never a missing field. - Attribution ignores tags the pipeline marked invalid, using the same rule as the box score, so a shot’s
playersand a player’sstatsalways agree.
Idempotency
Send anIdempotency-Key header (any string ≤ 255 chars) on POST /v1/sessions. Replaying the same key with the same body within 24 hours returns the original response with an Idempotent-Replayed: true header; the same key with a different body returns 400 idempotency_key_reused. Concurrent requests with the same key are safe: exactly one session is created, and the others receive its response (or a retryable 409 idempotency_key_in_progress if it hasn’t finished yet). Retrying a 5xx with the same key is also safe — the replay finishes any step the failed attempt left undone. Use your own match id.