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에 자격 증명을 포함할 수 없습니다.

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