API 文档

使用 v2 API 创建 Twitch 授权流程、查看权限并管理令牌。

下载 OpenAPI

授权流程

  1. 查看权限目录,选择集成所需的有效权限 ID。
  2. 创建流程。妥善保管私密检索密钥,并在账号所有者的浏览器中打开 authorization_url。
  3. 授权后仅检索一次凭据。保存访问令牌和最新的刷新令牌。

流程在 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/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