Documentación de la API

Crea flujos de autorización de Twitch, 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 180 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.

Parámetros

include_sensitiveOpcional

boolean · consulta

Incluir los permisos marcados como sensibles en el catálogo.

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "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
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 temporarily unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/workflows

Crear un flujo de autorización

Crea un flujo de 24 horas con la aplicación compartida de Twitch de TTG. La respuesta separa la URL pública de autorización de la clave privada de recuperación.

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.

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.

titleOpcional

string · cuerpo

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

Cuerpo JSON de la solicitud

{
  "scope_ids": [
    28,
    29
  ],
  "title": "Example integration"
}

Respuesta

HTTP 201
Creado
application/json
Respuesta de ejemplo
{
  "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
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
No se pudo procesar la solicitud
application/json
Respuesta de ejemplo
{
  "message": "unable to process request",
  "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",
  "refresh_token": "EXAMPLE_REFRESH_TOKEN",
  "scopes": [
    "chat:read",
    "chat:edit"
  ],
  "status": "authorized",
  "success": true,
  "user_id": "123456789",
  "username": "exampleuser"
}
HTTP 202
Autorización pendiente
application/json
Respuesta de ejemplo
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "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 404
Flujo no encontrado
application/json
Respuesta de ejemplo
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenciales caducadas o ya recuperadas
application/json
Respuesta de ejemplo
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
No se pudo procesar la solicitud
application/json
Respuesta de ejemplo
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
application/json
Respuesta de ejemplo
{
  "message": "service temporarily 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

scopesObligatorio

string · consulta

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

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.

nonceOpcional

string · consulta

Valor opcional para evitar la caché, hasta 128 bytes UTF-8. No es una clave de idempotencia.

Respuesta

HTTP 200
Respuesta correcta
text/plain
Respuesta de ejemplo
{
  "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
Solicitud no válida
text/plain
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
text/plain
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
No se pudo procesar la solicitud
text/plain
Respuesta de ejemplo
{
  "message": "unable to process request",
  "success": false
}
Probar este endpoint
GET /api/v2/ai/workflows/{id}/{key}

Recuperar credenciales de IA mediante GET

Alternativa GET con la clave de recuperación en la URL. El JSON se sirve como text/plain. Una lectura correcta consume las credenciales almacenadas.

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
text/plain
Respuesta de ejemplo
{
  "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
Autorización pendiente
text/plain
Respuesta de ejemplo
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Token o clave de recuperación no válidos
text/plain
Respuesta de ejemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Flujo no encontrado
text/plain
Respuesta de ejemplo
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenciales caducadas o ya recuperadas
text/plain
Respuesta de ejemplo
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
text/plain
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
No se pudo procesar la solicitud
text/plain
Respuesta de ejemplo
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Servicio no disponible temporalmente
text/plain
Respuesta de ejemplo
{
  "message": "service temporarily unavailable",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/refresh

Actualizar token de acceso

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 Twitch.

Parámetros

client_idOpcional

string · cuerpo

ID de cliente de la aplicación de Twitch. Omítelo para usar la aplicación compartida de TTG.

client_secretOpcional

string · cuerpo

Secreto de cliente de la aplicación de Twitch. 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 Twitch.

Cuerpo JSON de la solicitud

{
  "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_in": 3600,
  "refresh_token": "EXAMPLE_REFRESH_TOKEN",
  "scopes": [
    "chat:read",
    "chat:edit"
  ],
  "success": true
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Falló la solicitud a Twitch
application/json
Respuesta de ejemplo
{
  "message": "Twitch request failed",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/revoke

Revocar tu token de acceso

Invalida el token de acceso indicado. Incluye el client_id de su aplicación si es distinta de la aplicación compartida de TTG.

Parámetros

access_tokenObligatorio

string · cuerpo

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

client_idOpcional

string · cuerpo

ID de cliente de la aplicación de Twitch. Omítelo para usar la aplicación compartida de TTG.

Cuerpo JSON de la solicitud

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Respuesta

HTTP 200
Respuesta correcta
application/json
Respuesta de ejemplo
{
  "success": true
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Falló la solicitud a Twitch
application/json
Respuesta de ejemplo
{
  "message": "Twitch request failed",
  "success": false
}
Probar este endpoint
POST /api/v2/tokens/validate

Validar un token

Consulta la cuenta, la aplicación, los permisos concedidos y la vigencia restante del token.

Parámetros

access_tokenObligatorio

string · cuerpo

Token de acceso de Twitch 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
{
  "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
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 502
Falló la solicitud a Twitch
application/json
Respuesta de ejemplo
{
  "message": "Twitch request failed",
  "success": false
}
Probar este endpoint
POST /api/v2/token-requests

Solicitar un token a un usuario

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

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.

Cuerpo JSON de la solicitud

{
  "my_email": "developer@example.com",
  "my_name": "Example developer",
  "scope_ids": [
    28,
    29
  ]
}

Respuesta

HTTP 201
Creado
application/json
Respuesta de ejemplo
{
  "id": "example-request",
  "success": true,
  "url": "https://twitchtokengenerator.com/request/example-request"
}
HTTP 400
Solicitud no válida
application/json
Respuesta de ejemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Límite de solicitudes alcanzado
application/json
Respuesta de ejemplo
{
  "message": "rate limit exceeded",
  "success": false
}
Probar este endpoint

Compatibilidad con la API anterior

Las rutas /api/ existentes siguen disponibles. Usa los endpoints v2 para nuevas integraciones; los formatos de respuesta y la autenticación de recuperación son distintos.

Ruta anteriorSustitución 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