Перейти к содержимому

Документация Streamrise API

Аутентификация

Все запросы к API требуют аутентификации с помощью API-ключа. Ваш ключ можно найти в разделе Профиль.

Способы передачи ключа

  • Query-параметр: ?key=YOUR_API_KEY
  • Тело запроса (POST): key=YOUR_API_KEY
  • Cookie: key=YOUR_API_KEY
! Никогда не делитесь своим API-ключом. Если ключ был скомпрометирован, сгенерируйте новый в профиле.

Пример запроса

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 APIhttps://streamrise.ru/perfectPanel
Формат ответаJSON
POSThttps://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
  }
]
POSThttps://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"
}
POSThttps://streamrise.ru/perfectPanel

Проверка статуса одного или нескольких заказов.

ПараметрТипОписание
key*stringВаш API-ключ
action*string"status"
order*stringID заказа

Пример ответа

Пример запроса

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"
}
POSThttps://streamrise.ru/perfectPanel

Проверка статуса нескольких заказов одновременно (до 100 ID через запятую).

ПараметрТипОписание
key*stringВаш API-ключ
action*string"status"
orders*stringID заказов (через запятую, до 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"
  }
}
POSThttps://streamrise.ru/perfectPanel

Создание нового заказа на выбранную услугу.

ПараметрТипОписание
key*stringВаш API-ключ
action*string"add"
service*stringID услуги
link*stringСсылка на канал/страницу
quantity*stringНеобходимое количество
intervalstringИнтервал в минутах Необязательный
runsstringКоличество запусков Необязательный
commentsstringСписок комментариев (разделённых \n) Необязательный
periodAmountstringПериод (количество) Необязательный

Пример ответа

Пример запроса

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
}
POSThttps://streamrise.ru/perfectPanel

Отмена активных заказов.

ПараметрТипОписание
key*stringВаш API-ключ
action*string"cancel"
orders*stringID заказов (через запятую, до 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 предоставляет расширенный набор операций с заказами. Все эндпоинты требуют аутентификации.

GEThttps://streamrise.ru/api/getFamilyServices

Получение списка семейств услуг (верхнеуровневые категории: twitch, kick и т.д.).

ПараметрТипОписание
keystringВаш API-ключ Необязательный

Пример ответа

Пример запроса

GET https://streamrise.ru/api/getFamilyServices

Пример ответа

[
  { "service": "twitch", "order": 1 },
  { "service": "kick", "order": 2 },
  { "service": "youtube", "order": 3 },
  { "service": "tiktok", "order": 4 }
]
GEThttps://streamrise.ru/api/getServices

Полный каталог услуг с конфигурацией. Возвращает ключи услуг (например twitchViewersPeriod), их семейства, типы и доступные параметры. Без ключа — публичные данные, с ключом — персонализированные.

ПараметрТипОписание
keystringВаш 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": { ... }
}

Доступные услуги

Интерактивная таблица ваших доступных услуг. Нажмите на семейство чтобы раскрыть список.

Загрузка...
GEThttps://streamrise.ru/api/getPrices

Таблица цен для всех или конкретной услуги. Цены зависят от вашего аккаунта и скидки.

ПараметрТипОписание
keystringВаш API-ключ Необязательный
servicestringФильтр по ключу услуги (необязательный) Необязательный
! Список услуг и цены зависят от вашего аккаунта и скидки.

Пример ответа

Пример запроса

GET https://streamrise.ru/api/getPrices?key=YOUR_API_KEY&service=twitchViewers

Пример ответа

{
  "twitchViewers": {
    "1": {
      "10": 0.90,
      "50": 4.20,
      "100": 7.80
    }
  }
}
GEThttps://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"]
  }
}
GEThttps://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"]
  }
}
GEThttps://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"]
  }
}
GEThttps://streamrise.ru/api/newOrder

Создание нового заказа.

ПараметрТипОписание
key*stringВаш API-ключ
service*stringID услуги
channel*stringКанал (ссылка или имя)
amount*stringКоличество
periodstringПериод подписки Необязательный
periodAmountstringПериод (количество) Необязательный
intervalstringИнтервал в минутах Необязательный
commentsstringСписок комментариев (разделённых \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"
  }
}
GEThttps://streamrise.ru/api/getOrders

Получение списка активных заказов.

ПараметрТипОписание
key*stringВаш API-ключ
idsstringID заказов (через запятую) Необязательный

Пример ответа

Пример запроса

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
  }
}
GEThttps://streamrise.ru/api/getOrdersPage

Получение заказов с постраничной навигацией, сортировкой и поиском.

ПараметрТипОписание
key*stringВаш API-ключ
startnumberСмещение (начало, для пагинации) Необязательный
endnumberСмещение (конец, для пагинации) Необязательный
totalbooleanЗапросить общее количество Необязательный
sortKeystringПоле сортировки Необязательный
sortDirectionstringНаправление сортировки (asc/desc) Необязательный
searchValuestringПоисковый запрос Необязательный
serviceTypestringТип услуги Необязательный
idsstringID заказов (через запятую) Необязательный

Пример ответа

Пример запроса

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"
}
GEThttps://streamrise.ru/api/pauseOrder

Приостановка активного заказа.

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа

Пример ответа

Пример запроса

GET https://streamrise.ru/api/pauseOrder?key=YOUR_API_KEY&id=12345

Пример ответа

200 OK
GEThttps://streamrise.ru/api/resumeOrder

Возобновление приостановленного заказа.

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа

Пример ответа

Пример запроса

GET https://streamrise.ru/api/resumeOrder?key=YOUR_API_KEY&id=12345

Пример ответа

200 OK
GEThttps://streamrise.ru/api/deleteOrder

Удаление заказа с возвратом неиспользованных средств.

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа

Пример ответа

Пример запроса

GET https://streamrise.ru/api/deleteOrder?key=YOUR_API_KEY&id=12345

Пример ответа

200 OK
POSThttps://streamrise.ru/api/calculateUpgradePrice

Расчёт стоимости изменения параметров заказа перед применением.

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа
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
}
POSThttps://streamrise.ru/api/upgradeOrder

Изменение параметров существующего заказа (количество, период и т.д.).

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа
order*objectИзменение параметров существующего заказа (количество, период и т.д.).

Пример ответа

Пример запроса

POST https://streamrise.ru/api/upgradeOrder?key=YOUR_API_KEY
Content-Type: application/json

{
  "id": 12345,
  "order": {
    "amount": 200
  }
}

Пример ответа

200 OK
POSThttps://streamrise.ru/api/changeOrder

Изменение параметров заказа (канал, настройки чата и т.д.).

ПараметрТипОписание
key*stringВаш API-ключ
id*stringID заказа
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"
  }
}
GEThttps://streamrise.ru/api/getParamsLimits

Получение допустимых диапазонов значений параметров для услуг.

ПараметрТипОписание
key*stringВаш API-ключ
servicestringID услуги Необязательный

Пример ответа

Пример запроса

GET https://streamrise.ru/api/getParamsLimits?key=YOUR_API_KEY&service=twitchViewers

Пример ответа

{
  "amount": {
    "min": 10,
    "max": 10000
  },
  "interval": {
    "min": 1,
    "max": 60
  }
}
GEThttps://streamrise.ru/api/validateOrderProperty

Проверка значения конкретного параметра заказа перед созданием.

ПараметрТипОписание
service*stringID услуги
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) запланированы и пока не работают.

WSwss://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. 1

    Создайте аккаунт Streamrise

    Зарегистрируйтесь в панели — регистрация бесплатная. Вы пополняете баланс, и каждый заказ оплачивается из него.

  2. 2

    Скопируйте API-ключ

    Ключ показан в панели управления, в разделе «API»: там его можно скопировать. Обращайтесь с ним как с паролем — любой, у кого он есть, может тратить ваш баланс.

  3. 3

    Сохраните ключ в переменной окружения

    export STREAMRISE_KEY=YOUR_API_KEY
  4. 4

    Отправьте первый заказ

    Заказ создаётся одним запросом. Ответ 200 содержит ID заказа.

    curl "https://streamrise.ru/api/newOrder?key=$STREAMRISE_KEY&service=twitchViewers&channel=yourchannel&amount=100"
    Получить API-ключ →
Авторизация

Каждый запрос несёт ключ.

Куда вставить ключ

PerfectPanel читает key из JSON-тела запроса, собственные эндпоинты /api/* — из строки запроса. Подойдёт и cookie key — как удобнее вашему стеку.

Некоторым запросам ключ не нужен

Проверка поля (/api/validateOrderProperty) открыта: название канала можно проверить ещё до регистрации.

Как получить ключ

Откройте панель управления, раздел «API», и скопируйте ключ. Аккаунт бесплатный — вы платите только за заказы с баланса.

! Храните ключ на сервере. 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».
Надёжность

На что мы ориентируемся.

100%

Возврат

Невыполненные или отменённые единицы полностью возвращаются на баланс.

Вопросы или инцидент? Напишите нам через контакты.

Изменения

Стабильно и без версий.

API Streamrise стабилен и не версионируется. Новые услуги, поля и эндпоинты добавляются, не ломая существующие вызовы, — не нужно отслеживать переходы между версиями и сроки отключения.

Совместимость

Два интерфейса: совместимый с PerfectPanel эндпоинт и собственные /api/*, оба с авторизацией по key.

Дополнения

Новые услуги и поля добавляются без изменения формата существующих запросов и ответов.

В планах

Вебхуки, лимиты частоты запросов по тарифам и опубликованная история изменений.

Нужна помощь

Частые вопросы.

Поддержка разработчиков

Пришлите ID заказа и точный запрос, который вы отправили, — так мы сможем отследить его напрямую.

Контакты →
Как получить API-ключ Streamrise?

Войдите в аккаунт Streamrise и откройте в панели управления раздел «API»: ключ показан там, его можно скопировать. Обращайтесь с ним как с паролем — с его помощью тратится ваш баланс.

Есть ли у API Streamrise ограничение частоты запросов?

Сейчас принудительного ограничения частоты запросов нет. Пожалуйста, распределяйте массовые вызовы разумно; опубликованные тарифы по объёму — в планах.

Есть ли у Streamrise вебхуки?

Пока нет — вебхуки в планах. Чтобы отслеживать выполнение, опрашивайте /api/getOrders или status в PerfectPanel.

Делает ли Streamrise докрутку или возврат по заказам?

Отдельного эндпоинта для докрутки сейчас нет. Невыполненные или отменённые единицы возвращаются на баланс.

Есть ли у API версии?

Нет. API стабилен и не версионируется — новые услуги и поля добавляются, не ломая существующие вызовы.

Как избежать дублей заказов при повторных попытках?

Ключа идемпотентности сейчас нет, поэтому не повторяйте вслепую запрос на запись, который мог уже пройти, — сначала проверьте /api/getOrders.