Разовый запуск
Зрители на заданный срок без постоянного канала.
Разовый запуск нужен, когда зрители требуются на один эфир и на известный срок, а держать канал в списке постоянно незачем. Например, если вы запускаете зрителей для своих клиентов.
Разовый запуск собирается из двух запросов: завести разовый канал и запустить его со сроком. Нужны права channels и viewers.
Заведите разовый канал
/channelscurl 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 }'API_KEYРазовый канал занимает место в числе каналов аккаунта (max_channels), как и обычный.
Запустите со сроком
Сразу после создания запустите канал, указав срок в минутах:
/channels/ch_12/startcurl 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 }'API_KEYОтвет — разовый канал с запуском. Когда запуск остановится, показывает run.ends_at:
{ "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 для того же канала.
Жизненный цикл
- Запуск ждёт эфира в статусе
waitingи работает, пока идёт эфир. - В момент
run.ends_atзапуск останавливается. Разовый канал удаляется при следующем запросе к каналам аккаунта; до этого он виден без запуска и учитывается вchannel_count. - Если остановить запуск раньше (
POST /channels/{id}/stop), канал удаляется сразу: в ответеchannel_deleted: true.
Если удалить канал при остановке не удалось, channel_deleted равно false, и канал удаляется при следующем запросе к каналам. Действий от интеграции не требуется.
Продлить
Срок разового запуска можно продлить:
/channels/ch_12/extendcurl 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 }'API_KEYМинуты прибавляются к нынешнему окончанию, а не к текущему моменту. Общий срок не может превысить наибольший срок одного запуска: продление, которое не помещается целиком, укорачивается до предела. Фактическое окончание — run.ends_at в ответе. Если запуск уже работает наибольший срок, продление отклоняется с ошибкой run_duration_cap_reached.
Продление прибавляет, и повтор запроса продлит запуск второй раз. Передавайте Idempotency-Key, чтобы повтор после обрыва связи был безопасен. Подробнее — в разделе Идемпотентность.
Ошибки
| Код | Когда |
|---|---|
duration_not_supported | duration_minutes передан для обычного канала: срок задаётся только разовому |
duration_above_cap | Срок больше наибольшего срока одного запуска |
run_not_extendable | Канал не разовый, или у запуска нет срока окончания |
run_duration_cap_reached | Запуск уже работает наибольший срок одного запуска |
run_not_active | На канале нет запуска |
resource_missing | Канала нет: например, его не запустили в течение трёх минут, и он удалён |