SkyStream API

Запуск зрителей на канале

Запуск, состояние, изменение и остановка зрителей, история запусков.

Запуск — это зрители, работающие на канале. У канала бывает не больше одного запуска. Для запуска у ключа должно быть право viewers.

Запустить

POST/channels/ch_12/start
curl https://api.skystream.su/app/v1/channels/ch_12/start \  -X POST \  -H "Authorization: Bearer $API_KEY"
bash, zshКлюч — в переменной API_KEY

Тело не требуется. Число зрителей — start_viewers из настроек канала, по умолчанию — потолок канала. Разгон, плавающий онлайн, график и остальное тоже берутся из настроек. Ответ — канал с запуском в поле run:

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

Если запуск уже идёт, запрос отклоняется с ошибкой 409 run_already_active.

Автопросмотры

Если на канале в панели включены автопросмотры, запуск через API их тратит: они оплачиваются поминутно со счёта аккаунта, и суточный потолок трат ключа на них не распространяется. Через API автопросмотры можно только выключить — см. Настройки канала и графики.

Состояние запуска

ПолеЧто значит
run.statusrunning — зрители работают; waiting — запуск ждёт: начала эфира или возможности поднять зрителей
run.viewersСколько зрителей заказано
run.active_viewersСколько зрителей запуску разрешено держать сейчас. Может быть меньше viewers — тогда запуск доберёт остальных сам; при графике онлайна следует за кривой. 0, пока запуск ждёт
run.ends_atКогда запуск остановится сам. null — срок не назначен

Запуск не завершается с концом эфира. Когда эфир заканчивается, зрители останавливаются, запуск переходит в waiting и продолжается со следующим эфиром — пока его не остановят или не наступит ends_at.

Чтобы следить за запусками, периодически читайте GET /channels: один запрос возвращает все каналы с их запусками. Учитывайте ограничения частоты: для дашборда достаточно запроса раз в 15–30 секунд.

Изменить

Работающий запуск меняется без остановки:

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

Меняются число зрителей (не больше потолка канала), доли списка и рейда, плавающий онлайн. Новые значения сохраняются и в настройках канала — число зрителей в start_viewers, — и следующий запуск начнётся с них. Запрос задаёт значения, а не прибавляет, поэтому его можно безопасно повторить.

Если сервис запусков применил изменение не целиком, API отвечает 502 run_partially_updated. Повторите запрос.

Потолок канала — PATCH /channels/{id} с полем viewers — ограничивает все запуски канала: идущий запуск с большим числом зрителей опустится до нового потолка.

Остановить

POST/channels/ch_12/stop
curl https://api.skystream.su/app/v1/channels/ch_12/stop \  -X POST \  -H "Authorization: Bearer $API_KEY"
bash, zshКлюч — в переменной API_KEY
Ответ200
{  "channel_id": "ch_12",  "stopped": true,  "channel_deleted": false}

Если запуска нет, запрос отклоняется с ошибкой 409 run_not_active. Разовый канал удаляется вместе с запуском; об этом говорит channel_deleted: true. Подробнее — в руководстве Разовый запуск.

Срок запуска

Запуск останавливается сам в момент run.ends_at. Наибольший срок одного запуска задаёт владелец сервиса. У обычного канала этот срок назначается автоматически при запуске; ends_at равно null, только если владелец сервиса отключил автоматическую остановку. У разового канала срок задаётся при запуске.

Кроме того, запуск останавливается, когда истекает срок лимита аккаунта.

История

GET /runs возвращает запуски аккаунта от новых к старым, постранично, в том числе завершённые:

GET/runs?channel_id=ch_12&limit=20
curl "https://api.skystream.su/app/v1/runs?channel_id=ch_12&limit=20" \  -H "Authorization: Bearer $API_KEY"
bash, zshКлюч — в переменной API_KEY

У завершённого запуска status: "stopped" и причина в stop_reason:

stop_reasonПричина
manualОстановлен владельцем: в панели, в боте или через API
duration_elapsedВышло время работы
limit_expiredИстёк срок лимита
supportОстановлен поддержкой
unknownПричина не записана

duration_seconds — сколько длился запуск, включая время ожидания эфира.

Ошибки

КодКогда
run_already_activeНа канале уже есть запуск
run_not_activeНа канале нет запуска: для изменения, продления, остановки
limit_expired, limit_not_grantedЛимит истёк или не выдан
viewers_above_channel_capЧисло зрителей больше потолка канала
setting_not_supportedПоле Twitch в запросе для канала Kick
service_error, service_unavailableСервис запусков не выполнил запрос. Повторите позже

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