Staging
https://api-staging.smartavstream.com

Developer documentation · API v1
A tenant-bound REST API for office scheduling systems and a separate, self-scoped control surface for encoder Devices.
Contract 1.1.0 · scoped tenant API access
Origins
Never derive the machine API origin from an organisation or administration hostname.
https://api-staging.smartavstream.com
https://api.smartavstream.com
Quick start
The ApiClient credential selects the Tenant. External API access must be enabled for that organisation, and the credential needs events:write for this request.
POST /api/v1/live-eventscurl --request POST "https://api-staging.smartavstream.com/api/v1/live-events" \
--header "Authorization: Bearer $API_TOKEN" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: office-event-4831-create" \
--data '{
"title": "Quarterly briefing",
"externalReference": "office-event-4831",
"contentType": "live_to_vod",
"scheduledStartAt": "2026-10-09T22:00:00Z",
"scheduledEndAt": "2026-10-09T23:00:00Z",
"encodingProfile": "standard-landscape",
"channelId": "11111111-1111-4111-8111-111111111111"
}'Reference
Tenant Administration endpoints are intentionally excluded: they use a human session and are not an external integration contract.
/api/v1/live-eventsCreate a draft scheduled-live or live-to-VOD Event.
/api/v1/live-events?externalReference=…Reconcile an Event using your stable reference.
/api/v1/live-events/{eventId}Read the authoritative schedule and revision.
/api/v1/live-events/{eventId}Edit with Idempotency-Key and If-Match.
/api/v1/encoder/bootstrapRetrieve bound ingest details once per credential version.
/api/v1/encoder/pollReport heartbeat/state and receive the current instruction.
Encoder loop
The Device credential is bound to one Channel. Bootstrap returns the stream key only for a claimable credential version; polling never repeats it.
Create the Device in Tenant Administration and store the displayed token securely.
Retrieve the RTMPS server, stream key and Channel credential version without logging the response.
Report the actual local state and apply the explicit idle, start, continue or stop instruction.
On transport failure or temporary 503, preserve the current state and retry. Never start from a cached instruction.
Operational truth
SmartAVStream keeps each signal separate so administration can expose mismatches instead of hiding them behind one live indicator.
What SmartAVStream wants: idle, start, continue or stop.
Whether the encoder has polled recently.
Whether the Device says it is idle or streaming.
Whether the media platform is actually receiving video.
Whether viewers may watch the intended Event.
Reliability
Reuse the same Idempotency-Key and identical body when a response is lost. PATCH also requires the current numeric If-Match revision.
If a poll is unavailable, a running encoder continues and an idle encoder remains idle. A successful current stop or revoked credential is not an outage.
Respect Retry-After on 429/503 responses and use bounded exponential backoff with jitter. Do not retry unchanged validation or authentication failures.
Redact Authorization and stream-key values from source control, URLs, logs, crash reports, support tickets, analytics and audit metadata.
Release boundary
Live Event create/read/edit, idempotency, Device bootstrap, heartbeat/polling, manual encoder start, credential revoke/reissue and previous-Event stop guard.
Automatic movement of Event B, independent provider enforcement at the 30-minute boundary, and full intended-Event public-player gating.