Skip to content

Errors and limits

Every error is JSON:

{ "error": "invalid_tier", "detail": "tier must be standard_1080p or pro_4k" }
Status error Meaning
400 invalid_body, missing_field, invalid_* The request is malformed; detail names the field
401 unauthenticated Missing, unknown or revoked key, or a suspended organization
402 cap_exceeded Your organization’s monthly cap is spent (only if one was set)
402 payment_failed Paying an invoice: the card was declined
404 not_found No such stream for this key
409 stream_ended The stream is over and cannot be started again
409 not_published_yet Live, but no video has arrived yet
410 recording_expired The recording is past its 30 days
422 idempotency_key_reused That Idempotency-Key was used for a different request
429 too_many_attempts Too many wrong access codes; see Retry-After
429 (no body) More than 500 requests in a minute from one IP address; slow down
5xx internal, unavailable Ours; safe to retry

start and end are idempotent; every 5xx is safe to retry.

  • A stream runs for at most 12 hours. Book a new one for anything longer.
  • No webhooks. Poll GET /v1/streams/{playback_id} for state changes.
  • Five restream destinations per stream, RTMPS only.
  • No limit on streams on air at once; each is billed on its own. Send an Idempotency-Key when booking so a retry is never a second stream.
  • List pages return at most 200 streams, with a cursor for the rest.
  • 500 requests a minute from one IP address. Past that the API answers 429, with no body, until the rate falls back under the limit. A server that makes every call from one address should spread a large backfill out and back off on a 429 rather than retry at once.