Documentation de l’API
Créez des flux d’autorisation Twitch, consultez les permissions et gérez les jetons avec l’API v2.
Flux d’autorisation
- Consultez le catalogue et choisissez les identifiants des permissions actives nécessaires à votre intégration.
- Créez un flux. Gardez sa clé de récupération privée et ouvrez authorization_url dans le navigateur du titulaire du compte.
- 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_sensitiveFacultatifboolean· requêteInclure les permissions marquées comme sensibles dans le catalogue.
Réponse
HTTP 200- Réponse réussie
application/jsonRé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/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "service temporarily unavailable", "success": false }
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_agentFacultatifstring· corpsNom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.
is_aiFacultatifboolean· corpsMarquer un flux comme assisté par IA.
redirect_urlFacultatifstring· corpsDestination HTTP ou HTTPS absolue facultative après l’autorisation. Les identifiants dans l’URL sont interdits.
scope_idsFacultatifarray· corpsIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
titleFacultatifstring· corpsNom 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/jsonRé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/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossible de traiter la requête
application/jsonRéponse d’exemple
{ "message": "unable to process request", "success": false }
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
idObligatoirestring· cheminIdentifiant du flux renvoyé à sa création.
AuthorizationObligatoireBearer· en-têteClé 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/jsonRé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/jsonRé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/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flux introuvable
application/jsonRéponse d’exemple
{ "message": "workflow not found", "success": false } HTTP 410- Identifiants expirés ou déjà récupérés
application/jsonRéponse d’exemple
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossible de traiter la requête
application/jsonRéponse d’exemple
{ "message": "unable to process request", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "service temporarily unavailable", "success": false }
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
scopesObligatoirestring· requêteNoms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.
ai_agentFacultatifstring· requêteNom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.
nonceFacultatifstring· requêteValeur 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/plainRé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/plainRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
text/plainRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossible de traiter la requête
text/plainRéponse d’exemple
{ "message": "unable to process request", "success": false }
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
idObligatoirestring· cheminIdentifiant du flux renvoyé à sa création.
keyObligatoirestring· cheminClé 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/plainRé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/plainRé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/plainRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 404- Flux introuvable
text/plainRéponse d’exemple
{ "message": "workflow not found", "success": false } HTTP 410- Identifiants expirés ou déjà récupérés
text/plainRéponse d’exemple
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite de requêtes atteinte
text/plainRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossible de traiter la requête
text/plainRéponse d’exemple
{ "message": "unable to process request", "success": false } HTTP 503- Service temporairement indisponible
text/plainRéponse d’exemple
{ "message": "service temporarily unavailable", "success": false }
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_idFacultatifstring· corpsIdentifiant client de l’application Twitch. Omettez-le pour utiliser l’application partagée de TTG.
client_secretFacultatifstring· corpsSecret client de l’application Twitch. Pour le renouvellement, fournissez-le avec client_id.
refresh_tokenObligatoirestring· corpsDernier 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/jsonRé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/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 502- Échec de la requête Twitch
application/jsonRéponse d’exemple
{ "message": "Twitch request failed", "success": false }
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_tokenObligatoirestring· corpsJeton d’accès Twitch à consulter ou révoquer, sans préfixe oauth:.
client_idFacultatifstring· corpsIdentifiant 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/jsonRéponse d’exemple
{ "success": true } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 502- Échec de la requête Twitch
application/jsonRéponse d’exemple
{ "message": "Twitch request failed", "success": false }
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_tokenObligatoirestring· corpsJeton 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/jsonRé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/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 502- Échec de la requête Twitch
application/jsonRéponse d’exemple
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
Générateur de liens rapides
Crée un lien réutilisable avec les identifiants de permissions choisis. auth=stay ouvre le générateur ; auth=authorize lance l’autorisation Twitch.
Paramètres
authFacultatifstring· corpsstay ouvre le générateur. authorize et l’alias de compatibilité auth_auth lancent immédiatement l’autorisation.
scope_idsFacultatifarray· corpsIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
Corps JSON de la requête
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
Réponse
HTTP 201- Créé
application/jsonRéponse d’exemple
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 500- Impossible de traiter la requête
application/jsonRéponse d’exemple
{ "message": "unable to process request", "success": false }
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_emailObligatoirestring· corpsAdresse e-mail recevant les identifiants après l’achèvement de la demande.
my_nameObligatoirestring· corpsNom du demandeur, jusqu’à 128 octets UTF-8.
scope_idsFacultatifarray· corpsIdentifiants 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/jsonRéponse d’exemple
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false }
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 route | Remplacement 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 |