Шаблоны аккаунтов
Свои аккаунты 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 | Площадка или сервис проверки не ответили — проверьте позже |
Какие аккаунты уходят в заказ — в разделе Заказ на своих аккаунтах.
Создать
Аккаунты передаются строками в любом формате панели или объектами:
/account-listscurl 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 } ] }'API_KEY| Площадка | Форматы строки |
|---|---|
| Twitch | токен, логин:токен, логин:oauth:токен, логин:пароль:oauth:токен |
| Kick | 123456|секрет, логин:токен, токен:логин, токен:почта:пароль: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 и (или) по итогу проверки |
Удалить нерабочие — как кнопка «Удалить нерабочие» в панели:
/account-lists/al_12/accounts/removecurl 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" ] }'API_KEYВыключить аккаунт:
/account-lists/al_12/accountscurl 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 }'API_KEYОтвет на любую правку — шаблон после неё, changed — сколько аккаунтов затронуто, not_found_ids — переданные id, которых в шаблоне нет. Правки, пришедшие одновременно, не затирают друг друга.
Прочитать аккаунты
/account-lists/al_12/accounts?status=restricted&limit=100curl "https://api.streamgrow.me/app/v1/account-lists/al_12/accounts?status=restricted&limit=100" \ -H "Authorization: Bearer $API_KEY"API_KEYАккаунты идут в порядке строк, страницами до 1000 штук: следующая страница — с starting_after, равным id последнего аккаунта. Отбор — по итогу проверки (status, в том числе not_checked) и по enabled.
Токены целиком отдаются только по include=tokens и только ключу с правом accounts; без права такой запрос отклоняется с ошибкой 403 insufficient_scope. Токен — секрет: по нему аккаунтом пользуются и вне сервиса. Выдавайте право accounts только тем интеграциям, которым токены действительно нужны.
Проверить
/account-lists/al_12/checkcurl 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 }'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:
/account-lists/al_12/accounts/acc_3f9a2c1b7d4e5f60/badgecurl 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" }'API_KEYЗначки открываются по последней проверке шаблона: без неё, пока она идёт или когда её сессия у площадки истекла, ответ — 409 badge_session_expired. Проверьте шаблон и повторите запрос. Выбранный значок виден в check.badge аккаунта.
Шаблоны сообщений
/message-listscurl https://api.streamgrow.me/app/v1/message-lists \ -X POST \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Приветствия", "messages": [ "Всем привет!", "Какой сегодня план на стрим?" ] }'API_KEYСообщений — до 200, каждое — одна строка до 500 знаков: перевод строки чат обрезал бы. PATCH /message-lists/{id} меняет название и (или) сообщения целиком.
Заказ на своих аккаунтах
/orders/chat-botscurl 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" }'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 | Сервис проверки не ответил — повторите позже |