Documentazione API
Crea flussi di autorizzazione Twitch, consulta i permessi e gestisci i token con l’API v2.
Flusso di autorizzazione
- Consulta il catalogo e scegli gli ID dei permessi attivi necessari alla tua integrazione.
- Crea un flusso. Mantieni privata la chiave di recupero e apri authorization_url nel browser del titolare dell’account.
- Dopo l’autorizzazione, recupera le credenziali una sola volta. Salva il token di accesso e il token di aggiornamento più recente.
I flussi scadono dopo 24 ore. Un recupero riuscito consuma le credenziali memorizzate. Attendi almeno cinque secondi tra le verifiche in attesa.
Autenticazione e limiti
Il recupero usa la chiave privata del flusso come credenziale Bearer. Gli altri endpoint usano i dati indicati sotto. L’API v2 consente 180 richieste al minuto per IP; HTTP 429 indica il raggiungimento del limite.
Riferimento degli endpoint
GET /api/v2/scopes
Permessi disponibili per il token
Consulta ID, nomi, descrizioni e disponibilità dei permessi attuali. Questa richiesta non richiede credenziali.
Parametri
include_sensitiveFacoltativoboolean· queryIncludere i permessi contrassegnati come sensibili nel catalogo.
Risposta
HTTP 200- Risposta riuscita
application/jsonRisposta di esempio
{ "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- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 503- Servizio temporaneamente non disponibile
application/jsonRisposta di esempio
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/workflows
Crea un flusso di autorizzazione
Crea un flusso di 24 ore con l’applicazione Twitch condivisa di TTG. La risposta separa l’URL pubblico di autorizzazione dalla chiave privata di recupero.
Parametri
ai_agentFacoltativostring· corpoNome facoltativo del client IA, fino a 64 byte UTF-8 senza caratteri di controllo. Serve per l’attribuzione, non per l’autenticazione.
is_aiFacoltativoboolean· corpoContrassegnare un flusso come assistito da IA.
redirect_urlFacoltativostring· corpoDestinazione HTTP o HTTPS assoluta facoltativa dopo l’autorizzazione. Non sono ammesse credenziali nell’URL.
scope_idsFacoltativoarray· corpoID numerici dal catalogo. Scegli permessi attivi, al massimo 150 distinti.
titleFacoltativostring· corpoNome dell’applicazione, fino a 500 byte UTF-8.
Corpo JSON della richiesta
{
"scope_ids": [
28,
29
],
"title": "Example integration"
}
Risposta
HTTP 201- Creato
application/jsonRisposta di esempio
{ "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- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossibile elaborare la richiesta
application/jsonRisposta di esempio
{ "message": "unable to process request", "success": false }
GET /api/v2/workflows/{id}
Recupera le credenziali del flusso
Restituisce le credenziali una sola volta dopo l’autorizzazione. Invia la chiave del flusso come credenziale Bearer. Una lettura riuscita consuma le credenziali memorizzate.
Parametri
idObbligatoriostring· percorsoID del flusso restituito alla creazione.
AuthorizationObbligatorioBearer· intestazioneChiave privata di recupero restituita alla creazione del flusso. Non inserirla nei link pubblici.
Risposta
HTTP 200- Risposta riuscita
application/jsonRisposta di esempio
{ "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- Autorizzazione ancora in attesa
application/jsonRisposta di esempio
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Token o chiave di recupero non validi
application/jsonRisposta di esempio
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flusso non trovato
application/jsonRisposta di esempio
{ "message": "workflow not found", "success": false } HTTP 410- Credenziali scadute o già recuperate
application/jsonRisposta di esempio
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossibile elaborare la richiesta
application/jsonRisposta di esempio
{ "message": "unable to process request", "success": false } HTTP 503- Servizio temporaneamente non disponibile
application/jsonRisposta di esempio
{ "message": "service temporarily unavailable", "success": false }
GET /api/v2/ai/workflows/create
Crea un flusso IA tramite GET
Alternativa GET per client che possono solo consultare URL. Crea un flusso usando i nomi dei permessi e restituisce un URL privato di recupero. Il JSON viene servito come text/plain.
Parametri
scopesObbligatoriostring· queryNomi dei permessi separati da virgole. Il parametro deve essere presente; un valore vuoto non richiede permessi.
ai_agentFacoltativostring· queryNome facoltativo del client IA, fino a 64 byte UTF-8 senza caratteri di controllo. Serve per l’attribuzione, non per l’autenticazione.
nonceFacoltativostring· queryValore facoltativo per evitare la cache, fino a 128 byte UTF-8. Non è una chiave di idempotenza.
Risposta
HTTP 200- Risposta riuscita
text/plainRisposta di esempio
{ "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- Richiesta non valida
text/plainRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
text/plainRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossibile elaborare la richiesta
text/plainRisposta di esempio
{ "message": "unable to process request", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
Recupera le credenziali IA tramite GET
Alternativa GET con la chiave di recupero nell’URL. Il JSON viene servito come text/plain. Una lettura riuscita consuma le credenziali memorizzate.
Parametri
idObbligatoriostring· percorsoID del flusso restituito alla creazione.
keyObbligatoriostring· percorsoChiave privata di recupero restituita alla creazione del flusso. Non inserirla nei link pubblici.
Risposta
HTTP 200- Risposta riuscita
text/plainRisposta di esempio
{ "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- Autorizzazione ancora in attesa
text/plainRisposta di esempio
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Token o chiave di recupero non validi
text/plainRisposta di esempio
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flusso non trovato
text/plainRisposta di esempio
{ "message": "workflow not found", "success": false } HTTP 410- Credenziali scadute o già recuperate
text/plainRisposta di esempio
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite di richieste raggiunto
text/plainRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossibile elaborare la richiesta
text/plainRisposta di esempio
{ "message": "unable to process request", "success": false } HTTP 503- Servizio temporaneamente non disponibile
text/plainRisposta di esempio
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/tokens/refresh
Aggiorna token di accesso
Rinnova un token di accesso con un token di aggiornamento. Fornisci client_id e client_secret per rinnovare un token della tua applicazione Twitch.
Parametri
client_idFacoltativostring· corpoID client dell’applicazione Twitch. Omettilo per usare l’applicazione condivisa di TTG.
client_secretFacoltativostring· corpoSegreto client dell’applicazione Twitch. Per il rinnovo, forniscilo insieme a client_id.
refresh_tokenObbligatoriostring· corpoToken di aggiornamento più recente per l’account e l’applicazione Twitch.
Corpo JSON della richiesta
{
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
Risposta
HTTP 200- Risposta riuscita
application/jsonRisposta di esempio
{ "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- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 502- Richiesta a Twitch non riuscita
application/jsonRisposta di esempio
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/revoke
Revoca il tuo token di accesso
Invalida il token di accesso fornito. Specifica il client_id della sua applicazione se è diversa dall’applicazione condivisa di TTG.
Parametri
access_tokenObbligatoriostring· corpoToken di accesso Twitch da consultare o revocare, senza prefisso oauth:.
client_idFacoltativostring· corpoID client dell’applicazione Twitch. Omettilo per usare l’applicazione condivisa di TTG.
Corpo JSON della richiesta
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Risposta
HTTP 200- Risposta riuscita
application/jsonRisposta di esempio
{ "success": true } HTTP 400- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 502- Richiesta a Twitch non riuscita
application/jsonRisposta di esempio
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/validate
Verifica un token
Consulta account, applicazione, permessi concessi e durata residua del token.
Parametri
access_tokenObbligatoriostring· corpoToken di accesso Twitch da consultare o revocare, senza prefisso oauth:.
Corpo JSON della richiesta
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Risposta
HTTP 200- Risposta riuscita
application/jsonRisposta di esempio
{ "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- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 401- Token o chiave di recupero non validi
application/jsonRisposta di esempio
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 502- Richiesta a Twitch non riuscita
application/jsonRisposta di esempio
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
Generatore di link rapidi
Crea un link riutilizzabile con gli ID dei permessi scelti. auth=stay apre il generatore; auth=authorize avvia l’autorizzazione Twitch.
Parametri
authFacoltativostring· corpostay apre il generatore. authorize e l’alias di compatibilità auth_auth avviano immediatamente l’autorizzazione.
scope_idsFacoltativoarray· corpoID numerici dal catalogo. Scegli permessi attivi, al massimo 150 distinti.
Corpo JSON della richiesta
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
Risposta
HTTP 201- Creato
application/jsonRisposta di esempio
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossibile elaborare la richiesta
application/jsonRisposta di esempio
{ "message": "unable to process request", "success": false }
POST /api/v2/token-requests
Richiedi un token a un utente
Crea un link di richiesta di autorizzazione. Quando il titolare dell’account completa l’autorizzazione, le credenziali vengono inviate a my_email.
Parametri
my_emailObbligatoriostring· corpoIndirizzo e-mail che riceve le credenziali dopo il completamento della richiesta.
my_nameObbligatoriostring· corpoNome del richiedente, fino a 128 byte UTF-8.
scope_idsFacoltativoarray· corpoID numerici dal catalogo. Scegli permessi attivi, al massimo 150 distinti.
Corpo JSON della richiesta
{
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
28,
29
]
}
Risposta
HTTP 201- Creato
application/jsonRisposta di esempio
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- Richiesta non valida
application/jsonRisposta di esempio
{ "message": "invalid request", "success": false } HTTP 429- Limite di richieste raggiunto
application/jsonRisposta di esempio
{ "message": "rate limit exceeded", "success": false }
Compatibilità con l’API precedente
Le route /api/ esistenti restano disponibili. Usa gli endpoint v2 per le nuove integrazioni; i formati delle risposte e l’autenticazione del recupero sono diversi.
| Route precedente | Sostituzione 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 |