Documentación de la API
Crea flujos de autorización de Twitch, consulta permisos y gestiona tokens con la API v2.
Flujo de autorización
- Consulta el catálogo de permisos y elige los ID activos que necesita tu integración.
- Crea un flujo. Mantén privada su clave de recuperación y abre authorization_url en el navegador del titular de la cuenta.
- 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_sensitiveOpcionalboolean· consultaIncluir los permisos marcados como sensibles en el catálogo.
Respuesta
HTTP 200- Respuesta correcta
application/jsonRespuesta 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/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 503- Servicio no disponible temporalmente
application/jsonRespuesta de ejemplo
{ "message": "service temporarily unavailable", "success": false }
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_agentOpcionalstring· cuerpoNombre opcional del cliente de IA, hasta 64 bytes UTF-8 sin caracteres de control. Sirve para atribución, no para autenticación.
is_aiOpcionalboolean· cuerpoMarcar un flujo como asistido por IA.
redirect_urlOpcionalstring· cuerpoDestino HTTP o HTTPS absoluto opcional tras la autorización. No se permiten credenciales en la URL.
scope_idsOpcionalarray· cuerpoID numéricos del catálogo. Elige permisos activos; como máximo 150 distintos.
titleOpcionalstring· cuerpoNombre 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/jsonRespuesta 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/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- No se pudo procesar la solicitud
application/jsonRespuesta de ejemplo
{ "message": "unable to process request", "success": false }
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
idObligatoriostring· rutaID del flujo devuelto al crearlo.
AuthorizationObligatorioBearer· cabeceraClave privada de recuperación devuelta al crear el flujo. No la incluyas en enlaces públicos.
Respuesta
HTTP 200- Respuesta correcta
application/jsonRespuesta 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/jsonRespuesta 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/jsonRespuesta de ejemplo
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flujo no encontrado
application/jsonRespuesta de ejemplo
{ "message": "workflow not found", "success": false } HTTP 410- Credenciales caducadas o ya recuperadas
application/jsonRespuesta de ejemplo
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- No se pudo procesar la solicitud
application/jsonRespuesta de ejemplo
{ "message": "unable to process request", "success": false } HTTP 503- Servicio no disponible temporalmente
application/jsonRespuesta de ejemplo
{ "message": "service temporarily unavailable", "success": false }
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
scopesObligatoriostring· consultaNombres de permisos separados por comas. El parámetro debe estar presente; un valor vacío no solicita permisos.
ai_agentOpcionalstring· consultaNombre opcional del cliente de IA, hasta 64 bytes UTF-8 sin caracteres de control. Sirve para atribución, no para autenticación.
nonceOpcionalstring· consultaValor opcional para evitar la caché, hasta 128 bytes UTF-8. No es una clave de idempotencia.
Respuesta
HTTP 200- Respuesta correcta
text/plainRespuesta 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/plainRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
text/plainRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- No se pudo procesar la solicitud
text/plainRespuesta de ejemplo
{ "message": "unable to process request", "success": false }
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
idObligatoriostring· rutaID del flujo devuelto al crearlo.
keyObligatoriostring· rutaClave privada de recuperación devuelta al crear el flujo. No la incluyas en enlaces públicos.
Respuesta
HTTP 200- Respuesta correcta
text/plainRespuesta 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/plainRespuesta 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/plainRespuesta de ejemplo
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flujo no encontrado
text/plainRespuesta de ejemplo
{ "message": "workflow not found", "success": false } HTTP 410- Credenciales caducadas o ya recuperadas
text/plainRespuesta de ejemplo
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Límite de solicitudes alcanzado
text/plainRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- No se pudo procesar la solicitud
text/plainRespuesta de ejemplo
{ "message": "unable to process request", "success": false } HTTP 503- Servicio no disponible temporalmente
text/plainRespuesta de ejemplo
{ "message": "service temporarily unavailable", "success": false }
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_idOpcionalstring· cuerpoID de cliente de la aplicación de Twitch. Omítelo para usar la aplicación compartida de TTG.
client_secretOpcionalstring· cuerpoSecreto de cliente de la aplicación de Twitch. Para actualizar, inclúyelo junto con client_id.
refresh_tokenObligatoriostring· 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/jsonRespuesta 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/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falló la solicitud a Twitch
application/jsonRespuesta de ejemplo
{ "message": "Twitch request failed", "success": false }
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_tokenObligatoriostring· cuerpoToken de acceso de Twitch que se consultará o revocará, sin el prefijo oauth:.
client_idOpcionalstring· cuerpoID 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/jsonRespuesta de ejemplo
{ "success": true } HTTP 400- Solicitud no válida
application/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falló la solicitud a Twitch
application/jsonRespuesta de ejemplo
{ "message": "Twitch request failed", "success": false }
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_tokenObligatoriostring· cuerpoToken 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/jsonRespuesta 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/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 401- Token o clave de recuperación no válidos
application/jsonRespuesta de ejemplo
{ "message": "invalid retrieval key", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falló la solicitud a Twitch
application/jsonRespuesta de ejemplo
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
Generador de enlaces rápidos
Crea un enlace reutilizable con los ID de permisos elegidos. auth=stay abre el generador; auth=authorize inicia la autorización de Twitch.
Parámetros
authOpcionalstring· cuerpostay abre el generador. authorize y el alias de compatibilidad auth_auth inician la autorización inmediatamente.
scope_idsOpcionalarray· cuerpoID numéricos del catálogo. Elige permisos activos; como máximo 150 distintos.
Cuerpo JSON de la solicitud
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
Respuesta
HTTP 201- Creado
application/jsonRespuesta de ejemplo
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- Solicitud no válida
application/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- No se pudo procesar la solicitud
application/jsonRespuesta de ejemplo
{ "message": "unable to process request", "success": false }
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_emailObligatoriostring· cuerpoDirección de correo que recibe las credenciales al completarse la solicitud.
my_nameObligatoriostring· cuerpoNombre del solicitante, hasta 128 bytes UTF-8.
scope_idsOpcionalarray· cuerpoID 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/jsonRespuesta de ejemplo
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- Solicitud no válida
application/jsonRespuesta de ejemplo
{ "message": "invalid request", "success": false } HTTP 429- Límite de solicitudes alcanzado
application/jsonRespuesta de ejemplo
{ "message": "rate limit exceeded", "success": false }
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 anterior | Sustitució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 |