API 文档
使用 v2 API 创建 Twitch 授权流程、查看权限并管理令牌。
授权流程
- 查看权限目录,选择集成所需的有效权限 ID。
- 创建流程。妥善保管私密检索密钥,并在账号所有者的浏览器中打开 authorization_url。
- 授权后仅检索一次凭据。保存访问令牌和最新的刷新令牌。
流程在 24 小时后过期。成功检索后,已存储的凭据无法再次检索。等待授权时,两次检查之间至少间隔五秒。
身份验证与限制
检索凭据时,将流程的私密密钥用作 Bearer 凭据。其他端点使用下方列出的输入。v2 API 每个 IP 每分钟允许 180 次请求;HTTP 429 表示已达到限制。
端点参考
GET /api/v2/scopes
可用的令牌权限范围
获取当前权限 ID、名称、描述和可用状态。此请求无需凭据。
参数
include_sensitive可选boolean· 查询在目录中包含标记为敏感的权限。
响应
HTTP 200- 响应成功
application/json示例响应
{ "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- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 503- 服务暂时不可用
application/json示例响应
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/workflows
创建授权流程
使用 TTG 的共享 Twitch 应用创建有效期为 24 小时的流程。响应分别提供公开授权 URL 和私密检索密钥。
参数
ai_agent可选string· 请求体可选的 AI 客户端名称,最多 64 个 UTF-8 字节,不能包含控制字符。此值用于来源归属,而非身份验证。
is_ai可选boolean· 请求体将流程标记为 AI 辅助流程。
redirect_url可选string· 请求体可选的授权后跳转地址,必须是完整 HTTP 或 HTTPS URL,且不能包含用户名或密码。
scope_ids可选array· 请求体目录中的数字 ID。请选择有效权限,最多 150 个不同权限。
title可选string· 请求体应用名称,最多 500 个 UTF-8 字节。
JSON 请求体
{
"scope_ids": [
28,
29
],
"title": "Example integration"
}
响应
HTTP 201- 已创建
application/json示例响应
{ "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- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 500- 无法处理请求
application/json示例响应
{ "message": "unable to process request", "success": false }
GET /api/v2/workflows/{id}
检索流程凭据
授权后仅返回一次凭据。请将流程检索密钥作为 Bearer 凭据发送。成功读取后,已存储的凭据无法再次检索。
参数
id必填string· 路径创建流程时返回的流程 ID。
Authorization必填Bearer· 请求头创建流程时返回的私密检索密钥。请勿将其放入公开链接。
响应
HTTP 200- 响应成功
application/json示例响应
{ "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- 仍在等待授权
application/json示例响应
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- 令牌或检索密钥无效
application/json示例响应
{ "message": "invalid retrieval key", "success": false } HTTP 404- 未找到流程
application/json示例响应
{ "message": "workflow not found", "success": false } HTTP 410- 凭据已过期或已被检索
application/json示例响应
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 500- 无法处理请求
application/json示例响应
{ "message": "unable to process request", "success": false } HTTP 503- 服务暂时不可用
application/json示例响应
{ "message": "service temporarily unavailable", "success": false }
GET /api/v2/ai/workflows/create
通过 GET 创建 AI 流程
为只能读取 URL 的客户端提供 GET 方式。使用权限名称创建流程并返回私密检索 URL。JSON 响应以 text/plain 提供。
参数
scopes必填string· 查询以逗号分隔的权限名称。必须包含此参数;空值表示不请求权限。
ai_agent可选string· 查询可选的 AI 客户端名称,最多 64 个 UTF-8 字节,不能包含控制字符。此值用于来源归属,而非身份验证。
nonce可选string· 查询可选的缓存规避值,最多 128 个 UTF-8 字节。此值不是幂等密钥。
响应
HTTP 200- 响应成功
text/plain示例响应
{ "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- 请求无效
text/plain示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
text/plain示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 500- 无法处理请求
text/plain示例响应
{ "message": "unable to process request", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
通过 GET 检索 AI 凭据
通过 URL 携带检索密钥的 GET 方式。JSON 响应以 text/plain 提供。成功读取后,已存储的凭据无法再次检索。
参数
id必填string· 路径创建流程时返回的流程 ID。
key必填string· 路径创建流程时返回的私密检索密钥。请勿将其放入公开链接。
响应
HTTP 200- 响应成功
text/plain示例响应
{ "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- 仍在等待授权
text/plain示例响应
{ "expires_at": "2030-01-01T12:00:00Z", "status": "pending", "success": false } HTTP 401- 令牌或检索密钥无效
text/plain示例响应
{ "message": "invalid retrieval key", "success": false } HTTP 404- 未找到流程
text/plain示例响应
{ "message": "workflow not found", "success": false } HTTP 410- 凭据已过期或已被检索
text/plain示例响应
{ "message": "workflow credentials are no longer available", "status": "expired", "success": false } HTTP 429- 已达到请求限制
text/plain示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 500- 无法处理请求
text/plain示例响应
{ "message": "unable to process request", "success": false } HTTP 503- 服务暂时不可用
text/plain示例响应
{ "message": "service temporarily unavailable", "success": false }
POST /api/v2/tokens/refresh
刷新访问令牌
使用刷新令牌更新访问令牌。刷新自己 Twitch 应用的令牌时,请同时提供 client_id 和 client_secret。
参数
client_id可选string· 请求体Twitch 应用客户端 ID。省略此值即可使用 TTG 的共享应用。
client_secret可选string· 请求体Twitch 应用客户端密钥。刷新请求中需与 client_id 同时提供。
refresh_token必填string· 请求体账号及 Twitch 应用的最新刷新令牌。
JSON 请求体
{
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
响应
HTTP 200- 响应成功
application/json示例响应
{ "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- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 502- Twitch 请求失败
application/json示例响应
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/revoke
撤销访问令牌
使所提供的访问令牌失效。若令牌不属于 TTG 的共享应用,请提供所属应用的 client_id。
参数
access_token必填string· 请求体要查看或撤销的 Twitch 访问令牌,不包含 oauth: 前缀。
client_id可选string· 请求体Twitch 应用客户端 ID。省略此值即可使用 TTG 的共享应用。
JSON 请求体
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
响应
HTTP 200- 响应成功
application/json示例响应
{ "success": true } HTTP 400- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 502- Twitch 请求失败
application/json示例响应
{ "message": "Twitch request failed", "success": false }
POST /api/v2/tokens/validate
验证令牌
查看令牌所属账号、应用、已授予的权限和剩余有效期。
参数
access_token必填string· 请求体要查看或撤销的 Twitch 访问令牌,不包含 oauth: 前缀。
JSON 请求体
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
响应
HTTP 200- 响应成功
application/json示例响应
{ "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- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 401- 令牌或检索密钥无效
application/json示例响应
{ "message": "invalid retrieval key", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 502- Twitch 请求失败
application/json示例响应
{ "message": "Twitch request failed", "success": false }
POST /api/v2/quick-links
快捷链接生成器
使用所选权限 ID 创建可重复使用的链接。auth=stay 打开生成器;auth=authorize 启动 Twitch 授权。
参数
auth可选string· 请求体stay 打开生成器。authorize 及兼容别名 auth_auth 会立即开始授权。
scope_ids可选array· 请求体目录中的数字 ID。请选择有效权限,最多 150 个不同权限。
JSON 请求体
{
"auth": "stay",
"scope_ids": [
28,
29
]
}
响应
HTTP 201- 已创建
application/json示例响应
{ "id": "example000", "success": true, "url": "https://twitchtokengenerator.com/quick/example000" } HTTP 400- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false } HTTP 500- 无法处理请求
application/json示例响应
{ "message": "unable to process request", "success": false }
POST /api/v2/token-requests
向用户请求令牌
创建授权请求链接。账号所有者完成授权后,凭据将发送到 my_email。
参数
my_email必填string· 请求体请求完成后接收凭据的电子邮箱地址。
my_name必填string· 请求体请求者名称,最多 128 个 UTF-8 字节。
scope_ids可选array· 请求体目录中的数字 ID。请选择有效权限,最多 150 个不同权限。
JSON 请求体
{
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
28,
29
]
}
响应
HTTP 201- 已创建
application/json示例响应
{ "id": "example-request", "success": true, "url": "https://twitchtokengenerator.com/request/example-request" } HTTP 400- 请求无效
application/json示例响应
{ "message": "invalid request", "success": false } HTTP 429- 已达到请求限制
application/json示例响应
{ "message": "rate limit exceeded", "success": false }
旧版兼容性
现有 /api/ 路由仍受支持。新集成请使用 v2 端点;响应格式和检索身份验证方式有所不同。
| 旧版路由 | 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 |