Документация Streamrise API
Аутентификация
Все запросы к API требуют аутентификации с помощью API-ключа. Ваш ключ можно найти в разделе Профиль.
Способы передачи ключа
Query-параметр: ?key=YOUR_API_KEYТело запроса (POST): key=YOUR_API_KEYCookie: key=YOUR_API_KEY
Пример запроса
GET /api/getOrders?key=YOUR_API_KEY
POST /perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "services"
}PerfectPanel API
Совместимый со стандартом PerfectPanel API. Все запросы выполняются через один эндпоинт методом POST.
| HTTP-метод | POST |
| URL API | https://streamrise.ru/perfectPanel |
| Формат ответа | JSON |
https://streamrise.ru/perfectPanelПолучение списка доступных услуг с ценами.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "services" |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "services"
}Пример ответа
[
{
"service": 1,
"name": "Twitch Viewers",
"type": "Default",
"category": "Twitch",
"rate": "0.90",
"min": "10",
"max": "10000",
"cancel": true
},
{
"service": 2,
"name": "Twitch Chatbots",
"type": "Custom Comments",
"category": "Twitch",
"rate": "8.00",
"min": "10",
"max": "1500",
"cancel": false
}
]https://streamrise.ru/perfectPanelПолучение текущего баланса аккаунта.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "balance" |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "balance"
}Пример ответа
{
"balance": "100.84",
"currency": "USD"
}https://streamrise.ru/perfectPanelПроверка статуса одного или нескольких заказов.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "status" |
order* | string | ID заказа |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "status",
"order": 12345
}Пример ответа
{
"charge": "0.27",
"start_count": "3572",
"status": "In progress",
"remains": "157",
"currency": "USD"
}Пример ошибки
{
"error": "Incorrect order ID"
}https://streamrise.ru/perfectPanelПроверка статуса нескольких заказов одновременно (до 100 ID через запятую).
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "status" |
orders* | string | ID заказов (через запятую, до 100) |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "status",
"orders": "12345,12346,99999"
}Пример ответа
{
"12345": {
"charge": "0.27",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
},
"12346": {
"charge": "1.44",
"start_count": "234",
"status": "In progress",
"remains": "10",
"currency": "USD"
},
"99999": {
"error": "Incorrect order ID"
}
}https://streamrise.ru/perfectPanelСоздание нового заказа на выбранную услугу.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "add" |
service* | string | ID услуги |
link* | string | Ссылка на канал/страницу |
quantity* | string | Необходимое количество |
interval | string | Интервал в минутах Необязательный |
runs | string | Количество запусков Необязательный |
comments | string | Список комментариев (разделённых \n) Необязательный |
periodAmount | string | Период (количество) Необязательный |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "add",
"service": 1,
"link": "https://twitch.tv/username",
"quantity": 100
}Пример ответа
{
"order": 23501
}https://streamrise.ru/perfectPanelОтмена активных заказов.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
action* | string | "cancel" |
orders* | string | ID заказов (через запятую, до 100) |
Пример ответа
Пример запроса
POST https://streamrise.ru/perfectPanel
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"action": "cancel",
"orders": "23501,23502"
}Пример ответа
[
{
"order": 23501,
"cancel": 1
},
{
"order": 23502,
"cancel": {
"error": "Incorrect order ID"
}
}
]Нативный API
Нативный API предоставляет расширенный набор операций с заказами. Все эндпоинты требуют аутентификации.
https://streamrise.ru/api/getFamilyServicesПолучение списка семейств услуг (верхнеуровневые категории: twitch, kick и т.д.).
| Параметр | Тип | Описание |
|---|---|---|
key | string | Ваш API-ключ Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getFamilyServicesПример ответа
[
{ "service": "twitch", "order": 1 },
{ "service": "kick", "order": 2 },
{ "service": "youtube", "order": 3 },
{ "service": "tiktok", "order": 4 }
]https://streamrise.ru/api/getServicesПолный каталог услуг с конфигурацией. Возвращает ключи услуг (например twitchViewersPeriod), их семейства, типы и доступные параметры. Без ключа — публичные данные, с ключом — персонализированные.
| Параметр | Тип | Описание |
|---|---|---|
key | string | Ваш API-ключ Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getServices?key=YOUR_API_KEYПример ответа
{
"services": {
"twitch": {
"twitchViewers": {
"service": "twitchViewers",
"serviceFamily": "twitch",
"serviceType": "viewers",
"enabled": true,
"fieldsData": { ... }
},
"twitchViewersPeriod": {
"service": "twitchViewersPeriod",
"serviceFamily": "twitch",
"serviceType": "viewers",
"enabled": true,
"fieldsData": { ... }
},
"twitchChatBots": {
"service": "twitchChatBots",
"serviceFamily": "twitch",
"serviceType": "chatbots",
"enabled": true,
"fieldsData": { ... }
}
},
"kick": { ... }
},
"types": { ... }
}Доступные услуги
Интерактивная таблица ваших доступных услуг. Нажмите на семейство чтобы раскрыть список.
https://streamrise.ru/api/getPricesТаблица цен для всех или конкретной услуги. Цены зависят от вашего аккаунта и скидки.
| Параметр | Тип | Описание |
|---|---|---|
key | string | Ваш API-ключ Необязательный |
service | string | Фильтр по ключу услуги (необязательный) Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getPrices?key=YOUR_API_KEY&service=twitchViewersПример ответа
{
"twitchViewers": {
"1": {
"10": 0.90,
"50": 4.20,
"100": 7.80
}
}
}https://streamrise.ru/api/availableToSendКакие параметры возвращаются при чтении заказов (whitelist полей).
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/availableToSend?key=YOUR_API_KEYПример ответа
{
"twitchViewers": ["channel", "amount", "interval"],
"twitchChatBots": ["channel", "amount", "comments"],
"types": {
"viewers": ["channel", "amount"],
"chatbots": ["channel", "amount", "comments"]
}
}https://streamrise.ru/api/availableToChangeКакие параметры можно изменить у существующего заказа.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/availableToChange?key=YOUR_API_KEYПример ответа
{
"twitchViewers": ["channel", "amount"],
"twitchChatBots": ["channel", "comments"],
"types": {
"viewers": ["channel", "amount"],
"chatbots": ["channel", "comments"]
}
}https://streamrise.ru/api/availableToUpgradeКакие параметры можно изменить при апгрейде заказа.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/availableToUpgrade?key=YOUR_API_KEYПример ответа
{
"twitchViewers": ["amount"],
"twitchViewersPeriod": ["amount", "period"],
"types": {
"viewers": ["amount"]
}
}https://streamrise.ru/api/newOrderСоздание нового заказа.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
service* | string | ID услуги |
channel* | string | Канал (ссылка или имя) |
amount* | string | Количество |
period | string | Период подписки Необязательный |
periodAmount | string | Период (количество) Необязательный |
interval | string | Интервал в минутах Необязательный |
comments | string | Список комментариев (разделённых \n) Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/newOrder?key=YOUR_API_KEY&service=twitchViewers&channel=username&amount=100Пример ответа
{
"orderId": 12345,
"order": {
"id": 12345,
"service": "twitchViewers",
"channel": "username",
"amount": 100,
"status": "active"
}
}Пример ошибки
{
"error": {
"channel": "channelEmpty"
}
}https://streamrise.ru/api/getOrdersПолучение списка активных заказов.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
ids | string | ID заказов (через запятую) Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getOrders?key=YOUR_API_KEYПример ответа
{
"12345": {
"id": 12345,
"service": "twitchViewers",
"channel": "username",
"amount": 100,
"pause": false
},
"12346": {
"id": 12346,
"service": "twitchChatBots",
"channel": "username2",
"amount": 50,
"pause": true
}
}https://streamrise.ru/api/getOrdersPageПолучение заказов с постраничной навигацией, сортировкой и поиском.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
start | number | Смещение (начало, для пагинации) Необязательный |
end | number | Смещение (конец, для пагинации) Необязательный |
total | boolean | Запросить общее количество Необязательный |
sortKey | string | Поле сортировки Необязательный |
sortDirection | string | Направление сортировки (asc/desc) Необязательный |
searchValue | string | Поисковый запрос Необязательный |
serviceType | string | Тип услуги Необязательный |
ids | string | ID заказов (через запятую) Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getOrdersPage?key=YOUR_API_KEY&start=0&end=15&total=true&sortKey=orderTime&sortDirection=descПример ответа
{
"history": [
{
"id": 12345,
"service": "twitchViewers",
"channel": "username",
"amount": 100,
"orderTime": 1711500000000,
"pause": false
}
],
"total": "42"
}https://streamrise.ru/api/pauseOrderПриостановка активного заказа.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/pauseOrder?key=YOUR_API_KEY&id=12345Пример ответа
200 OKhttps://streamrise.ru/api/resumeOrderВозобновление приостановленного заказа.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/resumeOrder?key=YOUR_API_KEY&id=12345Пример ответа
200 OKhttps://streamrise.ru/api/deleteOrderУдаление заказа с возвратом неиспользованных средств.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/deleteOrder?key=YOUR_API_KEY&id=12345Пример ответа
200 OKhttps://streamrise.ru/api/calculateUpgradePriceРасчёт стоимости изменения параметров заказа перед применением.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
order* | object | Изменение параметров существующего заказа (количество, период и т.д.). |
Пример ответа
Пример запроса
POST https://streamrise.ru/api/calculateUpgradePrice?key=YOUR_API_KEY
Content-Type: application/json
{
"id": 12345,
"order": {
"amount": 200
}
}Пример ответа
{
"price": 5.50,
"totalDiscount": 0.55
}https://streamrise.ru/api/upgradeOrderИзменение параметров существующего заказа (количество, период и т.д.).
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
order* | object | Изменение параметров существующего заказа (количество, период и т.д.). |
Пример ответа
Пример запроса
POST https://streamrise.ru/api/upgradeOrder?key=YOUR_API_KEY
Content-Type: application/json
{
"id": 12345,
"order": {
"amount": 200
}
}Пример ответа
200 OKhttps://streamrise.ru/api/changeOrderИзменение параметров заказа (канал, настройки чата и т.д.).
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
id* | string | ID заказа |
order* | object | Изменение параметров заказа (канал, настройки чата и т.д.). |
Пример ответа
Пример запроса
POST https://streamrise.ru/api/changeOrder?key=YOUR_API_KEY
Content-Type: application/json
{
"id": 12345,
"order": {
"channel": "new_channel_name"
}
}Пример ответа
200 OKПример ошибки
{
"error": {
"channel": "Invalid channel name"
}
}https://streamrise.ru/api/getParamsLimitsПолучение допустимых диапазонов значений параметров для услуг.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Ваш API-ключ |
service | string | ID услуги Необязательный |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/getParamsLimits?key=YOUR_API_KEY&service=twitchViewersПример ответа
{
"amount": {
"min": 10,
"max": 10000
},
"interval": {
"min": 1,
"max": 60
}
}https://streamrise.ru/api/validateOrderPropertyПроверка значения конкретного параметра заказа перед созданием.
| Параметр | Тип | Описание |
|---|---|---|
service* | string | ID услуги |
field* | string | Название поля |
value* | string | Значение для проверки |
Пример ответа
Пример запроса
GET https://streamrise.ru/api/validateOrderProperty?service=twitchViewers&field=channel&value=usernameПример ответа (OK)
200 OKПример ошибки
{
"error": {
"channel": "Channel not found"
}
}В реальном времени
Статус заказа передаётся по WebSocket — тот же живой поток, на котором работает панель Streamrise. Используйте его вместо цикла опроса; /api/getOrders остаётся запасным вариантом. Классические HTTP-вебхуки (POST на ваш URL) запланированы и пока не работают.
wss://streamrise.ruОткройте WebSocket-соединение с wss://streamrise.ru, первым сообщением отправьте свой API-ключ, затем подпишитесь на поток ordersUpdates. Когда создаётся новый заказ, сразу приходит его полный снимок; дальше приходят только изменившиеся поля — они собираются и отправляются раз в 250 мс. Отправляются только поля, которые разрешено читать вашему ключу. Число сокетов на ключ ограничено: по умолчанию одновременно можно держать открытыми 25 сокетов (партнёрам лимит задаётся для каждого ключа), и открытая вкладка панели Streamrise занимает один из них. Поток охватывает все ваши заказы — чтобы следить за одним заказом, отбирайте сообщения по его id на своей стороне. Чтобы остановить поток, отправьте сообщение unsubscribe для ordersUpdates.
| Параметр | Тип | Описание |
|---|---|---|
key* | string | Сообщение 1, сразу после подключения: JSON-объект с вашим API-ключом в поле "key". На верный ключ приходит ответ "auth". На неверный ключ ответа нет: сообщения, отправленные во время проверки ключа, теряются, на следующие приходит "no auth", а новое сообщение с "key" запускает проверку заново. |
event* | string | Сообщение 2 и следующие, после ответа "auth": "subscribe" — включить поток, "unsubscribe" — остановить его. |
thread* | string | Отправляется вместе с "event". Укажите "ordersUpdates" — поток по всем вашим заказам. |
Пример запроса
wscat (npm i -g wscat). Строки с > — то, что отправляете вы, строки с < — ответы сервера.
wscat -c wss://streamrise.ru
< {"event":"socketClientId","socketClientId":13}
> {"key": "YOUR_API_KEY"}
< {"event":"auth","message":"Authenticated","socketsLeft":24}
> {"event": "subscribe", "thread": "ordersUpdates"}
< {"event":"subscribe","message":"subscribed to ordersUpdates"}
< {"event":"threadMessage","thread":"ordersUpdates","message":{"orders":{"12345":{"activeThreads":87,"online":true}}}}Node.js
const WebSocket = require('ws');
const ws = new WebSocket('wss://streamrise.ru');
ws.on('open', () => ws.send(JSON.stringify({ key: 'YOUR_API_KEY' })));
ws.on('message', (m) => {
const msg = JSON.parse(m.toString());
if (msg.event === 'auth') {
ws.send(JSON.stringify({ event: 'subscribe', thread: 'ordersUpdates' }));
}
if (msg.event === 'threadMessage' && msg.thread === 'ordersUpdates') {
console.log(msg.message.orders); // { "<orderId>": { ...изменившиеся поля } }
}
if (msg.event === 'too many' || msg.event === 'no auth' || msg.event === 'error') {
console.error(msg); // слишком много сокетов / неверный ключ / команда отклонена
}
});
ws.on('close', (code) => console.log('closed', code)); // здесь переподключениеОтветы сервера
// Новый заказ — полный снимок, сразу (сокращено)
{"event":"threadMessage","thread":"ordersUpdates","message":{"orders":{"12345":{"id":12345,"channel":"username","service":"twitchViewers","amount":100,"activeThreads":0,"online":false,"pause":false,"completed":false}}}}
// Только изменившиеся поля — раз в 250 мс, несколько заказов в одном сообщении
{"event":"threadMessage","thread":"ordersUpdates","message":{"orders":{"12345":{"activeThreads":87,"online":true},"12346":{"pause":true}}}}
// Отписка подтверждена
{"event":"unsubscribe","message":"unsubscribed from ordersUpdates"}
// Команда до верного ключа
{"event":"no auth","message":"you should authenticate to use socket, send your key in key property"}
// Слишком много сокетов на этот ключ — сокет закрывается
{"event":"too many","message":"Too many sockets connected for this client"}Первый запрос — за две минуты.
Четыре шага от нового аккаунта до живого заказа. Нужны пополненный аккаунт Streamrise и ссылка на канал.
- 1
Создайте аккаунт Streamrise
Зарегистрируйтесь в панели — регистрация бесплатная. Вы пополняете баланс, и каждый заказ оплачивается из него.
- 2
Скопируйте API-ключ
Ключ показан в панели управления, в разделе «API»: там его можно скопировать. Обращайтесь с ним как с паролем — любой, у кого он есть, может тратить ваш баланс.
- 3
Сохраните ключ в переменной окружения
export STREAMRISE_KEY=YOUR_API_KEY - 4
Отправьте первый заказ
Заказ создаётся одним запросом. Ответ
200содержит ID заказа.
Получить API-ключ →curl "https://streamrise.ru/api/newOrder?key=$STREAMRISE_KEY&service=twitchViewers&channel=yourchannel&amount=100"
Каждый запрос несёт ключ.
Куда вставить ключ
PerfectPanel читает key из JSON-тела запроса, собственные эндпоинты /api/* — из строки запроса. Подойдёт и cookie key — как удобнее вашему стеку.
Некоторым запросам ключ не нужен
Проверка поля (/api/validateOrderProperty) открыта: название канала можно проверить ещё до регистрации.
Как получить ключ
Откройте панель управления, раздел «API», и скопируйте ключ. Аккаунт бесплатный — вы платите только за заказы с баланса.
Каждая ошибка — расшифрована.
Ошибка приходит в поле error в одном из двух видов: строка — от PerfectPanel, объект «поле — причина» — от собственных эндпоинтов /api/*.
| Где | Ответ с ошибкой | Когда возникает | Как исправить |
|---|---|---|---|
perfectPanel | { "error": "Incorrect order ID" } | ID заказа неизвестен или не относится к этому ключу. | Проверьте, что этот ID был выдан именно этому аккаунту. |
perfectPanel | { "error": "Access denied" } | Действие не разрешено для этого ключа. | Используйте ключ, которому разрешено это действие. |
perfectPanel | { "error": "Service doesn't support cancel" } | Услугу нельзя отменить. | Сначала проверьте поле cancel у услуги в каталоге. |
/api/* | { "error": { "channel": "channelEmpty" } } | Обязательное поле осталось пустым. | Посмотрите, какое поле указано в ошибке, и передайте значение. |
/api/* | { "error": { "channel": "Channel not found" } } | Канал не существует или недоступен. | Сначала проверьте его через /api/validateOrderProperty. |
/api/* | { "error": { "channel": "Invalid channel name" } } | Поле не прошло проверку при изменении или расширении заказа. | Исправьте указанное поле и отправьте запрос снова. |
оба | { "error": "..." } | Ключ key не передан, неверен или отозван. | Передайте действующий ключ из панели управления, раздел «API». |
На что мы ориентируемся.
Возврат
Невыполненные или отменённые единицы полностью возвращаются на баланс.
Вопросы или инцидент? Напишите нам через контакты.
Стабильно и без версий.
API Streamrise стабилен и не версионируется. Новые услуги, поля и эндпоинты добавляются, не ломая существующие вызовы, — не нужно отслеживать переходы между версиями и сроки отключения.
Два интерфейса: совместимый с PerfectPanel эндпоинт и собственные /api/*, оба с авторизацией по key.
Новые услуги и поля добавляются без изменения формата существующих запросов и ответов.
Вебхуки, лимиты частоты запросов по тарифам и опубликованная история изменений.
Частые вопросы.
Поддержка разработчиков
Пришлите ID заказа и точный запрос, который вы отправили, — так мы сможем отследить его напрямую.
Контакты →Как получить API-ключ Streamrise?
Войдите в аккаунт Streamrise и откройте в панели управления раздел «API»: ключ показан там, его можно скопировать. Обращайтесь с ним как с паролем — с его помощью тратится ваш баланс.
Есть ли у API Streamrise ограничение частоты запросов?
Сейчас принудительного ограничения частоты запросов нет. Пожалуйста, распределяйте массовые вызовы разумно; опубликованные тарифы по объёму — в планах.
Есть ли у Streamrise вебхуки?
Пока нет — вебхуки в планах. Чтобы отслеживать выполнение, опрашивайте /api/getOrders или status в PerfectPanel.
Делает ли Streamrise докрутку или возврат по заказам?
Отдельного эндпоинта для докрутки сейчас нет. Невыполненные или отменённые единицы возвращаются на баланс.
Есть ли у API версии?
Нет. API стабилен и не версионируется — новые услуги и поля добавляются, не ломая существующие вызовы.
Как избежать дублей заказов при повторных попытках?
Ключа идемпотентности сейчас нет, поэтому не повторяйте вслепую запрос на запись, который мог уже пройти, — сначала проверьте /api/getOrders.