Documentação da API

Crie fluxos de autorização da Twitch, consulte permissões e gerencie tokens com a API v2.

Baixar OpenAPI

Fluxo de autorização

  1. Consulte o catálogo e escolha os IDs das permissões ativas necessárias para sua integração.
  2. Crie um fluxo. Mantenha a chave de recuperação privada e abra authorization_url no navegador do titular da conta.
  3. 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_sensitiveOpcional

boolean · consulta

Incluir as permissões marcadas como sensíveis no catálogo.

Resposta

HTTP 200
Resposta bem-sucedida
application/json
Resposta 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/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Serviço temporariamente indisponível
application/json
Resposta de exemplo
{
  "message": "service temporarily unavailable",
  "success": false
}
Testar este endpoint
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_agentOpcional

string · corpo

Nome opcional do cliente de IA, até 64 bytes UTF-8 sem caracteres de controle. Serve para atribuição, não para autenticação.

is_aiOpcional

boolean · corpo

Marcar um fluxo como assistido por IA.

redirect_urlOpcional

string · corpo

Destino HTTP ou HTTPS absoluto opcional após a autorização. Não são permitidas credenciais na URL.

scope_idsOpcional

array · corpo

IDs numéricos do catálogo. Escolha permissões ativas, no máximo 150 distintas.

titleOpcional

string · corpo

Nome do aplicativo, até 500 bytes UTF-8.

Corpo JSON da solicitação

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

Resposta

HTTP 201
Criado
application/json
Resposta 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/json
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Não foi possível processar a solicitação
application/json
Resposta de exemplo
{
  "message": "unable to process request",
  "success": false
}
Testar este endpoint
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ório

string · caminho

ID do fluxo retornado na criação.

AuthorizationObrigatório

Bearer · cabeçalho

Chave 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/json
Resposta 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/json
Resposta de exemplo
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Token ou chave de recuperação inválidos
application/json
Resposta de exemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Fluxo não encontrado
application/json
Resposta de exemplo
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenciais expiradas ou já recuperadas
application/json
Resposta de exemplo
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Não foi possível processar a solicitação
application/json
Resposta de exemplo
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Serviço temporariamente indisponível
application/json
Resposta de exemplo
{
  "message": "service temporarily unavailable",
  "success": false
}
Testar este endpoint
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ório

string · consulta

Nomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.

ai_agentOpcional

string · consulta

Nome opcional do cliente de IA, até 64 bytes UTF-8 sem caracteres de controle. Serve para atribuição, não para autenticação.

nonceOpcional

string · consulta

Valor opcional para evitar cache, até 128 bytes UTF-8. Não é uma chave de idempotência.

Resposta

HTTP 200
Resposta bem-sucedida
text/plain
Resposta 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/plain
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de solicitações atingido
text/plain
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Não foi possível processar a solicitação
text/plain
Resposta de exemplo
{
  "message": "unable to process request",
  "success": false
}
Testar este endpoint
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ório

string · caminho

ID do fluxo retornado na criação.

keyObrigatório

string · caminho

Chave 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/plain
Resposta 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/plain
Resposta de exemplo
{
  "expires_at": "2030-01-01T12:00:00Z",
  "status": "pending",
  "success": false
}
HTTP 401
Token ou chave de recuperação inválidos
text/plain
Resposta de exemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 404
Fluxo não encontrado
text/plain
Resposta de exemplo
{
  "message": "workflow not found",
  "success": false
}
HTTP 410
Credenciais expiradas ou já recuperadas
text/plain
Resposta de exemplo
{
  "message": "workflow credentials are no longer available",
  "status": "expired",
  "success": false
}
HTTP 429
Limite de solicitações atingido
text/plain
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 500
Não foi possível processar a solicitação
text/plain
Resposta de exemplo
{
  "message": "unable to process request",
  "success": false
}
HTTP 503
Serviço temporariamente indisponível
text/plain
Resposta de exemplo
{
  "message": "service temporarily unavailable",
  "success": false
}
Testar este endpoint
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_idOpcional

string · corpo

ID de cliente do aplicativo da Twitch. Omita para usar o aplicativo compartilhado do TTG.

client_secretOpcional

string · corpo

Segredo de cliente do aplicativo da Twitch. Para atualizar tokens, forneça junto com client_id.

refresh_tokenObrigatório

string · corpo

Token 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/json
Resposta 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/json
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Falha na solicitação à Twitch
application/json
Resposta de exemplo
{
  "message": "Twitch request failed",
  "success": false
}
Testar este endpoint
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ório

string · corpo

Token de acesso da Twitch a consultar ou revogar, sem o prefixo oauth:.

client_idOpcional

string · corpo

ID 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/json
Resposta de exemplo
{
  "success": true
}
HTTP 400
Solicitação inválida
application/json
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Falha na solicitação à Twitch
application/json
Resposta de exemplo
{
  "message": "Twitch request failed",
  "success": false
}
Testar este endpoint
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ório

string · corpo

Token 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/json
Resposta 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/json
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Token ou chave de recuperação inválidos
application/json
Resposta de exemplo
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 502
Falha na solicitação à Twitch
application/json
Resposta de exemplo
{
  "message": "Twitch request failed",
  "success": false
}
Testar este endpoint
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ório

string · corpo

E-mail que recebe as credenciais após a conclusão da solicitação.

my_nameObrigatório

string · corpo

Nome do solicitante, até 128 bytes UTF-8.

scope_idsOpcional

array · corpo

IDs 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/json
Resposta de exemplo
{
  "id": "example-request",
  "success": true,
  "url": "https://twitchtokengenerator.com/request/example-request"
}
HTTP 400
Solicitação inválida
application/json
Resposta de exemplo
{
  "message": "invalid request",
  "success": false
}
HTTP 429
Limite de solicitações atingido
application/json
Resposta de exemplo
{
  "message": "rate limit exceeded",
  "success": false
}
Testar este endpoint

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 anteriorSubstituiçã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