Заказ услуг со счёта
Ставки, суммы, суточный потолок трат, заказы, продления и отмены.
Через API можно заказать просмотры, фолловеров, чат-ботов и чат-панель. Заказ оплачивается со счёта аккаунта сразу при оформлении. Для заказа у ключа должно быть право billing.
Защита от лишних списаний
У каждого денежного запроса два предохранителя:
| Предохранитель | Что делает |
|---|---|
Idempotency-Key | Обязателен. Повтор запроса с тем же ключом возвращает тот же заказ и второй раз не списывает. См. Идемпотентность |
| Суточный потолок ключа | Больше этой суммы ключ не потратит за сутки по московскому времени |
Во всех случаях отказа деньги не списываются.
Ставки
GET /prices возвращает ставки для вашего аккаунта — с учётом наценки и личных скидок — и пределы заказов:
/pricescurl https://api.skystream.su/app/v1/prices \ -H "Authorization: Bearer $API_KEY"API_KEY{ "currency": "RUB", "views": { "available": true, "unit_amount_decimal": "3.5", "discount_percent": 10, "min": 100, "max": 50000 }}Ставка — десятичная строка в копейках за единицу. Сумма заказа — количество × ставка, округлённое до копейки. Для чат-услуг ставка указана за один аккаунт на один час: сумма — аккаунты × часы × ставка.
Пример: 1000 просмотров по ставке "3.5" стоят 3500 копеек, то есть 35 рублей.
Точную сумму заказа возвращает ответ на заказ в поле price.
Оформить заказ
/orders/viewscurl https://api.skystream.su/app/v1/orders/views \ -X POST \ -H "Authorization: Bearer $API_KEY" \ -H "Idempotency-Key: 7c0a5f4e-2b1d-4c9e-9a51-3f6d8e2b1c40" \ -H "Content-Type: application/json" \ -d '{ "channel": "example_channel", "views": 1000 }'API_KEYОтвет 201 — заказ. Списанная сумма — в price: 1000 просмотров по ставке "3.5" — 3500 копеек.
{ "id": "vo_3f9c2a7b1e4d8605", "status": "queued", "channel": "example_channel", "price": { "amount": 3500, "currency": "RUB" }, "created_at": "2026-09-29T12:00:00.000Z", "completed_at": null, "type": "views", "platform": "twitch", "views": { "count": 1000, "unique_ratio": 3 }}Поле type определяет, какой вложенный объект есть у заказа: views, followers, chat_bots или chat_panel.
| Операция | Что заказывает |
|---|---|
POST /orders/views | Просмотры канала Twitch. География и источники берутся из настроек канала |
POST /orders/followers | Фолловеров канала Twitch |
POST /orders/chat-bots | Чат-ботов на Twitch или Kick, с сообщениями из запроса |
POST /orders/chat-panel | Чат-панель на Twitch или Kick |
Заказы выполняются на аккаунтах сервиса. Id заказа чат-панели — он же id панели: писать в чат от имени её аккаунтов, голосовать и ставить баллы канала можно запросами /chat-panels/{id} с правом chat_panel — см. Чат-панель.
Чат-боты и чат-панель к моменту ответа уже запущены: их status — active. Если запустить их не удалось, сумма возвращается на счёт и в суточный потолок ключа, а API отвечает 502 order_not_started; запрос можно повторить с тем же Idempotency-Key.
Суточный потолок трат
Потолок задаётся в панели для каждого ключа с правом billing. Сутки считаются по московскому времени. Сколько ключ потратил сегодня, показывает key.spent_today в GET /account, а сам потолок — key.daily_spend_limit.
Заказ, который превысил бы потолок, отклоняется с ошибкой 403 daily_spend_limit_exceeded; в описании указаны потраченное и остаток:
{ "error": { "type": "permission", "code": "daily_spend_limit_exceeded", "message": "Заказ на 35 ₽ превысит суточный потолок трат ключа: за сутки потрачено 4 980 ₽ из 5 000 ₽, осталось 20 ₽. Потолок меняется в панели; счётчик обнуляется в полночь по Москве.", "request_id": "req_2f9cA1bQ7xLm0Rk4TzP8sWd3" }}Потолок учитывается при каждом списании, в том числе при параллельных запросах: несколько одновременных заказов вместе его тоже не превысят.
В потраченное за сутки возвращаются деньги заказа, который не запустился при оформлении (order_not_started). Возвраты позже — отмена заказа поддержкой, невыполненный заказ — возвращаются на счёт, но не в потраченное ключом за сутки.
Статусы заказа
status | Что значит |
|---|---|
queued | Заказ принят и ещё не выполняется |
active | Выполняется |
completed | Выполнен, или истёк срок чат-услуги |
failed | Не выполнен |
cancelled | Отменён |
Состояние заказа — GET /orders/{id}; все заказы — GET /orders с отбором по type и status.
Продлить и отменить
Чат-ботов и чат-панель можно продлить и отменить, пока они работают.
Продление прибавляет минуты к сроку и списывает их стоимость. Ставка продления — extend_unit_amount_decimal у самого заказа; стоимость — аккаунты × минуты / 60 × ставка, округлённое до копейки.
/orders/cb_12/extendcurl https://api.skystream.su/app/v1/orders/cb_12/extend \ -X POST \ -H "Authorization: Bearer $API_KEY" \ -H "Idempotency-Key: 9b1f6c2e-7d3a-4e58-b0c9-4a2e8f1d6c73" \ -H "Content-Type: application/json" \ -d '{ "minutes": 60 }'API_KEYОтвет — продлённый заказ и списанная за продление сумма. Фрагмент ответа для 5 аккаунтов по ставке "250": 5 × 60 / 60 × 250 = 1250 копеек.
{ "order": { "id": "cb_12", "status": "active", "type": "chat_bots", "chat_bots": { "accounts": 5, "duration_minutes": 180, "ends_at": "2026-09-29T15:00:00.000Z", "extend_unit_amount_decimal": "250" } }, "charged": { "amount": 1250, "currency": "RUB" }}Отмена останавливает заказ; деньги за оставшееся время не возвращаются:
/orders/cb_12/cancelcurl https://api.skystream.su/app/v1/orders/cb_12/cancel \ -X POST \ -H "Authorization: Bearer $API_KEY"API_KEYЗаказы просмотров и фолловеров после оформления не продлеваются и не отменяются.
Операции по счёту
Все списания и зачисления — заказы, продления, автопросмотры, пополнения, возвраты — возвращает GET /transactions. Сумма операции со знаком: расход отрицательный, приход положительный.
Автопросмотры — не заказы: их поминутные списания видны только в операциях.
Ошибки
| Код | Когда |
|---|---|
idempotency_key_missing | Не передан Idempotency-Key |
insufficient_funds | На счёте недостаточно средств |
daily_spend_limit_exceeded | Заказ превысил бы суточный потолок ключа |
quantity_out_of_range, duration_out_of_range, interval_out_of_range | Значение вне пределов из /prices |
active_limit_reached | Работает наибольшее число чат-панелей на площадке |
service_disabled | Услуга временно недоступна |
order_not_started | Сервис не принял заказ; деньги возвращены |
order_not_active | Заказ не работает: для продления и отмены |