Documentação da API
Crie fluxos de autorização da Twitch, consulte permissões e gerencie tokens com a API v2.
Fluxo de autorização
- Consulte o catálogo e escolha os IDs das permissões ativas necessárias para sua integração.
- Crie um fluxo. Mantenha a chave de recuperação privada e abra authorization_url no navegador do titular da conta.
- Após a autorização, recupere as credenciais uma única vez. Salve o token de acesso e o token de atualização mais recente.
Os fluxos expiram após 24 horas. Uma recuperação bem-sucedida consome as credenciais armazenadas. Aguarde pelo menos cinco segundos entre consultas pendentes.
Autenticação e limites
A recuperação usa a chave privada do fluxo como credencial Bearer. Os demais endpoints usam os dados indicados abaixo. A API v2 permite 180 solicitações por minuto por IP; HTTP 429 indica que o limite foi atingido.
Referência de endpoints
GET /api/v2/scopes
Permissões disponíveis para o token
Consulte os IDs, nomes, descrições e disponibilidade das permissões atuais. Esta solicitação não exige credenciais.
Parâmetros
include_sensitiveOpcionalboolean· consultaIncluir as permissões marcadas como sensíveis no catálogo.
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "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 solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/workflows
Criar um fluxo de autorização
Cria um fluxo de 24 horas com o aplicativo compartilhado da Twitch do TTG. A resposta separa a URL pública de autorização da chave privada de recuperação.
Parâmetros
ai_agentOpcionalstring· corpoNome opcional do cliente de IA, até 64 bytes UTF-8 sem caracteres de controle. Serve para atribuição, não para autenticação.
is_aiOpcionalboolean· corpoMarcar um fluxo como assistido por IA.
redirect_urlOpcionalstring· corpoDestino HTTP ou HTTPS absoluto opcional após a autorização. Não são permitidas credenciais na URL.
scope_idsOpcionalarray· corpoIDs numéricos do catálogo. Escolha permissões ativas, no máximo 150 distintas.
titleOpcionalstring· corpoNome do aplicativo, até 500 bytes UTF-8.
Corpo JSON da solicitação
{
"scope_ids": [
28,
29
],
"title": "Example integration"
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "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- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- Não foi possível processar a solicitação
application/jsonResposta de exemplo
{ "message": "unable to process request", "success": false }
GET /api/v2/workflows/{id}
Recuperar credenciais do fluxo
Retorna as credenciais uma única vez após a autorização. Envie a chave do fluxo como credencial Bearer. Uma leitura bem-sucedida consome as credenciais armazenadas.
Parâmetros
idObrigatóriostring· caminhoID do fluxo retornado na criação.
AuthorizationObrigatórioBearer· cabeçalhoChave privada de recuperação retornada na criação do fluxo. Não a inclua em links públicos.
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "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- Autorização ainda pendente
application/jsonResposta de exemplo
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Token ou chave de recuperação inválidos
application/jsonResposta de exemplo
{ "message": "invalid retrieval key", "success": false } HTTP 404- Fluxo não encontrado
application/jsonResposta de exemplo
{ "message": "workflow not found", "success": false } HTTP 410- Credenciais expiradas ou já recuperadas
application/jsonResposta de exemplo
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- Não foi possível processar a solicitação
application/jsonResposta de exemplo
{ "message": "unable to process request", "success": false } HTTP 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "service temporarily unavailable", "success": false }
GET /api/v2/ai/workflows/create
Criar um fluxo de IA via GET
Alternativa GET para clientes que só podem consultar URLs. Cria um fluxo usando nomes de permissões e retorna uma URL privada de recuperação. O JSON é servido como text/plain.
Parâmetros
scopesObrigatóriostring· consultaNomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.
ai_agentOpcionalstring· consultaNome opcional do cliente de IA, até 64 bytes UTF-8 sem caracteres de controle. Serve para atribuição, não para autenticação.
nonceOpcionalstring· consultaValor opcional para evitar cache, até 128 bytes UTF-8. Não é uma chave de idempotência.
Resposta
HTTP 200- Resposta bem-sucedida
text/plainResposta de exemplo
{ "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- Solicitação inválida
text/plainResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
text/plainResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- Não foi possível processar a solicitação
text/plainResposta de exemplo
{ "message": "unable to process request", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
Recuperar credenciais de IA via GET
Alternativa GET com a chave de recuperação na URL. O JSON é servido como text/plain. Uma leitura bem-sucedida consome as credenciais armazenadas.
Parâmetros
idObrigatóriostring· caminhoID do fluxo retornado na criação.
keyObrigatóriostring· caminhoChave privada de recuperação retornada na criação do fluxo. Não a inclua em links públicos.
Resposta
HTTP 200- Resposta bem-sucedida
text/plainResposta de exemplo
{ "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- Autorização ainda pendente
text/plainResposta de exemplo
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- Token ou chave de recuperação inválidos
text/plainResposta de exemplo
{ "message": "invalid retrieval key", "success": false } HTTP 404- Fluxo não encontrado
text/plainResposta de exemplo
{ "message": "workflow not found", "success": false } HTTP 410- Credenciais expiradas ou já recuperadas
text/plainResposta de exemplo
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- Limite de solicitações atingido
text/plainResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- Não foi possível processar a solicitação
text/plainResposta de exemplo
{ "message": "unable to process request", "success": false } HTTP 503- Serviço temporariamente indisponível
text/plainResposta de exemplo
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/tokens/refresh
Atualizar token de acesso
Renova um token de acesso usando um token de atualização. Informe client_id e client_secret para renovar um token do seu próprio aplicativo da Twitch.
Parâmetros
client_idOpcionalstring· corpoID de cliente do aplicativo da Twitch. Omita para usar o aplicativo compartilhado do TTG.
client_secretOpcionalstring· corpoSegredo de cliente do aplicativo da Twitch. Para atualizar tokens, forneça junto com client_id.
refresh_tokenObrigatóriostring· corpoToken de atualização mais recente da conta e do aplicativo da Twitch.
Corpo JSON da solicitação
{
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "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- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falha na solicitação à Twitch
application/jsonResposta de exemplo
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/revoke
Revogar seu token de acesso
Invalida o token de acesso fornecido. Informe o client_id do aplicativo se ele for diferente do aplicativo compartilhado do TTG.
Parâmetros
access_tokenObrigatóriostring· corpoToken de acesso da Twitch a consultar ou revogar, sem o prefixo oauth:.
client_idOpcionalstring· corpoID de cliente do aplicativo da Twitch. Omita para usar o aplicativo compartilhado do TTG.
Corpo JSON da solicitação
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "success": true } HTTP 400- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falha na solicitação à Twitch
application/jsonResposta de exemplo
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/validate
Validar um token
Consulta a conta, o aplicativo, as permissões concedidas e o tempo de validade restante do token.
Parâmetros
access_tokenObrigatóriostring· corpoToken de acesso da Twitch a consultar ou revogar, sem o prefixo oauth:.
Corpo JSON da solicitação
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "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- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 401- Token ou chave de recuperação inválidos
application/jsonResposta de exemplo
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 502- Falha na solicitação à Twitch
application/jsonResposta de exemplo
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
Gerador de links rápidos
Cria um link reutilizável com os IDs de permissões escolhidos. auth=stay abre o gerador; auth=authorize inicia a autorização da Twitch.
Parâmetros
authOpcionalstring· corpostay abre o gerador. authorize e o alias de compatibilidade auth_auth iniciam a autorização imediatamente.
scope_idsOpcionalarray· corpoIDs numéricos do catálogo. Escolha permissões ativas, no máximo 150 distintas.
Corpo JSON da solicitação
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false } HTTP 500- Não foi possível processar a solicitação
application/jsonResposta de exemplo
{ "message": "unable to process request", "success": false }
POST /api/v2/token-requests
Solicitar token de um usuário
Cria um link de solicitação de autorização. Depois que o titular da conta concluir a autorização, as credenciais serão enviadas para my_email.
Parâmetros
my_emailObrigatóriostring· corpoE-mail que recebe as credenciais após a conclusão da solicitação.
my_nameObrigatóriostring· corpoNome do solicitante, até 128 bytes UTF-8.
scope_idsOpcionalarray· corpoIDs numéricos do catálogo. Escolha permissões ativas, no máximo 150 distintas.
Corpo JSON da solicitação
{
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
28,
29
]
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid request", "success": false } HTTP 429- Limite de solicitações atingido
application/jsonResposta de exemplo
{ "message": "rate limit exceeded", "success": false }
Compatibilidade com a API anterior
As rotas /api/ existentes continuam disponíveis. Use os endpoints v2 em novas integrações; os formatos de resposta e a autenticação de recuperação são diferentes.
| Rota anterior | Substituição 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 |