API ドキュメント

v2 API で Twitch 認証フローを作成し、権限の確認やトークンの管理を行えます。

OpenAPI をダウンロード

認証フロー

  1. 権限カタログを確認し、連携に必要な有効な権限 ID を選びます。
  2. フローを作成します。取得キーを秘密に保ち、アカウント所有者のブラウザーで authorization_url を開きます。
  3. 認証後、認証情報を一度だけ取得します。アクセストークンと最新のリフレッシュトークンを保存してください。

フローは 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/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