API 문서
v2 API로 Kick 인증 흐름을 만들고 권한을 확인하며 토큰을 관리하세요.
인증 흐름
- 권한 목록을 확인하고 연동에 필요한 활성 권한 ID를 선택하세요.
- 흐름을 만드세요. 조회 키를 비공개로 보관하고 계정 소유자의 브라우저에서 authorization_url을 여세요.
- 인증 후 자격 증명을 한 번만 조회하세요. 액세스 토큰과 최신 갱신 토큰을 모두 저장하세요.
흐름은 24시간 후 만료됩니다. 조회에 성공하면 저장된 자격 증명을 다시 조회할 수 없습니다. 인증 대기 상태 확인은 최소 5초 간격으로 하세요.
인증 및 제한
자격 증명을 조회할 때는 흐름의 비공개 키를 Bearer 자격 증명으로 사용합니다. 다른 엔드포인트는 아래 입력값을 사용합니다. v2 API는 IP당 분당 120회 요청을 허용하며 HTTP 429는 한도 도달을 뜻합니다.
엔드포인트 참조
GET /api/v2/scopes
사용 가능한 토큰 권한
현재 권한 ID, 이름, 설명 및 사용 가능 여부를 조회합니다. 이 요청에는 자격 증명이 필요하지 않습니다.
이 엔드포인트에는 요청 매개변수가 없습니다.
응답
HTTP 200- 요청 성공
application/json예시 응답
{ "scopes": [ { "description": "Send chat messages as the authorized account.", "id": 6, "scope": "chat:write", "secret": false } ], "success": true } 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 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/workflows
인증 흐름 만들기
24시간 유효한 인증 워크플로를 만듭니다. 활성화된 공유 모드 또는 POST 본문에 담은 자신의 앱 인증 정보를 사용하세요.
매개변수
ai_agent선택 사항string· 본문선택적 AI 클라이언트 이름이며 제어 문자 없이 UTF-8 기준 최대 64바이트입니다. 인증이 아닌 출처 식별 용도입니다.
credentials선택 사항object· 본문자신의 Kick 개발자 앱을 사용하세요. 공유 모드가 제공될 때만 두 필드를 비워 둘 수 있습니다. 인증 정보는 이 탭 메모리와 인증 중 서버에 임시로 암호화되어 보관됩니다.
is_ai선택 사항boolean· 본문흐름을 AI 지원으로 표시합니다.
redirect_url선택 사항string· 본문인증 후 이동할 선택적 절대 HTTP 또는 HTTPS 주소입니다. URL에 자격 증명을 포함할 수 없습니다.
scope_ids선택 사항array· 본문목록의 숫자 ID입니다. 활성 권한을 선택하세요. 서로 다른 권한은 최대 150개입니다.
scopes선택 사항array· 본문쉼표로 구분한 권한 이름입니다. 매개변수는 있어야 하며 빈 값은 권한을 요청하지 않습니다.
title선택 사항string· 본문애플리케이션 이름이며 UTF-8 기준 최대 500바이트입니다.
JSON 요청 본문
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"scope_ids": [
6
],
"title": "Example integration"
}
응답
HTTP 201- 생성됨
application/json예시 응답
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "expires_at": "2030-01-02T12:00:00Z", "id": "EXAMPLE_ID", "retrieval_key": "EXAMPLE_PRIVATE_KEY", "status_url": "https://kicktokengen.com/api/v2/workflows/EXAMPLE_ID", "success": true } 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 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "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", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- 인증 대기 중
application/json예시 응답
{ "status": "pending", "success": false } HTTP 400- 잘못된 요청
application/json예시 응답
{ "message": "invalid request", "success": false } HTTP 401- 잘못된 토큰 또는 조회 키
application/json예시 응답
{ "message": "invalid retrieval key", "success": false } HTTP 410- 자격 증명이 만료되었거나 이미 조회됨
application/json예시 응답
{ "message": "workflow credentials are no longer available", "success": false } HTTP 429- 요청 한도 도달
application/json예시 응답
{ "message": "rate limit exceeded", "success": false } HTTP 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
GET /api/v2/ai/workflows/create
GET으로 AI 흐름 만들기
URL 조회만 가능한 클라이언트용 GET 방식입니다. 권한 이름으로 흐름을 만들고 비공개 조회 URL을 반환합니다. JSON 응답은 text/plain으로 제공됩니다.
매개변수
title선택 사항string· 쿼리애플리케이션 이름이며 UTF-8 기준 최대 500바이트입니다.
scopes선택 사항string· 쿼리쉼표로 구분한 권한 이름입니다. 매개변수는 있어야 하며 빈 값은 권한을 요청하지 않습니다.
scope_ids선택 사항string· 쿼리목록의 숫자 ID입니다. 활성 권한을 선택하세요. 서로 다른 권한은 최대 150개입니다.
ai_agent선택 사항string· 쿼리선택적 AI 클라이언트 이름이며 제어 문자 없이 UTF-8 기준 최대 64바이트입니다. 인증이 아닌 출처 식별 용도입니다.
응답
HTTP 201- 생성됨
application/json예시 응답
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "id": "EXAMPLE_ID", "retrieval_url": "https://kicktokengen.com/api/v2/ai/workflows/EXAMPLE_ID/EXAMPLE_PRIVATE_KEY", "success": true } 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 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
GET으로 AI 자격 증명 조회
조회 키를 포함하는 비공개 URL입니다. JSON 응답으로 인증 정보를 한 번만 제공합니다. 전체 URL을 비밀번호처럼 보호하세요.
매개변수
id필수string· 경로흐름을 만들 때 반환된 흐름 ID입니다.
key필수string· 경로흐름을 만들 때 반환된 비공개 조회 키입니다. 공개 링크에 포함하지 마세요.
응답
HTTP 200- 요청 성공
application/json예시 응답
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- 인증 대기 중
application/json예시 응답
{ "status": "pending", "success": false } HTTP 400- 잘못된 요청
application/json예시 응답
{ "message": "invalid request", "success": false } HTTP 401- 잘못된 토큰 또는 조회 키
application/json예시 응답
{ "message": "invalid retrieval key", "success": false } HTTP 410- 자격 증명이 만료되었거나 이미 조회됨
application/json예시 응답
{ "message": "workflow credentials are no longer available", "success": false } HTTP 429- 요청 한도 도달
application/json예시 응답
{ "message": "rate limit exceeded", "success": false } HTTP 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/validate
토큰 검증
토큰의 유효성을 확인하고 Kick이 반환한 발급 앱, 유형, 부여된 권한과 만료 정보를 표시합니다.
매개변수
access_token필수string· 본문확인하거나 취소할 Kick 액세스 토큰이며 oauth: 접두사는 제외합니다.
JSON 요청 본문
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
응답
HTTP 200- 요청 성공
application/json예시 응답
{ "active": true, "client_id": "EXAMPLE_CLIENT_ID", "exp": 1893502800, "expires_in": 3600, "scope_details": [ { "description": "Send chat messages.", "scope": "chat:write" } ], "scopes": [ "chat:write" ], "success": true, "token_type": "user" } HTTP 400- 잘못된 요청
application/json예시 응답
{ "message": "invalid request", "success": false } HTTP 401- 잘못된 토큰 또는 조회 키
application/json예시 응답
{ "message": "invalid access token", "success": false } HTTP 429- 요청 한도 도달
application/json예시 응답
{ "message": "rate limit exceeded", "success": false } HTTP 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/refresh
갱신 토큰
갱신 토큰으로 액세스 토큰을 갱신합니다. 자체 Kick 애플리케이션의 토큰을 갱신할 때는 client_id와 client_secret을 모두 제공하세요.
매개변수
client_id선택 사항string· 본문Kick 애플리케이션 클라이언트 ID입니다. 생략하면 KTG 공유 애플리케이션을 사용합니다.
client_secret선택 사항string· 본문Kick 애플리케이션 클라이언트 시크릿입니다. 갱신 요청에서는 client_id와 함께 제공하세요.
refresh_token필수string· 본문계정 및 Kick 애플리케이션의 최신 갱신 토큰입니다.
JSON 요청 본문
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
응답
HTTP 200- 요청 성공
application/json예시 응답
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 400- 잘못된 요청
application/json예시 응답
{ "message": "invalid refresh token or client credentials", "success": false } HTTP 401- 잘못된 토큰 또는 조회 키
application/json예시 응답
{ "message": "invalid retrieval key", "success": false } HTTP 429- 요청 한도 도달
application/json예시 응답
{ "message": "rate limit exceeded", "success": false } HTTP 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/revoke
토큰 폐기
POST 본문으로 전달한 액세스 또는 갱신 토큰 하나를 취소합니다.
매개변수
access_token선택 사항string· 본문확인하거나 취소할 Kick 액세스 토큰이며 oauth: 접두사는 제외합니다.
refresh_token선택 사항string· 본문계정 및 Kick 애플리케이션의 최신 갱신 토큰입니다.
JSON 요청 본문
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
응답
HTTP 200- 요청 성공
application/json예시 응답
{ "revoked": true, "success": true } HTTP 400- 잘못된 요청
application/json예시 응답
{ "message": "invalid token request", "success": false } HTTP 401- 잘못된 토큰 또는 조회 키
application/json예시 응답
{ "message": "invalid retrieval key", "success": false } HTTP 429- 요청 한도 도달
application/json예시 응답
{ "message": "rate limit exceeded", "success": false } HTTP 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/quick-links
빠른 링크
선택한 권한 ID로 재사용 가능한 링크를 만듭니다. auth=stay는 생성기를 열고 auth=authorize는 Kick 인증을 시작합니다.
매개변수
auth선택 사항string· 본문stay는 생성기를 엽니다. authorize와 호환 별칭 auth_auth는 즉시 인증을 시작합니다.
scope_ids선택 사항array· 본문목록의 숫자 ID입니다. 활성 권한을 선택하세요. 서로 다른 권한은 최대 150개입니다.
scopes선택 사항array· 본문쉼표로 구분한 권한 이름입니다. 매개변수는 있어야 하며 빈 값은 권한을 요청하지 않습니다.
JSON 요청 본문
{
"auth": "stay",
"scope_ids": [
6
]
}
응답
HTTP 201- 생성됨
application/json예시 응답
{ "success": true, "url": "https://kicktokengen.com/quick/Ab3dEf8_" } 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 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }
POST /api/v2/token-requests
토큰 요청
인증 요청 링크를 만듭니다. 계정 소유자가 인증을 완료하면 자격 증명이 my_email로 전송됩니다.
매개변수
credentials선택 사항object· 본문자신의 Kick 개발자 앱을 사용하세요. 공유 모드가 제공될 때만 두 필드를 비워 둘 수 있습니다. 인증 정보는 이 탭 메모리와 인증 중 서버에 임시로 암호화되어 보관됩니다.
my_email필수string· 본문요청 완료 후 자격 증명을 받을 이메일 주소입니다.
my_name필수string· 본문요청자 이름이며 UTF-8 기준 최대 128바이트입니다.
scope_ids선택 사항array· 본문목록의 숫자 ID입니다. 활성 권한을 선택하세요. 서로 다른 권한은 최대 150개입니다.
scopes선택 사항array· 본문쉼표로 구분한 권한 이름입니다. 매개변수는 있어야 하며 빈 값은 권한을 요청하지 않습니다.
JSON 요청 본문
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
6
]
}
응답
HTTP 201- 생성됨
application/json예시 응답
{ "expires_at": "2030-01-02T12:00:00Z", "success": true, "url": "https://kicktokengen.com/request/EXAMPLE_ID" } 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 503- 서비스를 일시적으로 사용할 수 없음
application/json예시 응답
{ "message": "Service unavailable", "success": false }