Документация API
Создавайте процессы авторизации Twitch, проверяйте разрешения и управляйте токенами через API v2.
Процесс авторизации
- Изучите каталог разрешений и выберите ID активных разрешений, необходимых вашей интеграции.
- Создайте процесс. Сохраните ключ получения в тайне и откройте authorization_url в браузере владельца аккаунта.
- После авторизации получите учётные данные один раз. Сохраните токен доступа и последний токен обновления.
Процессы действуют 24 часа. Успешное получение делает сохранённые учётные данные недоступными для повторного получения. Между проверками ожидающей авторизации выдерживайте не менее пяти секунд.
Аутентификация и ограничения
Для получения данных используется личный ключ процесса в качестве Bearer. Другие методы используют указанные ниже поля. Лимит API v2 — 180 запросов в минуту с одного IP; HTTP 429 означает превышение лимита.
Справочник методов
GET /api/v2/scopes
Доступные разрешения токена
Получите текущие ID, названия, описания и доступность разрешений. Учётные данные для этого запроса не нужны.
Параметры
include_sensitiveНеобязательноboolean· запросВключить в каталог разрешения, отмеченные как чувствительные.
Ответ
HTTP 200- Успешный ответ
application/jsonПример ответа
{ "scopes": [ { "active": true, "api_set": "helix", "description": "View live Stream Chat and Rooms messages.", "id": 28, "scope": "chat:read", "secret": false } ], "success": true } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 503- Сервис временно недоступен
application/jsonПример ответа
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/workflows
Создать процесс авторизации
Создаёт процесс на 24 часа в общем приложении Twitch от TTG. Ответ содержит отдельные публичный URL авторизации и личный ключ получения данных.
Параметры
ai_agentНеобязательноstring· телоНеобязательное имя клиента ИИ: до 64 байт UTF-8 без управляющих символов. Используется для атрибуции, а не аутентификации.
is_aiНеобязательноboolean· телоПометить процесс как выполняемый с помощью ИИ.
redirect_urlНеобязательноstring· телоНеобязательный абсолютный URL HTTP или HTTPS для перехода после авторизации. Учётные данные в URL запрещены.
scope_idsНеобязательноarray· телоЧисловые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.
titleНеобязательноstring· телоНазвание приложения, до 500 байт UTF-8.
Тело запроса JSON
{
"scope_ids": [
28,
29
],
"title": "Example integration"
}
Ответ
HTTP 201- Создано
application/jsonПример ответа
{ "authorization_url": "https://twitchtokengenerator.com/api/example0000000000000", "expires_at": "2030-01-01T12:00:00Z", "id": "example0000000000000", "retrieval_key": "example000000000000000000000000000000000", "status_url": "https://twitchtokengenerator.com/api/v2/workflows/example0000000000000", "success": true } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 500- Не удалось обработать запрос
application/jsonПример ответа
{ "message": "unable to process request", "success": false }
GET /api/v2/workflows/{id}
Получить учётные данные процесса
Возвращает учётные данные один раз после авторизации. Отправьте ключ процесса как Bearer. Успешное чтение исключает повторное получение сохранённых данных.
Параметры
idОбязательноstring· путьID процесса, возвращённый при его создании.
AuthorizationОбязательноBearer· заголовокЛичный ключ получения данных, возвращённый при создании процесса. Не включайте его в публичные ссылки.
Ответ
HTTP 200- Успешный ответ
application/jsonПример ответа
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:read", "chat:edit" ], "status": "authorized", "success": true, "user_id": "123456789", "username": "exampleuser" } HTTP 202- Авторизация ещё ожидается
application/jsonПример ответа
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Недействительный токен или ключ получения
application/jsonПример ответа
{ "message": "invalid retrieval key", "success": false } HTTP 404- Процесс не найден
application/jsonПример ответа
{ "message": "workflow not found", "success": false } HTTP 410- Данные просрочены или уже получены
application/jsonПример ответа
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 500- Не удалось обработать запрос
application/jsonПример ответа
{ "message": "unable to process request", "success": false } HTTP 503- Сервис временно недоступен
application/jsonПример ответа
{ "message": "service temporarily unavailable", "success": false }
GET /api/v2/ai/workflows/create
Создать процесс ИИ через GET
Вариант GET для клиентов, умеющих только читать URL. Создаёт процесс по названиям разрешений и возвращает личный URL получения данных. Ответ JSON передаётся как text/plain.
Параметры
scopesОбязательноstring· запросНазвания разрешений через запятую. Параметр должен присутствовать; пустое значение означает отсутствие разрешений.
ai_agentНеобязательноstring· запросНеобязательное имя клиента ИИ: до 64 байт UTF-8 без управляющих символов. Используется для атрибуции, а не аутентификации.
nonceНеобязательноstring· запросНеобязательное значение для обхода кэша, до 128 байт UTF-8. Это не ключ идемпотентности.
Ответ
HTTP 200- Успешный ответ
text/plainПример ответа
{ "authorization_url": "https://twitchtokengenerator.com/api/example0000000000000", "expires_at": "2030-01-01T12:00:00Z", "id": "example0000000000000", "retrieval_notice": "Keep retrieval_url private: it grants one-time access to the generated credentials. Give the user only authorization_url. Retrieve after they finish authorizing.", "retrieval_url": "https://twitchtokengenerator.com/api/v2/ai/workflows/example0000000000000/example000000000000000000000000000000000", "success": true } HTTP 400- Некорректный запрос
text/plainПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
text/plainПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 500- Не удалось обработать запрос
text/plainПример ответа
{ "message": "unable to process request", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
Получить учётные данные ИИ через GET
Вариант GET с ключом получения в URL. Ответ JSON передаётся как text/plain. Успешное чтение исключает повторное получение сохранённых данных.
Параметры
idОбязательноstring· путьID процесса, возвращённый при его создании.
keyОбязательноstring· путьЛичный ключ получения данных, возвращённый при создании процесса. Не включайте его в публичные ссылки.
Ответ
HTTP 200- Успешный ответ
text/plainПример ответа
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:read", "chat:edit" ], "status": "authorized", "success": true, "user_id": "123456789", "username": "exampleuser" } HTTP 202- Авторизация ещё ожидается
text/plainПример ответа
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Недействительный токен или ключ получения
text/plainПример ответа
{ "message": "invalid retrieval key", "success": false } HTTP 404- Процесс не найден
text/plainПример ответа
{ "message": "workflow not found", "success": false } HTTP 410- Данные просрочены или уже получены
text/plainПример ответа
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Достигнут лимит запросов
text/plainПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 500- Не удалось обработать запрос
text/plainПример ответа
{ "message": "unable to process request", "success": false } HTTP 503- Сервис временно недоступен
text/plainПример ответа
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/tokens/refresh
Обновить токен доступа
Обновляет токен доступа с помощью токена обновления. Для токена своего приложения Twitch укажите и client_id, и client_secret.
Параметры
client_idНеобязательноstring· телоИдентификатор клиента приложения Twitch. Не указывайте его для общего приложения TTG.
client_secretНеобязательноstring· телоСекрет клиента приложения Twitch. При обновлении передавайте вместе с client_id.
refresh_tokenОбязательноstring· телоПоследний токен обновления для аккаунта и приложения Twitch.
Тело запроса JSON
{
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
Ответ
HTTP 200- Успешный ответ
application/jsonПример ответа
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:read", "chat:edit" ], "success": true } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 502- Ошибка запроса к Twitch
application/jsonПример ответа
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/revoke
Отозвать токен доступа
Делает переданный токен доступа недействительным. Укажите client_id его приложения, если это не общее приложение TTG.
Параметры
access_tokenОбязательноstring· телоТокен доступа Twitch для проверки или отзыва, без префикса oauth:.
client_idНеобязательноstring· телоИдентификатор клиента приложения Twitch. Не указывайте его для общего приложения TTG.
Тело запроса JSON
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Ответ
HTTP 200- Успешный ответ
application/jsonПример ответа
{ "success": true } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 502- Ошибка запроса к Twitch
application/jsonПример ответа
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/validate
Проверить токен
Показывает аккаунт, приложение, выданные разрешения и оставшийся срок действия токена.
Параметры
access_tokenОбязательноstring· телоТокен доступа Twitch для проверки или отзыва, без префикса oauth:.
Тело запроса JSON
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Ответ
HTTP 200- Успешный ответ
application/jsonПример ответа
{ "client_id": "EXAMPLE_CLIENT_ID", "expires_in": 3600, "scope_details": [ { "active": true, "api_set": "helix", "description": "View live Stream Chat and Rooms messages.", "id": 28, "scope": "chat:read", "secret": false } ], "scopes": [ "chat:read" ], "success": true, "user_id": "123456789", "username": "exampleuser" } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 401- Недействительный токен или ключ получения
application/jsonПример ответа
{ "message": "invalid retrieval key", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 502- Ошибка запроса к Twitch
application/jsonПример ответа
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
Генератор быстрых ссылок
Создаёт многоразовую ссылку с выбранными ID разрешений. auth=stay открывает генератор; auth=authorize запускает авторизацию Twitch.
Параметры
authНеобязательноstring· телоstay открывает генератор. authorize и совместимый псевдоним auth_auth сразу запускают авторизацию.
scope_idsНеобязательноarray· телоЧисловые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.
Тело запроса JSON
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
Ответ
HTTP 201- Создано
application/jsonПример ответа
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false } HTTP 500- Не удалось обработать запрос
application/jsonПример ответа
{ "message": "unable to process request", "success": false }
POST /api/v2/token-requests
Запросить токен у пользователя
Создаёт ссылку запроса авторизации. После авторизации владельца аккаунта учётные данные отправляются на my_email.
Параметры
my_emailОбязательноstring· телоАдрес электронной почты для получения учётных данных после выполнения запроса.
my_nameОбязательноstring· телоИмя отправителя запроса, до 128 байт UTF-8.
scope_idsНеобязательноarray· телоЧисловые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.
Тело запроса JSON
{
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
28,
29
]
}
Ответ
HTTP 201- Создано
application/jsonПример ответа
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- Некорректный запрос
application/jsonПример ответа
{ "message": "invalid request", "success": false } HTTP 429- Достигнут лимит запросов
application/jsonПример ответа
{ "message": "rate limit exceeded", "success": false }
Совместимость со старым API
Существующие маршруты /api/ по-прежнему поддерживаются. Для новых интеграций используйте v2: форматы ответов и аутентификация получения данных отличаются.
| Старый маршрут | Замена в v2 |
|---|---|
GET /api/scopes/{type} | GET /api/v2/scopes |
GET /api/create/{title}/{scopes} | POST /api/v2/workflows |
GET /api/status/{id} | GET /api/v2/workflows/{id} |
GET /api/forgot/{token} | POST /api/v2/tokens/validate |
GET /api/refresh/{token} | POST /api/v2/tokens/refresh |
GET /api/revoke/{token} | POST /api/v2/tokens/revoke |