Documentation de l’API

Créez des flux d’autorisation Twitch, consultez les permissions et gérez les jetons avec l’API v2.

Télécharger OpenAPI

Flux d’autorisation

  1. Consultez le catalogue et choisissez les identifiants des permissions actives nécessaires à votre intégration.
  2. Créez un flux. Gardez sa clé de récupération privée et ouvrez authorization_url dans le navigateur du titulaire du compte.
  3. Après l’autorisation, récupérez les identifiants une seule fois. Enregistrez le jeton d’accès et le dernier jeton de renouvellement.

Les flux expirent après 24 heures. Une récupération réussie consomme les identifiants stockés. Attendez au moins cinq secondes entre les vérifications en attente.

Authentification et limites

La récupération utilise la clé privée du flux comme identifiant Bearer. Les autres endpoints utilisent les données indiquées ci-dessous. L’API v2 autorise 180 requêtes par minute et par IP ; HTTP 429 indique que la limite est atteinte.

Référence des endpoints

GET /api/v2/scopes

Autorisations disponibles pour le jeton

Consultez les identifiants, noms, descriptions et disponibilités des permissions actuelles. Cette requête ne nécessite aucun identifiant.

Paramètres

include_sensitiveFacultatif

boolean · requête

Inclure les permissions marquées comme sensibles dans le catalogue.

Réponse

HTTP 200
Réponse réussie
application/json
Réponse d’exemple
{
  "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 de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "service temporarily unavailable",
  "success": false
}
Essayer cet endpoint
POST /api/v2/workflows

Créer un flux d’autorisation

Crée un flux de 24 heures avec l’application Twitch partagée de TTG. La réponse sépare l’URL publique d’autorisation de la clé privée de récupération.

Paramètres

ai_agentFacultatif

string · corps

Nom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.

is_aiFacultatif

boolean · corps

Marquer un flux comme assisté par IA.

redirect_urlFacultatif

string · corps

Destination HTTP ou HTTPS absolue facultative après l’autorisation. Les identifiants dans l’URL sont interdits.

scope_idsFacultatif

array · corps

Identifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.

titleFacultatif

string · corps

Nom de l’application, jusqu’à 500 octets UTF-8.

Corps JSON de la requête

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

Réponse

HTTP 201
Créé
application/json
Réponse d’exemple
{
  "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
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossible de traiter la requête
application/json
Réponse d’exemple
{
  "message": "unable to process request",
  "success": false
}
Essayer cet endpoint
GET /api/v2/workflows/{id}

Récupérer les identifiants du flux

Renvoie les identifiants une seule fois après l’autorisation. Envoyez la clé du flux comme identifiant Bearer. Une lecture réussie consomme les identifiants stockés.

Paramètres

idObligatoire

string · chemin

Identifiant du flux renvoyé à sa création.

AuthorizationObligatoire

Bearer · en-tête

Clé privée de récupération renvoyée à la création du flux. Ne l’incluez pas dans des liens publics.

Réponse

HTTP 200
Réponse réussie
application/json
Réponse d’exemple
{
  "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
Autorisation toujours en attente
application/json
Réponse d’exemple
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Flux introuvable
application/json
Réponse d’exemple
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Identifiants expirés ou déjà récupérés
application/json
Réponse d’exemple
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossible de traiter la requête
application/json
Réponse d’exemple
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "service temporarily unavailable",
  "success": false
}
Essayer cet endpoint
GET /api/v2/ai/workflows/create

Créer un flux IA via GET

Alternative GET pour les clients limités à la consultation d’URLs. Crée un flux à partir des noms de permissions et renvoie une URL privée de récupération. Le JSON est servi en text/plain.

Paramètres

scopesObligatoire

string · requête

Noms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.

ai_agentFacultatif

string · requête

Nom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.

nonceFacultatif

string · requête

Valeur facultative pour éviter le cache, jusqu’à 128 octets UTF-8. Ce n’est pas une clé d’idempotence.

Réponse

HTTP 200
Réponse réussie
text/plain
Réponse d’exemple
{
  "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
Requête invalide
text/plain
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
text/plain
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossible de traiter la requête
text/plain
Réponse d’exemple
{
  "message": "unable to process request",
  "success": false
}
Essayer cet endpoint
GET /api/v2/ai/workflows/{id}/{key}

Récupérer les identifiants IA via GET

Alternative GET avec la clé de récupération dans l’URL. Le JSON est servi en text/plain. Une lecture réussie consomme les identifiants stockés.

Paramètres

idObligatoire

string · chemin

Identifiant du flux renvoyé à sa création.

keyObligatoire

string · chemin

Clé privée de récupération renvoyée à la création du flux. Ne l’incluez pas dans des liens publics.

Réponse

HTTP 200
Réponse réussie
text/plain
Réponse d’exemple
{
  "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
Autorisation toujours en attente
text/plain
Réponse d’exemple
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
text/plain
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Flux introuvable
text/plain
Réponse d’exemple
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Identifiants expirés ou déjà récupérés
text/plain
Réponse d’exemple
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
text/plain
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Impossible de traiter la requête
text/plain
Réponse d’exemple
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Service temporairement indisponible
text/plain
Réponse d’exemple
{
  "message": "service temporarily unavailable",
  "success": false
}
Essayer cet endpoint
POST /api/v2/tokens/refresh

Renouveler le jeton d’accès

Renouvelle un jeton d’accès avec un jeton de renouvellement. Fournissez client_id et client_secret pour un jeton issu de votre propre application Twitch.

Paramètres

client_idFacultatif

string · corps

Identifiant client de l’application Twitch. Omettez-le pour utiliser l’application partagée de TTG.

client_secretFacultatif

string · corps

Secret client de l’application Twitch. Pour le renouvellement, fournissez-le avec client_id.

refresh_tokenObligatoire

string · corps

Dernier jeton de renouvellement du compte et de l’application Twitch.

Corps JSON de la requête

{
  "refresh_token": "EXAMPLE_REFRESH_TOKEN"
}

Réponse

HTTP 200
Réponse réussie
application/json
Réponse d’exemple
{
  "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
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Échec de la requête Twitch
application/json
Réponse d’exemple
{
  "message": "Twitch request failed",
  "success": false
}
Essayer cet endpoint
POST /api/v2/tokens/revoke

Révoquer votre jeton d’accès

Invalide le jeton d’accès fourni. Indiquez le client_id de son application si elle diffère de l’application partagée de TTG.

Paramètres

access_tokenObligatoire

string · corps

Jeton d’accès Twitch à consulter ou révoquer, sans préfixe oauth:.

client_idFacultatif

string · corps

Identifiant client de l’application Twitch. Omettez-le pour utiliser l’application partagée de TTG.

Corps JSON de la requête

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Réponse

HTTP 200
Réponse réussie
application/json
Réponse d’exemple
{
  "success": true
}
HTTP 400
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Échec de la requête Twitch
application/json
Réponse d’exemple
{
  "message": "Twitch request failed",
  "success": false
}
Essayer cet endpoint
POST /api/v2/tokens/validate

Valider un jeton

Consulte le compte, l’application, les permissions accordées et la durée de validité restante du jeton.

Paramètres

access_tokenObligatoire

string · corps

Jeton d’accès Twitch à consulter ou révoquer, sans préfixe oauth:.

Corps JSON de la requête

{
  "access_token": "EXAMPLE_ACCESS_TOKEN"
}

Réponse

HTTP 200
Réponse réussie
application/json
Réponse d’exemple
{
  "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
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Échec de la requête Twitch
application/json
Réponse d’exemple
{
  "message": "Twitch request failed",
  "success": false
}
Essayer cet endpoint
POST /api/v2/token-requests

Demander un jeton à un utilisateur

Crée un lien de demande d’autorisation. Une fois l’autorisation terminée par le titulaire du compte, les identifiants sont envoyés à my_email.

Paramètres

my_emailObligatoire

string · corps

Adresse e-mail recevant les identifiants après l’achèvement de la demande.

my_nameObligatoire

string · corps

Nom du demandeur, jusqu’à 128 octets UTF-8.

scope_idsFacultatif

array · corps

Identifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.

Corps JSON de la requête

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

Réponse

HTTP 201
Créé
application/json
Réponse d’exemple
{
  "id": "example-request",
  "success": true,
  "url": "https://twitchtokengenerator.com/request/example-request"
}
HTTP 400
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
Essayer cet endpoint

Compatibilité avec l’ancienne API

Les routes /api/ existantes restent disponibles. Utilisez les endpoints v2 pour les nouvelles intégrations ; les formats de réponse et l’authentification de récupération diffèrent.

Ancienne routeRemplacement 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