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

Создавайте процессы авторизации Twitch, проверяйте разрешения и управляйте токенами через API v2.

Скачать OpenAPI

Процесс авторизации

  1. Изучите каталог разрешений и выберите ID активных разрешений, необходимых вашей интеграции.
  2. Создайте процесс. Сохраните ключ получения в тайне и откройте authorization_url в браузере владельца аккаунта.
  3. После авторизации получите учётные данные один раз. Сохраните токен доступа и последний токен обновления.

Процессы действуют 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/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