SkyStream API

Разовый запуск

Зрители на заданный срок без постоянного канала.

Разовый запуск нужен, когда зрители требуются на один эфир и на известный срок, а держать канал в списке постоянно незачем. Например, если вы запускаете зрителей для своих клиентов.

Разовый запуск собирается из двух запросов: завести разовый канал и запустить его со сроком. Нужны права channels и viewers.

Заведите разовый канал

POST/channels
curl https://api.skystream.su/app/v1/channels \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "platform": "twitch",    "name": "example_channel",    "viewers": 150,    "temporary": true  }'
bash, zshКлюч — в переменной API_KEY

Разовый канал занимает место в числе каналов аккаунта (max_channels), как и обычный.

Запустите со сроком

Сразу после создания запустите канал, указав срок в минутах:

POST/channels/ch_12/start
curl https://api.skystream.su/app/v1/channels/ch_12/start \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "duration_minutes": 180  }'
bash, zshКлюч — в переменной API_KEY

Ответ — разовый канал с запуском. Когда запуск остановится, показывает run.ends_at:

Ответ200
{  "id": "ch_12",  "platform": "twitch",  "name": "example_channel",  "viewers": 150,  "temporary": true,  "expires_at": "2026-12-31T21:00:00.000Z",  "run": {    "id": "run_345",    "status": "waiting",    "viewers": 150,    "active_viewers": 0,    "started_at": "2026-09-29T12:00:00.000Z",    "ends_at": "2026-09-29T15:00:00.000Z"  }}

Срок — от 15 минут до наибольшего срока одного запуска. Без duration_minutes запуск работает до наибольшего срока. Срок больше наибольшего отклоняется с ошибкой duration_above_cap; предел указан в её описании.

Три минуты на запуск

Запускайте разовый канал сразу после создания. Канал, который не запустили в течение трёх минут, удаляется при следующем запросе к каналам аккаунта. Если запуск не удался из-за временной ошибки, повторите POST /channels/{id}/start для того же канала.

Жизненный цикл

  1. Запуск ждёт эфира в статусе waiting и работает, пока идёт эфир.
  2. В момент run.ends_at запуск останавливается. Разовый канал удаляется при следующем запросе к каналам аккаунта; до этого он виден без запуска и учитывается в channel_count.
  3. Если остановить запуск раньше (POST /channels/{id}/stop), канал удаляется сразу: в ответе channel_deleted: true.

Если удалить канал при остановке не удалось, channel_deleted равно false, и канал удаляется при следующем запросе к каналам. Действий от интеграции не требуется.

Продлить

Срок разового запуска можно продлить:

POST/channels/ch_12/extend
curl https://api.skystream.su/app/v1/channels/ch_12/extend \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Idempotency-Key: 2d7e9b3a-5c41-4f0e-8a6d-1b9c3e7f2a50" \  -H "Content-Type: application/json" \  -d '{    "minutes": 60  }'
bash, zshКлюч — в переменной API_KEY

Минуты прибавляются к нынешнему окончанию, а не к текущему моменту. Общий срок не может превысить наибольший срок одного запуска: продление, которое не помещается целиком, укорачивается до предела. Фактическое окончание — run.ends_at в ответе. Если запуск уже работает наибольший срок, продление отклоняется с ошибкой run_duration_cap_reached.

Продление прибавляет, и повтор запроса продлит запуск второй раз. Передавайте Idempotency-Key, чтобы повтор после обрыва связи был безопасен. Подробнее — в разделе Идемпотентность.

Ошибки

КодКогда
duration_not_supportedduration_minutes передан для обычного канала: срок задаётся только разовому
duration_above_capСрок больше наибольшего срока одного запуска
run_not_extendableКанал не разовый, или у запуска нет срока окончания
run_duration_cap_reachedЗапуск уже работает наибольший срок одного запуска
run_not_activeНа канале нет запуска
resource_missingКанала нет: например, его не запустили в течение трёх минут, и он удалён

На этой странице