Documentação da API
Crie fluxos de autorização da Kick, 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 120 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.
Este endpoint não tem parâmetros de solicitação.
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "scopes": [ { "description": "Send chat messages as the authorized account.", "id": 6, "scope": "chat:write", "secret": false } ], "success": true } 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }
POST /api/v2/workflows
Criar um fluxo de autorização
Cria um fluxo de autorização de 24 horas. Use o modo compartilhado habilitado ou envie suas credenciais de aplicativo no corpo POST.
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.
credentialsOpcionalobject· corpoUse seu aplicativo de desenvolvedor Kick. Deixe ambos os campos vazios apenas quando o modo compartilhado estiver disponível. As credenciais ficam na memória desta aba e são criptografadas temporariamente no servidor durante a autorizaçã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.
scopesOpcionalarray· corpoNomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.
titleOpcionalstring· corpoNome do aplicativo, até 500 bytes UTF-8.
Corpo JSON da solicitação
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"scope_ids": [
6
],
"title": "Example integration"
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "expires_at": "2030-01-02T12:00:00Z", "id": "EXAMPLE_ID", "retrieval_key": "EXAMPLE_PRIVATE_KEY", "status_url": "https://kicktokengen.com/api/v2/workflows/EXAMPLE_ID", "success": true } 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "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", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- Autorização ainda pendente
application/jsonResposta de exemplo
{ "status": "pending", "success": false } 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 410- Credenciais expiradas ou já recuperadas
application/jsonResposta de exemplo
{ "message": "workflow credentials are no longer available", "success": false } 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 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
titleOpcionalstring· consultaNome do aplicativo, até 500 bytes UTF-8.
scopesOpcionalstring· consultaNomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.
scope_idsOpcionalstring· consultaIDs numéricos do catálogo. Escolha permissões ativas, no máximo 150 distintas.
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.
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "id": "EXAMPLE_ID", "retrieval_url": "https://kicktokengen.com/api/v2/ai/workflows/EXAMPLE_ID/EXAMPLE_PRIVATE_KEY", "success": true } 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
Recuperar credenciais de IA via GET
URL privada com a chave de recuperação. A resposta JSON entrega as credenciais uma vez; proteja toda a URL como uma senha.
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
application/jsonResposta de exemplo
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- Autorização ainda pendente
application/jsonResposta de exemplo
{ "status": "pending", "success": false } 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 410- Credenciais expiradas ou já recuperadas
application/jsonResposta de exemplo
{ "message": "workflow credentials are no longer available", "success": false } 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 unavailable", "success": false }
POST /api/v2/tokens/validate
Validar token
Verifica a validade e mostra o aplicativo emissor, tipo, permissões e validade retornados pelo Kick.
Parâmetros
access_tokenObrigatóriostring· corpoToken de acesso da Kick 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
{ "active": true, "client_id": "EXAMPLE_CLIENT_ID", "exp": 1893502800, "expires_in": 3600, "scope_details": [ { "description": "Send chat messages.", "scope": "chat:write" } ], "scopes": [ "chat:write" ], "success": true, "token_type": "user" } 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 access token", "success": false } 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 unavailable", "success": false }
POST /api/v2/tokens/refresh
Token de atualização
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 Kick.
Parâmetros
client_idOpcionalstring· corpoID de cliente do aplicativo da Kick. Omita para usar o aplicativo compartilhado do KTG.
client_secretOpcionalstring· corpoSegredo de cliente do aplicativo da Kick. Para atualizar tokens, forneça junto com client_id.
refresh_tokenObrigatóriostring· corpoToken de atualização mais recente da conta e do aplicativo da Kick.
Corpo JSON da solicitação
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"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_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 400- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid refresh token or client credentials", "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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/revoke
Revogar token
Revoga um único token de acesso ou atualização enviado no corpo POST.
Parâmetros
access_tokenOpcionalstring· corpoToken de acesso da Kick a consultar ou revogar, sem o prefixo oauth:.
refresh_tokenOpcionalstring· corpoToken de atualização mais recente da conta e do aplicativo da Kick.
Corpo JSON da solicitação
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Resposta
HTTP 200- Resposta bem-sucedida
application/jsonResposta de exemplo
{ "revoked": true, "success": true } HTTP 400- Solicitação inválida
application/jsonResposta de exemplo
{ "message": "invalid token 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }
POST /api/v2/quick-links
Link rápido
Cria um link reutilizável com os IDs de permissões escolhidos. auth=stay abre o gerador; auth=authorize inicia a autorização da Kick.
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.
scopesOpcionalarray· corpoNomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.
Corpo JSON da solicitação
{
"auth": "stay",
"scope_ids": [
6
]
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "success": true, "url": "https://kicktokengen.com/quick/Ab3dEf8_" } 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }
POST /api/v2/token-requests
Solicitar token
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
credentialsOpcionalobject· corpoUse seu aplicativo de desenvolvedor Kick. Deixe ambos os campos vazios apenas quando o modo compartilhado estiver disponível. As credenciais ficam na memória desta aba e são criptografadas temporariamente no servidor durante a autorização.
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.
scopesOpcionalarray· corpoNomes de permissões separados por vírgulas. O parâmetro deve estar presente; um valor vazio não solicita permissões.
Corpo JSON da solicitação
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
6
]
}
Resposta
HTTP 201- Criado
application/jsonResposta de exemplo
{ "expires_at": "2030-01-02T12:00:00Z", "success": true, "url": "https://kicktokengen.com/request/EXAMPLE_ID" } 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 503- Serviço temporariamente indisponível
application/jsonResposta de exemplo
{ "message": "Service unavailable", "success": false }