Spectatr.ai

Reference

Ingest lifecycle

A source moves through these states. Read the current one from GET /matches/{externalId}/ingest.


States

SCHEDULED
Source registered. Waiting for ingestStartTime.
STARTING
Claimed for provisioning. The channel is being created.
STARTED
Channel is running against your source.
ENDED
Recording closed. Clip generation running.
FAILED
Provisioning failed repeatedly. See lastError.
CANCELLED
Stopped before any video arrived.

Starting

We start dialling at ingestStartTime, and in practice within a minute of it. Attach the source whenever you like beforehand, because months ahead or seconds ahead makes no difference to when we connect.

An ingestStartTime already in the past starts at once rather than being skipped, so attaching late still works. A source that came due while we were mid-restart is picked up on the next pass rather than being lost, so a brief outage on our side does not cost you a match.

A provisioning failure releases the claim and the next poll retries it. After repeated failures the session moves to FAILED with the reason in lastError, rather than retrying forever.

How a source stops

TriggerResult
You call /ingest/stopClean stop. Channel deleted, clip generation starts. This is the only path.
Your encoder closes the streamVideo stops arriving. The channel stays up and the session stays STARTED until you call stop.