Документация API
Создавайте процессы авторизации Kick, проверяйте разрешения и управляйте токенами через API v2.
Процесс авторизации
- Изучите каталог разрешений и выберите ID активных разрешений, необходимых вашей интеграции.
- Создайте процесс. Сохраните ключ получения в тайне и откройте authorization_url в браузере владельца аккаунта.
- После авторизации получите учётные данные один раз. Сохраните токен доступа и последний токен обновления.
Процессы действуют 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/quick-links
Быстрая ссылка
Создаёт многоразовую ссылку с выбранными ID разрешений. auth=stay открывает генератор; auth=authorize запускает авторизацию Kick.
Параметры
authНеобязательноstring· телоstay открывает генератор. authorize и совместимый псевдоним auth_auth сразу запускают авторизацию.
scope_idsНеобязательноarray· телоЧисловые ID из каталога. Выбирайте активные разрешения; не более 150 различных разрешений.
scopesНеобязательноarray· телоНазвания разрешений через запятую. Параметр должен присутствовать; пустое значение означает отсутствие разрешений.
Тело запроса JSON
{
"auth": "stay",
"scope_ids": [
6
]
}
Ответ
HTTP 201- Создано
application/jsonПример ответа
{ "success": true, "url": "https://kicktokengen.com/quick/Ab3dEf8_" } 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/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 }