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

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

Скачать OpenAPI

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

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

Процессы действуют 24 часа. Успешное получение делает сохранённые учётные данные недоступными для повторного получения. Между проверками ожидающей авторизации выдерживайте не менее пяти секунд.

Аутентификация и ограничения

Для получения данных используется личный ключ процесса в качестве Bearer. Другие методы используют указанные ниже поля. Лимит API v2 — 120 запросов в минуту с одного IP; HTTP 429 означает превышение лимита.

Справочник методов

GET /api/v2/scopes

Доступные разрешения токена

Получите текущие ID, названия, описания и доступность разрешений. Учётные данные для этого запроса не нужны.

У этого метода нет параметров запроса.

Ответ

HTTP 200
Успешный ответ
application/json
Пример ответа
{
  "scopes": [
    {
      "description": "Send chat messages as the authorized account.",
      "id": 6,
      "scope": "chat:write",
      "secret": false
    }
  ],
  "success": true
}
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 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
POST /api/v2/workflows

Создать процесс авторизации

Создаёт процесс авторизации на 24 часа. Используйте включённый общий режим или передайте данные своего приложения в теле POST.

Параметры

ai_agentНеобязательно

string · тело

Необязательное имя клиента ИИ: до 64 байт UTF-8 без управляющих символов. Используется для атрибуции, а не аутентификации.

credentialsНеобязательно

object · тело

Используйте своё приложение разработчика Kick. Оба поля можно оставить пустыми только при доступном общем режиме. Данные остаются в памяти вкладки и временно шифруются на сервере при авторизации.

is_aiНеобязательно

boolean · тело

Пометить процесс как выполняемый с помощью ИИ.

redirect_urlНеобязательно

string · тело

Необязательный абсолютный URL HTTP или HTTPS для перехода после авторизации. Учётные данные в URL запрещены.

scope_idsНеобязательно

array · тело

Числовые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.

scopesНеобязательно

array · тело

Названия разрешений через запятую. Параметр должен присутствовать; пустое значение означает отсутствие разрешений.

titleНеобязательно

string · тело

Название приложения, до 500 байт UTF-8.

Тело запроса JSON

{
  "credentials": {
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET"
  },
  "scope_ids": [
    6
  ],
  "title": "Example integration"
}

Ответ

HTTP 201
Создано
application/json
Пример ответа
{
  "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID",
  "expires_at": "2030-01-02T12:00:00Z",
  "id": "EXAMPLE_ID",
  "retrieval_key": "EXAMPLE_PRIVATE_KEY",
  "status_url": "https://kicktokengen.com/api/v2/workflows/EXAMPLE_ID",
  "success": true
}
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 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "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",
  "expires_at": "2030-01-01T13:00:00Z",
  "expires_in": 3600,
  "refresh_token": "EXAMPLE_REFRESH_TOKEN",
  "scopes": [
    "chat:write"
  ],
  "status": "authorized",
  "success": true,
  "token_type": "Bearer"
}
HTTP 202
Авторизация ещё ожидается
application/json
Пример ответа
{
  "status": "pending",
  "success": false
}
HTTP 400
Некорректный запрос
application/json
Пример ответа
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Недействительный токен или ключ получения
application/json
Пример ответа
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Данные просрочены или уже получены
application/json
Пример ответа
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Достигнут лимит запросов
application/json
Пример ответа
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
GET /api/v2/ai/workflows/create

Создать процесс ИИ через GET

Вариант GET для клиентов, умеющих только читать URL. Создаёт процесс по названиям разрешений и возвращает личный URL получения данных. Ответ JSON передаётся как text/plain.

Параметры

titleНеобязательно

string · запрос

Название приложения, до 500 байт UTF-8.

scopesНеобязательно

string · запрос

Названия разрешений через запятую. Параметр должен присутствовать; пустое значение означает отсутствие разрешений.

scope_idsНеобязательно

string · запрос

Числовые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.

ai_agentНеобязательно

string · запрос

Необязательное имя клиента ИИ: до 64 байт UTF-8 без управляющих символов. Используется для атрибуции, а не аутентификации.

Ответ

HTTP 201
Создано
application/json
Пример ответа
{
  "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID",
  "id": "EXAMPLE_ID",
  "retrieval_url": "https://kicktokengen.com/api/v2/ai/workflows/EXAMPLE_ID/EXAMPLE_PRIVATE_KEY",
  "success": true
}
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 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
GET /api/v2/ai/workflows/{id}/{key}

Получить учётные данные ИИ через GET

Закрытый URL содержит ключ получения. Ответ JSON выдаёт данные один раз; защищайте весь URL как пароль.

Параметры

idОбязательно

string · путь

ID процесса, возвращённый при его создании.

keyОбязательно

string · путь

Личный ключ получения данных, возвращённый при создании процесса. Не включайте его в публичные ссылки.

Ответ

HTTP 200
Успешный ответ
application/json
Пример ответа
{
  "access_token": "EXAMPLE_ACCESS_TOKEN",
  "client_id": "EXAMPLE_CLIENT_ID",
  "expires_at": "2030-01-01T13:00:00Z",
  "expires_in": 3600,
  "refresh_token": "EXAMPLE_REFRESH_TOKEN",
  "scopes": [
    "chat:write"
  ],
  "status": "authorized",
  "success": true,
  "token_type": "Bearer"
}
HTTP 202
Авторизация ещё ожидается
application/json
Пример ответа
{
  "status": "pending",
  "success": false
}
HTTP 400
Некорректный запрос
application/json
Пример ответа
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Недействительный токен или ключ получения
application/json
Пример ответа
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Данные просрочены или уже получены
application/json
Пример ответа
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Достигнут лимит запросов
application/json
Пример ответа
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
POST /api/v2/tokens/validate

Проверить токен

Проверяет токен и показывает приложение, тип, выданные разрешения и срок действия, возвращённые Kick.

Параметры

access_tokenОбязательно

string · тело

Токен доступа Kick для проверки или отзыва, без префикса oauth:.

Тело запроса JSON

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Ответ

HTTP 200
Успешный ответ
application/json
Пример ответа
{
  "active": true,
  "client_id": "EXAMPLE_CLIENT_ID",
  "exp": 1893502800,
  "expires_in": 3600,
  "scope_details": [
    {
      "description": "Send chat messages.",
      "scope": "chat:write"
    }
  ],
  "scopes": [
    "chat:write"
  ],
  "success": true,
  "token_type": "user"
}
HTTP 400
Некорректный запрос
application/json
Пример ответа
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Недействительный токен или ключ получения
application/json
Пример ответа
{
  "message": "invalid access token",
  "success": false
}
HTTP 429
Достигнут лимит запросов
application/json
Пример ответа
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
POST /api/v2/tokens/refresh

Токен обновления

Обновляет токен доступа с помощью токена обновления. Для токена своего приложения Kick укажите и client_id, и client_secret.

Параметры

client_idНеобязательно

string · тело

Идентификатор клиента приложения Kick. Не указывайте его для общего приложения KTG.

client_secretНеобязательно

string · тело

Секрет клиента приложения Kick. При обновлении передавайте вместе с client_id.

refresh_tokenОбязательно

string · тело

Последний токен обновления для аккаунта и приложения Kick.

Тело запроса JSON

{
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET",
  "refresh_token": "EXAMPLE_REFRESH_TOKEN"
}

Ответ

HTTP 200
Успешный ответ
application/json
Пример ответа
{
  "access_token": "EXAMPLE_ACCESS_TOKEN",
  "client_id": "EXAMPLE_CLIENT_ID",
  "expires_at": "2030-01-01T13:00:00Z",
  "expires_in": 3600,
  "refresh_token": "EXAMPLE_REFRESH_TOKEN",
  "scopes": [
    "chat:write"
  ],
  "status": "authorized",
  "success": true,
  "token_type": "Bearer"
}
HTTP 400
Некорректный запрос
application/json
Пример ответа
{
  "message": "invalid refresh token or client credentials",
  "success": false
}
HTTP 401
Недействительный токен или ключ получения
application/json
Пример ответа
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Достигнут лимит запросов
application/json
Пример ответа
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
POST /api/v2/tokens/revoke

Отозвать токен

Отзывает один токен доступа или обновления, переданный в теле POST.

Параметры

access_tokenНеобязательно

string · тело

Токен доступа Kick для проверки или отзыва, без префикса oauth:.

refresh_tokenНеобязательно

string · тело

Последний токен обновления для аккаунта и приложения Kick.

Тело запроса JSON

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Ответ

HTTP 200
Успешный ответ
application/json
Пример ответа
{
  "revoked": true,
  "success": true
}
HTTP 400
Некорректный запрос
application/json
Пример ответа
{
  "message": "invalid token request",
  "success": false
}
HTTP 401
Недействительный токен или ключ получения
application/json
Пример ответа
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Достигнут лимит запросов
application/json
Пример ответа
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод
POST /api/v2/token-requests

Запросить токен

Создаёт ссылку запроса авторизации. После авторизации владельца аккаунта учётные данные отправляются на my_email.

Параметры

credentialsНеобязательно

object · тело

Используйте своё приложение разработчика Kick. Оба поля можно оставить пустыми только при доступном общем режиме. Данные остаются в памяти вкладки и временно шифруются на сервере при авторизации.

my_emailОбязательно

string · тело

Адрес электронной почты для получения учётных данных после выполнения запроса.

my_nameОбязательно

string · тело

Имя отправителя запроса, до 128 байт UTF-8.

scope_idsНеобязательно

array · тело

Числовые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.

scopesНеобязательно

array · тело

Названия разрешений через запятую. Параметр должен присутствовать; пустое значение означает отсутствие разрешений.

Тело запроса JSON

{
  "credentials": {
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET"
  },
  "my_email": "developer@example.com",
  "my_name": "Example developer",
  "scope_ids": [
    6
  ]
}

Ответ

HTTP 201
Создано
application/json
Пример ответа
{
  "expires_at": "2030-01-02T12:00:00Z",
  "success": true,
  "url": "https://kicktokengen.com/request/EXAMPLE_ID"
}
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 503
Сервис временно недоступен
application/json
Пример ответа
{
  "message": "Service unavailable",
  "success": false
}
Попробовать этот метод