Documentación de la API

Crea flujos de autorización de Kick, consulta permisos y gestiona tokens con la API v2.

Descargar OpenAPI

Flujo de autorización

  1. Consulta el catálogo de permisos y elige los ID activos que necesita tu integración.
  2. Crea un flujo. Mantén privada su clave de recuperación y abre authorization_url en el navegador del titular de la cuenta.
  3. Tras la autorización, recupera las credenciales una sola vez. Guarda el token de acceso y el último token de actualización.

Los flujos caducan a las 24 horas. Una recuperación correcta consume las credenciales almacenadas. Espera al menos cinco segundos entre consultas pendientes.

Autenticación y límites

La recuperación usa la clave privada del flujo como credencial Bearer. Los demás endpoints usan los datos indicados abajo. La API v2 permite 120 solicitudes por minuto e IP; HTTP 429 indica que se alcanzó el límite.

Referencia de endpoints

GET /api/v2/scopes

Permisos disponibles para el token

Consulta los ID, nombres, descripciones y disponibilidad de los permisos actuales. Esta solicitud no necesita credenciales.

Este endpoint no tiene parámetros de solicitud.

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "scopes": [
    {
      "description": "Send chat messages as the authorized account.",
      "id": 6,
      "scope": "chat:write",
      "secret": false
    }
  ],
  "success": true
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/workflows

Crear un flujo de autorización

Crea un flujo de autorización de 24 horas. Usa el modo compartido si está habilitado o envía tus credenciales de aplicación en el cuerpo POST.

Parámetros

ai_agentOpcional

string · cuerpo

Nombre opcional del cliente de IA, hasta 64 bytes UTF-8 sin caracteres de control. Sirve para atribución, no para autenticación.

credentialsOpcional

object · cuerpo

Usa tu aplicación de desarrollador Kick. Deja ambos campos vacíos solo si el modo compartido está disponible. Las credenciales permanecen en la memoria de esta pestaña y se cifran temporalmente en el servidor durante la autorización.

is_aiOpcional

boolean · cuerpo

Marcar un flujo como asistido por IA.

redirect_urlOpcional

string · cuerpo

Destino HTTP o HTTPS absoluto opcional tras la autorización. No se permiten credenciales en la URL.

scope_idsOpcional

array · cuerpo

ID numéricos del catálogo. Elige permisos activos; como máximo 150 distintos.

scopesOpcional

array · cuerpo

Nombres de permisos separados por comas. El parámetro debe estar presente; un valor vacío no solicita permisos.

titleOpcional

string · cuerpo

Nombre de la aplicación, hasta 500 bytes UTF-8.

Cuerpo JSON de la solicitud

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

Respuesta

HTTP 201
Creado
application/json
Respuesta de ejemplo
{
  "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
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
GET /api/v2/workflows/{id}

Recuperar credenciales del flujo

Devuelve las credenciales una sola vez tras la autorización. Envía la clave del flujo como credencial Bearer. Una lectura correcta consume las credenciales almacenadas.

Parámetros

idObligatorio

string · ruta

ID del flujo devuelto al crearlo.

AuthorizationObligatorio

Bearer · cabecera

Clave privada de recuperación devuelta al crear el flujo. No la incluyas en enlaces públicos.

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "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
Autorización pendiente
application/json
Respuesta de ejemplo
{
  "status": "pending",
  "success": false
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Credenciales caducadas o ya recuperadas
application/json
Respuesta de ejemplo
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
GET /api/v2/ai/workflows/create

Crear un flujo de IA mediante GET

Alternativa GET para clientes que solo pueden consultar URLs. Crea un flujo con nombres de permisos y devuelve una URL privada de recuperación. El JSON se sirve como text/plain.

Parámetros

titleOpcional

string · consulta

Nombre de la aplicación, hasta 500 bytes UTF-8.

scopesOpcional

string · consulta

Nombres de permisos separados por comas. El parámetro debe estar presente; un valor vacío no solicita permisos.

scope_idsOpcional

string · consulta

ID numéricos del catálogo. Elige permisos activos; como máximo 150 distintos.

ai_agentOpcional

string · consulta

Nombre opcional del cliente de IA, hasta 64 bytes UTF-8 sin caracteres de control. Sirve para atribución, no para autenticación.

Respuesta

HTTP 201
Creado
application/json
Respuesta de ejemplo
{
  "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
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
GET /api/v2/ai/workflows/{id}/{key}

Recuperar credenciales de IA mediante GET

URL privada con la clave de recuperación. La respuesta JSON entrega las credenciales una vez; protege la URL como una contraseña.

Parámetros

idObligatorio

string · ruta

ID del flujo devuelto al crearlo.

keyObligatorio

string · ruta

Clave privada de recuperación devuelta al crear el flujo. No la incluyas en enlaces públicos.

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "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
Autorización pendiente
application/json
Respuesta de ejemplo
{
  "status": "pending",
  "success": false
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Credenciales caducadas o ya recuperadas
application/json
Respuesta de ejemplo
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/validate

Validar token

Comprueba la validez y muestra la aplicación emisora, tipo, permisos concedidos y caducidad devueltos por Kick.

Parámetros

access_tokenObligatorio

string · cuerpo

Token de acceso de Kick que se consultará o revocará, sin el prefijo oauth:.

Cuerpo JSON de la solicitud

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "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
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid access token",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/refresh

Token de actualización

Renueva un token de acceso mediante un token de actualización. Incluye client_id y client_secret al renovar un token de tu propia aplicación de Kick.

Parámetros

client_idOpcional

string · cuerpo

ID de cliente de la aplicación de Kick. Omítelo para usar la aplicación compartida de KTG.

client_secretOpcional

string · cuerpo

Secreto de cliente de la aplicación de Kick. Para actualizar, inclúyelo junto con client_id.

refresh_tokenObligatorio

string · cuerpo

Último token de actualización de la cuenta y la aplicación de Kick.

Cuerpo JSON de la solicitud

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

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "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
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid refresh token or client credentials",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/revoke

Revocar token

Revoca un único token de acceso o actualización enviado en el cuerpo POST.

Parámetros

access_tokenOpcional

string · cuerpo

Token de acceso de Kick que se consultará o revocará, sin el prefijo oauth:.

refresh_tokenOpcional

string · cuerpo

Último token de actualización de la cuenta y la aplicación de Kick.

Cuerpo JSON de la solicitud

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "revoked": true,
  "success": true
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid token request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/token-requests

Solicitar token

Crea un enlace de solicitud de autorización. Cuando el titular de la cuenta completa la autorización, las credenciales se envían a my_email.

Parámetros

credentialsOpcional

object · cuerpo

Usa tu aplicación de desarrollador Kick. Deja ambos campos vacíos solo si el modo compartido está disponible. Las credenciales permanecen en la memoria de esta pestaña y se cifran temporalmente en el servidor durante la autorización.

my_emailObligatorio

string · cuerpo

Dirección de correo que recibe las credenciales al completarse la solicitud.

my_nameObligatorio

string · cuerpo

Nombre del solicitante, hasta 128 bytes UTF-8.

scope_idsOpcional

array · cuerpo

ID numéricos del catálogo. Elige permisos activos; como máximo 150 distintos.

scopesOpcional

array · cuerpo

Nombres de permisos separados por comas. El parámetro debe estar presente; un valor vacío no solicita permisos.

Cuerpo JSON de la solicitud

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

Respuesta

HTTP 201
Creado
application/json
Respuesta de ejemplo
{
  "expires_at": "2030-01-02T12:00:00Z",
  "success": true,
  "url": "https://kicktokengen.com/request/EXAMPLE_ID"
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
application/json
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "Service unavailable",
  "success": false
}
Probar este endpoint