Documentazione API

Crea flussi di autorizzazione Twitch, consulta i permessi e gestisci i token con l’API v2.

Scarica OpenAPI

Flusso di autorizzazione

  1. Consulta il catalogo e scegli gli ID dei permessi attivi necessari alla tua integrazione.
  2. Crea un flusso. Mantieni privata la chiave di recupero e apri authorization_url nel browser del titolare dell’account.
  3. 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_sensitiveFacoltativo

boolean · query

Includere i permessi contrassegnati come sensibili nel catalogo.

Risposta

HTTP 200
Risposta riuscita
application/json
Risposta 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/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Servizio temporaneamente non disponibile
application/json
Risposta di esempio
{
  "message": "service temporarily unavailable",
  "success": false
}
Prova questo endpoint
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_agentFacoltativo

string · corpo

Nome facoltativo del client IA, fino a 64 byte UTF-8 senza caratteri di controllo. Serve per l’attribuzione, non per l’autenticazione.

is_aiFacoltativo

boolean · corpo

Contrassegnare un flusso come assistito da IA.

redirect_urlFacoltativo

string · corpo

Destinazione HTTP o HTTPS assoluta facoltativa dopo l’autorizzazione. Non sono ammesse credenziali nell’URL.

scope_idsFacoltativo

array · corpo

ID numerici dal catalogo. Scegli permessi attivi, al massimo 150 distinti.

titleFacoltativo

string · corpo

Nome dell’applicazione, fino a 500 byte UTF-8.

Corpo JSON della richiesta

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

Risposta

HTTP 201
Creato
application/json
Risposta 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/json
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossibile elaborare la richiesta
application/json
Risposta di esempio
{
  "message": "unable to process request",
  "success": false
}
Prova questo endpoint
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

idObbligatorio

string · percorso

ID del flusso restituito alla creazione.

AuthorizationObbligatorio

Bearer · intestazione

Chiave privata di recupero restituita alla creazione del flusso. Non inserirla nei link pubblici.

Risposta

HTTP 200
Risposta riuscita
application/json
Risposta 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/json
Risposta di esempio
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Token o chiave di recupero non validi
application/json
Risposta di esempio
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Flusso non trovato
application/json
Risposta di esempio
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenziali scadute o già recuperate
application/json
Risposta di esempio
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossibile elaborare la richiesta
application/json
Risposta di esempio
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Servizio temporaneamente non disponibile
application/json
Risposta di esempio
{
  "message": "service temporarily unavailable",
  "success": false
}
Prova questo endpoint
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

scopesObbligatorio

string · query

Nomi dei permessi separati da virgole. Il parametro deve essere presente; un valore vuoto non richiede permessi.

ai_agentFacoltativo

string · query

Nome facoltativo del client IA, fino a 64 byte UTF-8 senza caratteri di controllo. Serve per l’attribuzione, non per l’autenticazione.

nonceFacoltativo

string · query

Valore facoltativo per evitare la cache, fino a 128 byte UTF-8. Non è una chiave di idempotenza.

Risposta

HTTP 200
Risposta riuscita
text/plain
Risposta 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/plain
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
text/plain
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossibile elaborare la richiesta
text/plain
Risposta di esempio
{
  "message": "unable to process request",
  "success": false
}
Prova questo endpoint
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

idObbligatorio

string · percorso

ID del flusso restituito alla creazione.

keyObbligatorio

string · percorso

Chiave privata di recupero restituita alla creazione del flusso. Non inserirla nei link pubblici.

Risposta

HTTP 200
Risposta riuscita
text/plain
Risposta 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/plain
Risposta di esempio
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Token o chiave di recupero non validi
text/plain
Risposta di esempio
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Flusso non trovato
text/plain
Risposta di esempio
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenziali scadute o già recuperate
text/plain
Risposta di esempio
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
text/plain
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossibile elaborare la richiesta
text/plain
Risposta di esempio
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Servizio temporaneamente non disponibile
text/plain
Risposta di esempio
{
  "message": "service temporarily unavailable",
  "success": false
}
Prova questo endpoint
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_idFacoltativo

string · corpo

ID client dell’applicazione Twitch. Omettilo per usare l’applicazione condivisa di TTG.

client_secretFacoltativo

string · corpo

Segreto client dell’applicazione Twitch. Per il rinnovo, forniscilo insieme a client_id.

refresh_tokenObbligatorio

string · corpo

Token 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/json
Risposta 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/json
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Richiesta a Twitch non riuscita
application/json
Risposta di esempio
{
  "message": "Twitch request failed",
  "success": false
}
Prova questo endpoint
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_tokenObbligatorio

string · corpo

Token di accesso Twitch da consultare o revocare, senza prefisso oauth:.

client_idFacoltativo

string · corpo

ID 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/json
Risposta di esempio
{
  "success": true
}
HTTP 400
Richiesta non valida
application/json
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Richiesta a Twitch non riuscita
application/json
Risposta di esempio
{
  "message": "Twitch request failed",
  "success": false
}
Prova questo endpoint
POST /api/v2/tokens/validate

Verifica un token

Consulta account, applicazione, permessi concessi e durata residua del token.

Parametri

access_tokenObbligatorio

string · corpo

Token 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/json
Risposta 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/json
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token o chiave di recupero non validi
application/json
Risposta di esempio
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Richiesta a Twitch non riuscita
application/json
Risposta di esempio
{
  "message": "Twitch request failed",
  "success": false
}
Prova questo endpoint
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_emailObbligatorio

string · corpo

Indirizzo e-mail che riceve le credenziali dopo il completamento della richiesta.

my_nameObbligatorio

string · corpo

Nome del richiedente, fino a 128 byte UTF-8.

scope_idsFacoltativo

array · corpo

ID 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/json
Risposta di esempio
{
  "id": "example-request",
  "success": true,
  "url": "https://twitchtokengenerator.com/request/example-request"
}
HTTP 400
Richiesta non valida
application/json
Risposta di esempio
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite di richieste raggiunto
application/json
Risposta di esempio
{
  "message": "rate limit exceeded",
  "success": false
}
Prova questo endpoint

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 precedenteSostituzione 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