API 문서

v2 API로 Kick 인증 흐름을 만들고 권한을 확인하며 토큰을 관리하세요.

OpenAPI 다운로드

인증 흐름

  1. 권한 목록을 확인하고 연동에 필요한 활성 권한 ID를 선택하세요.
  2. 흐름을 만드세요. 조회 키를 비공개로 보관하고 계정 소유자의 브라우저에서 authorization_url을 여세요.
  3. 인증 후 자격 증명을 한 번만 조회하세요. 액세스 토큰과 최신 갱신 토큰을 모두 저장하세요.

흐름은 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/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
}
이 엔드포인트 테스트