Simulcast

Restream an existing encoder live channel to YouTube, Twitch, or another RTMP ingest.

Push an existing encoder live channel to YouTube, Twitch, Facebook, or any other RTMP ingest. Dacast stays the origin. Destinations attach to a channel that already exists; this flow does not create a live stream.

📘

Host: https://developer.dacast.com. Headers: X-Api-Key and X-Format: default. JSON bodies need Content-Type: application/json.

Before you add a destination

  1. Create an encoder live channel with Create Stream: channel_type transmux, sd-transcode, hd-transcode, or fhd-transcode. Step-by-step: Create Live Streams Channels.
  2. Store the channel id.

Do not add destinations to:

The account must have simulcast credits. If none remain, add returns 403.

Add

Send the destination platform's ingest URL and stream key:

curl -X POST "https://developer.dacast.com/v2/channel/{id}/simulcast-destinations" \
  -H "X-Api-Key: insertYourApiKeyHere" \
  -H "X-Format: default" \
  -H "Content-Type: application/json" \
  -d "{\"rtmp_url\":\"rtmp://live.twitch.tv/app/\",\"stream_key\":\"secretkey123\"}"

A successful add returns 201 and {}. The new destination id is not in this body: read it from list.

If the channel id does not exist, the API returns 404 {"error":"Not found"}.

If the account is out of simulcast credits:

{
  "error": "Forbidden",
  "detail": "not enough simulcast credits"
}

List

curl -X GET "https://developer.dacast.com/v2/channel/{id}/simulcast-destinations" \
  -H "X-Api-Key: insertYourApiKeyHere" \
  -H "X-Format: default"

A successful call returns 200. Once indexed, the body looks like:

{
  "data": [
    {
      "id": "3be5cd39-32ce-4e0d-8e53-f74e9b8f6330",
      "rtmp_url": "rtmps://a.rtmp.youtube.com/live2",
      "stream_key": "youtube-secret-key"
    }
  ]
}

Right after add or delete the body can be null or still show a stale list. Retry until data matches what you expect.

Delete

Removing a destination does not delete the channel.

curl -X DELETE "https://developer.dacast.com/v2/channel/{id}/simulcast-destinations/{destination_id}" \
  -H "X-Api-Key: insertYourApiKeyHere" \
  -H "X-Format: default"

A successful call returns 200 and {}. An unknown destination_id also returns 200.