STREAMGROW API

Шаблоны аккаунтов

Свои аккаунты Twitch и Kick, их проверка и значки, шаблоны сообщений и заказы на своих аккаунтах.

Шаблон аккаунтов — список своих аккаунтов Twitch или Kick. На них работают заказы чат-панели, чат-ботов и фолловеров: в заказе указывается account_list_id, и услуга идёт не на аккаунтах сервиса, а на ваших. Цена та же. Шаблон сообщений — список сообщений для чат-ботов.

Читать шаблоны может любой ключ. Создавать, менять и удалять их, проверять аккаунты, выбирать значки и читать токены целиком — ключ с правом accounts. Заказ на шаблоне — право billing, как у любого заказа.

Аккаунт

ПолеЧто значит
idОтпечаток токена: acc_ и 16 знаков. Тот же токен — тот же id в любом шаблоне. Номер строки и логин для адресации не годятся: строки сдвигаются при правке, логина может не быть
loginЛогин. null — в строке его нет; его узнаёт и дописывает проверка
enabledВключён ли аккаунт. Выключенный остаётся в шаблоне, но не уходит ни в проверку, ни в заказы
tokenМаска токена: начало и конец. Целиком — только по include=tokens у ключа с правом accounts
lineСтрока шаблона как она хранится — с паролем и почтой, если они в ней есть. Только по include=tokens
checkИтог последней проверки или null, если аккаунт ещё не проверялся

Итог проверки (check.status):

СтатусЧто значит
workingАккаунт рабочий
restrictedАккаунт живой, но ограничен: например, чату нужен телефон. Причина — в reason и reason_text
invalidНерабочий: токен недействителен или аккаунт заблокирован
unknownПлощадка или сервис проверки не ответили — проверьте позже

Какие аккаунты уходят в заказ — в разделе Заказ на своих аккаунтах.

Создать

Аккаунты передаются строками в любом формате панели или объектами:

POST/account-lists
curl https://api.streamgrow.me/app/v1/account-lists \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "Основные",    "platform": "twitch",    "accounts": [      "night_owl_77:k3x9q2m8v1c7z5t0w4e6r2y8u1i3a1f0",      {        "token": "p0q8w7e6r5t4y3u2i1o9p8a7s6d577zd",        "enabled": false      }    ]  }'
bash, zshКлюч — в переменной API_KEY
ПлощадкаФорматы строки
Twitchтокен, логин:токен, логин:oauth:токен, логин:пароль:oauth:токен
Kick123456|секрет, логин:токен, токен:логин, токен:почта:пароль:2fa

# в начале строки — аккаунт выключен. Площадка задаётся при создании и не меняется. Повторы токена пропускаются. Первая негодная строка отклоняет весь запрос с ошибкой account_line_invalid; номер аккаунта в запросе — в param.

Сколько шаблонов можно держать и сколько аккаунтов в одном — templates.max_account_lists и templates.max_accounts_per_list в GET /account. Шаблон, который уже больше предела, можно уменьшать, но не увеличивать.

Тело запроса со списком аккаунтов — до 1000 КБ. Большой список передавайте частями: POST /account-lists/{id}/accounts добавляет в конец. Токены в журнал запросов не попадают — вместо них маска.

Изменить аккаунты

ЗапросЧто делает
POST /account-lists/{id}/accountsДобавляет в конец. Уже известные токены пропускаются — их число в skipped_duplicates
PUT /account-lists/{id}/accountsЗаменяет все аккаунты; пустой массив очищает шаблон
PATCH /account-lists/{id}/accountsВключает или выключает аккаунты по id
POST /account-lists/{id}/accounts/removeУдаляет по id и (или) по итогу проверки

Удалить нерабочие — как кнопка «Удалить нерабочие» в панели:

POST/account-lists/al_12/accounts/remove
curl https://api.streamgrow.me/app/v1/account-lists/al_12/accounts/remove \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "status": [      "invalid"    ]  }'
bash, zshКлюч — в переменной API_KEY

Выключить аккаунт:

PATCH/account-lists/al_12/accounts
curl https://api.streamgrow.me/app/v1/account-lists/al_12/accounts \  -X PATCH \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "ids": [      "acc_51e0b3c9d2f7a846"    ],    "enabled": false  }'
bash, zshКлюч — в переменной API_KEY

Ответ на любую правку — шаблон после неё, changed — сколько аккаунтов затронуто, not_found_ids — переданные id, которых в шаблоне нет. Правки, пришедшие одновременно, не затирают друг друга.

Прочитать аккаунты

GET/account-lists/al_12/accounts?status=restricted&limit=100
curl "https://api.streamgrow.me/app/v1/account-lists/al_12/accounts?status=restricted&limit=100" \  -H "Authorization: Bearer $API_KEY"
bash, zshКлюч — в переменной API_KEY

Аккаунты идут в порядке строк, страницами до 1000 штук: следующая страница — с starting_after, равным id последнего аккаунта. Отбор — по итогу проверки (status, в том числе not_checked) и по enabled.

Токены целиком отдаются только по include=tokens и только ключу с правом accounts; без права такой запрос отклоняется с ошибкой 403 insufficient_scope. Токен — секрет: по нему аккаунтом пользуются и вне сервиса. Выдавайте право accounts только тем интеграциям, которым токены действительно нужны.

Проверить

POST/account-lists/al_12/check
curl https://api.streamgrow.me/app/v1/account-lists/al_12/check \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "chat_test": true  }'
bash, zshКлюч — в переменной API_KEY

Проверка смотрит включённые аккаунты: рабочий ли токен, может ли аккаунт писать в чат и подписываться, привязаны ли телефон и почта. Она идёт минуты. Ход — GET /account-lists/{id}/check, конец — событием account_list.check_completed или account_list.check_failed в событиях и вебхуках.

  • Одновременно у аккаунта идёт одна проверка — любого шаблона. Вторая отклоняется с ошибкой 409 account_check_running.
  • Между запусками — пауза. Длительность — templates.check_cooldown_seconds, когда можно запустить — templates.next_check_at в GET /account. Пауза одна на все шаблоны и на панель. Раньше времени — 429 account_check_cooldown с заголовком Retry-After.

Итоги сохраняются, даже если ход никто не спрашивает. Логины, которые назвала проверка, дописываются в строки без логина. Ответ «не удалось проверить» не затирает прежний уверенный итог: сбой площадки не превращает рабочий аккаунт в непроверенный.

check.status у шаблона: none — не проверялся, starting — проверка запускается, running — идёт, completed — закончилась, failed — закрыта без итогов, причина — в check.error.reason: lost — сервис проверки её потерял, timeout — шла дольше 30 минут, not_started — не запустилась.

Значки Twitch

GET /account-lists/{id}/accounts/{account_id}/badges возвращает значки аккаунта: выбранный глобальный, показанные в чате и доступные. Выбрать — PUT …/badge с set_id из доступных, снять — DELETE …/badge:

PUT/account-lists/al_12/accounts/acc_3f9a2c1b7d4e5f60/badge
curl https://api.streamgrow.me/app/v1/account-lists/al_12/accounts/acc_3f9a2c1b7d4e5f60/badge \  -X PUT \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "set_id": "premium"  }'
bash, zshКлюч — в переменной API_KEY

Значки открываются по последней проверке шаблона: без неё, пока она идёт или когда её сессия у площадки истекла, ответ — 409 badge_session_expired. Проверьте шаблон и повторите запрос. Выбранный значок виден в check.badge аккаунта.

Шаблоны сообщений

POST/message-lists
curl https://api.streamgrow.me/app/v1/message-lists \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "Приветствия",    "messages": [      "Всем привет!",      "Какой сегодня план на стрим?"    ]  }'
bash, zshКлюч — в переменной API_KEY

Сообщений — до 200, каждое — одна строка до 500 знаков: перевод строки чат обрезал бы. PATCH /message-lists/{id} меняет название и (или) сообщения целиком.

Заказ на своих аккаунтах

POST/orders/chat-bots
curl https://api.streamgrow.me/app/v1/orders/chat-bots \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Idempotency-Key: 3e8d1a6f-5c2b-4f90-8a17-6b4c2d9e0f15" \  -H "Content-Type: application/json" \  -d '{    "platform": "twitch",    "channel": "example_channel",    "accounts": 3,    "hours": 2,    "account_list_id": "al_12",    "message_list_id": "ml_3"  }'
bash, zshКлюч — в переменной API_KEY
  • Шаблон проверяется до списания: свой, той же площадки, с включёнными аккаунтами. Иначе — account_list_not_found, account_list_platform_mismatch или account_list_empty, и ничего не списывается.
  • Чат-боты и чат-панель берут включённые аккаунты с учётом последней проверки: на Twitch — рабочие и ещё не проверенные, на Kick — все, кроме нерабочих.
  • Чат-боты встают только на аккаунты шаблона, по одному боту на аккаунт: годных аккаунтов должно быть не меньше accounts, иначе — account_list_too_small до списания. Если сервис при запуске не принял часть аккаунтов, заказ не запускается, сумма возвращается, ответ — 502 order_not_started.
  • Чат-панель берёт их все запасом: аккаунт, который не может писать в чат, она заменяет следующим из шаблона, а когда шаблон кончится — аккаунтом сервиса.
  • Фолловеры берут все включённые аккаунты, без оглядки на проверку, и читают шаблон, когда заказ уходит в работу. Правка шаблона до этого момента в заказ попадёт; если шаблон к этому моменту удалён или пуст, фолловеры пойдут с аккаунтов сервиса.
  • Сообщения чат-ботов — messages или message_list_id, не оба. Заказ берёт копию сообщений: правка или удаление шаблона его не меняют.

В объекте заказа account_list_id и message_list_id показывают, на каком шаблоне он оформлен. Удаление шаблона не останавливает чат-ботов и чат-панель: аккаунты переданы им при оформлении.

Ошибки

КодКогда
resource_missingШаблона нет, он чужой или идентификатор не того вида
account_line_invalidСтрока не похожа на аккаунт площадки шаблона
account_list_limit_reachedШаблонов уже столько, сколько можно держать
account_list_too_largeАккаунтов стало бы больше предела
account_not_foundАккаунта с таким id в шаблоне нет
account_list_emptyВ шаблоне нет включённых аккаунтов
account_check_runningУже идёт проверка этого или другого шаблона
account_check_cooldownПауза между проверками не вышла
account_login_unknownЛогин аккаунта ещё неизвестен — нужна проверка
badge_session_expiredНет проверки, она идёт или её сессия истекла
badge_not_removableЗначок показывает сам Twitch, снять его нельзя
platform_not_supportedЗначки и chat_test — у шаблона Kick
message_list_limit_reachedШаблонов сообщений уже столько, сколько можно держать
service_unavailableСервис проверки не ответил — повторите позже

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