Запуск зрителей на канале
Запуск, состояние, изменение и остановка зрителей, история запусков.
Запуск — это зрители, работающие на канале. У канала бывает не больше одного запуска. Для запуска у ключа должно быть право viewers.
Запустить
/channels/ch_12/startcurl https://api.skystream.su/app/v1/channels/ch_12/start \ -X POST \ -H "Authorization: Bearer $API_KEY"API_KEYТело не требуется. Число зрителей — start_viewers из настроек канала, по умолчанию — потолок канала. Разгон, плавающий онлайн, график и остальное тоже берутся из настроек. Ответ — канал с запуском в поле run:
{ "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.status | running — зрители работают; waiting — запуск ждёт: начала эфира или возможности поднять зрителей |
run.viewers | Сколько зрителей заказано |
run.active_viewers | Сколько зрителей запуску разрешено держать сейчас. Может быть меньше viewers — тогда запуск доберёт остальных сам; при графике онлайна следует за кривой. 0, пока запуск ждёт |
run.ends_at | Когда запуск остановится сам. null — срок не назначен |
Запуск не завершается с концом эфира. Когда эфир заканчивается, зрители останавливаются, запуск переходит в waiting и продолжается со следующим эфиром — пока его не остановят или не наступит ends_at.
Чтобы следить за запусками, периодически читайте GET /channels: один запрос возвращает все каналы с их запусками. Учитывайте ограничения частоты: для дашборда достаточно запроса раз в 15–30 секунд.
Изменить
Работающий запуск меняется без остановки:
/channels/ch_12/runcurl 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 }'API_KEYМеняются число зрителей (не больше потолка канала), доли списка и рейда, плавающий онлайн. Новые значения сохраняются и в настройках канала — число зрителей в start_viewers, — и следующий запуск начнётся с них. Запрос задаёт значения, а не прибавляет, поэтому его можно безопасно повторить.
Если сервис запусков применил изменение не целиком, API отвечает 502 run_partially_updated. Повторите запрос.
Потолок канала — PATCH /channels/{id} с полем viewers — ограничивает все запуски канала: идущий запуск с большим числом зрителей опустится до нового потолка.
Остановить
/channels/ch_12/stopcurl https://api.skystream.su/app/v1/channels/ch_12/stop \ -X POST \ -H "Authorization: Bearer $API_KEY"API_KEY{ "channel_id": "ch_12", "stopped": true, "channel_deleted": false}Если запуска нет, запрос отклоняется с ошибкой 409 run_not_active. Разовый канал удаляется вместе с запуском; об этом говорит channel_deleted: true. Подробнее — в руководстве Разовый запуск.
Срок запуска
Запуск останавливается сам в момент run.ends_at. Наибольший срок одного запуска задаёт владелец сервиса. У обычного канала этот срок назначается автоматически при запуске; ends_at равно null, только если владелец сервиса отключил автоматическую остановку. У разового канала срок задаётся при запуске.
Кроме того, запуск останавливается, когда истекает срок лимита аккаунта.
История
GET /runs возвращает запуски аккаунта от новых к старым, постранично, в том числе завершённые:
/runs?channel_id=ch_12&limit=20curl "https://api.skystream.su/app/v1/runs?channel_id=ch_12&limit=20" \ -H "Authorization: Bearer $API_KEY"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 | Сервис запусков не выполнил запрос. Повторите позже |