API ドキュメント
v2 API で Twitch 認証フローを作成し、権限の確認やトークンの管理を行えます。
認証フロー
- 権限カタログを確認し、連携に必要な有効な権限 ID を選びます。
- フローを作成します。取得キーを秘密に保ち、アカウント所有者のブラウザーで authorization_url を開きます。
- 認証後、認証情報を一度だけ取得します。アクセストークンと最新のリフレッシュトークンを保存してください。
フローは 24 時間で期限切れになります。取得に成功すると、保存された認証情報は再取得できなくなります。認証待ちの確認は 5 秒以上間隔を空けてください。
認証と制限
認証情報の取得では、フロー専用の非公開キーを 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 クライアント名。制御文字を含めず、UTF-8 で最大 64 バイトです。これは利用元の識別用で、認証には使いません。
is_ai任意boolean· 本文フローを AI 支援としてマークします。
redirect_url任意string· 本文認証後の任意の移動先。完全な HTTP または HTTPS URL を指定します。URL に認証情報は含められません。
scope_ids任意array· 本文カタログの数値 ID。有効な権限を選んでください。異なる権限は最大 150 件です。
title任意string· 本文アプリケーション名。UTF-8 で最大 500 バイトです。
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 クライアント名。制御文字を含めず、UTF-8 で最大 64 バイトです。これは利用元の識別用で、認証には使いません。
nonce任意string· クエリキャッシュを回避する任意の値。UTF-8 で最大 128 バイトです。冪等性キーではありません。
レスポンス
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· 本文リクエスト送信者の名前。UTF-8 で最大 128 バイトです。
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 との互換性
既存の /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 |