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