메인 콘텐츠로 건너뛰기

API 개요

Token 관리 API를 사용하면 콘솔에서 키를 하나씩 클릭해 관리하는 대신, 코드로 API 키의 전체 수명 주기를 관리할 수 있습니다. 가장 일반적인 사용 사례는 일괄 발급입니다. 각 팀원, 다운스트림 고객 또는 프로젝트에 각각 고유한 키를 제공하고, 각 키에 사용할 수 있는 금액, 호출할 수 있는 모델, 유효 기간을 개별적으로 설정할 수 있습니다. 예약 작업과 함께 사용하면 각 키에 자동으로 재설정되는 일일 예산을 설정할 수도 있습니다.

쿼터 한도

remain_quota 이 키가 사용할 수 있는 총액을 제한합니다

모델 제한

models 허용 목록을 설정하며, 목록에 없는 항목에 대한 호출은 거부됩니다

만료 제한

expired_time 만료 시각을 설정하며, 이 시각이 지나면 키가 작동하지 않습니다
키가 한두 개만 필요하다면 콘솔을 사용하는 편이 더 빠릅니다. API 키 생성 방법을 참고하세요. 이 API는 자동 발급, 예약된 키 로테이션 또는 자체 시스템에 키 관리를 통합하는 용도를 위한 것입니다.

개인 액세스 Token 발급 방법

Token 관리 API는 개인 액세스 token(nap_로 시작)으로 인증하며, 이는 API 키와 동일하지 않습니다.
1

개인 액세스 Tokens 열기

api.apiyi.com/account/profile의 프로필 페이지로 이동합니다. 계정 옵션에서 개인 액세스 Tokens → Token 생성을 클릭합니다.
2

필요한 Model keys 권한 선택

세 가지 권한은 독립적입니다. 사용하는 권한만 선택하십시오:대량 발급 스크립트에는 세 가지가 모두 필요합니다. 사용량 모니터링 스크립트에는 Read 권한만 필요합니다.
3

만료 기간 및 IP 허용 목록 설정

기본 만료 기간은 30일이므로 더 긴 기간으로 설정하는 것을 권장합니다. 발급 스크립트가 고정 IP를 사용하는 서버에서 실행되는 경우 IP 허용 목록을 설정하는 것을 강력히 권장합니다. 허용 목록은 생성 후 수정할 수 없으므로, 먼저 허용 목록 없이 스크립트가 정상 작동하는지 확인한 다음 허용 목록이 포함된 별도의 프로덕션 token을 생성하십시오.
개인 액세스 token 생성: 이름, 만료 기간, IP 허용 목록 및 권한
Write 및 Reveal secret 권한이 있는 token은 모델을 호출할 수 있는 API 키를 생성할 수 있습니다. 계정 비밀번호처럼 안전하게 관리하십시오.개인 액세스 token 자체는 모델을 호출할 수 없지만, 모델을 호출할 수 있는 키를 발급할 수 있습니다. 이러한 token에는 IP 허용 목록을 지정하고, 코드 대신 시크릿 관리자에 저장하며, 저장소에 절대 커밋하지 말고 만료되기 전에 교체하십시오.
기존 시스템 tokens는 2026-11-11 (UTC+8)에 폐기될 예정입니다. “계정 옵션 - 시스템 Token”에서 생성된 AccessTokens는 해당 시점까지 계속 작동합니다. 해당 날짜 이후에는 401 ACCESS_TOKEN_LEGACY_RETIRED를 반환합니다. 사용량을 검토하여 일정을 연장할 수도 있지만, 지금 개인 액세스 token으로 전환하는 것을 권장합니다. 전환 시 스크립트도 확인하십시오. 생성 엔드포인트는 이제 마스킹된 key를 반환합니다. 일반 텍스트를 가져오려면 아래 설명된 대로 POST /api/token/{id}/key를 호출하십시오. 개인 액세스 Token이란 무엇인가요?를 참조하십시오.

엔드포인트

모든 엔드포인트는 동일한 방식으로 인증합니다: 개인 액세스 token을 Authorization 헤더에 입력합니다. Bearer 접두사는 선택 사항입니다. 기본 URL은 https://api.apiyi.com입니다.

token 생성

요청 예시

요청 필드

unlimited_quota의 기본값은 false이고 remain_quota의 기본값은 0입니다. 둘 다 생략하면 쿼터가 0인 token이 생성되어 사용할 수 없습니다. remain_quota을 명시적으로 설정하거나 unlimited_quota을(를) true(으)로 설정하십시오.
모델 허용 목록에는 models 필드를 사용하십시오.응답 구조에는 model_limits, model_limits_enabled 및 allow_ips도 포함되어 있습니다. 이 값들을 전달해도 오류가 발생하지 않으며 엔드포인트는 여전히 200을 반환하지만, 현재는 아무런 효과가 없으며 token을 다시 조회하면 설정되지 않은 것으로 나타납니다. 사용 가능한 모델을 제한하려면 models을(를) 사용하십시오. 소스 IP 제한은 현재 직접 구현해야 합니다.

응답 예시

응답의 key은 마스킹되어 있어 직접 사용할 수 없습니다. 평문을 확인하려면 응답의 id을(를) 사용하여 평문 조회 엔드포인트를 호출하십시오.

키 일반 텍스트 조회

  • 개인 액세스 토큰에 Model keys · Reveal secret 권한이 필요하며, 그렇지 않으면 403 ACCESS_TOKEN_SCOPE_DENIED이 반환됩니다.
  • 반환된 key에는 sk- 접두사가 포함되지 않습니다. 직접 앞에 추가해야 합니다. 위 예시에서 실제 API 키는 sk-K1RPzapu…입니다.
  • 즉시 저장하고 안전한 채널을 통해 배포하십시오. 응답 본문을 로그 파일에 남겨두지 마십시오.

일괄 생성

서버 측 일괄 생성 엔드포인트는 제공되지 않습니다 — 요청 본문에 count와 같은 값을 전달해도 적용되지 않으며 단일 token만 생성됩니다. 일괄 발급은 클라이언트에서 반복 실행하여 수행합니다.
단일 사용자는 최대 1,000개의 tokens를 보유할 수 있습니다. 이는 계정 전체에 적용되는 상한선이며, 삭제되지 않고 비활성화된 tokens도 포함됩니다. 상한선에 도달하면 생성 엔드포인트 호출이 실패하므로, 더 이상 사용하지 않는 tokens를 삭제하여 슬롯을 확보하십시오.일괄 작업을 실행하기 전에 GET /api/token/?p=0&page_size=100을(를) 페이지별로 조회하여 이미 보유한 개수를 확인하십시오. 키를 교체할 때는 “새 키 생성 → 트래픽 전환 → 이전 키 비활성화 → 남은 호출이 없을 때 삭제”의 마지막 단계까지 확실하게 완료하십시오. 삭제하지 않고 비활성화만 해 두면 슬롯이 계속 점유되므로, 몇 번의 교체 주기만 거쳐도 상한선에 도달하게 됩니다.

세 가지 제한 사용

쿼터 제한

remain_quota은 token이 사용할 수 있는 금액을 제한합니다. 환산 기준은 잔액 조회 API와 일치합니다.

환산 규칙

쿼터 500,000 = $1.00 USD
예를 들어, 하위 고객에게 $10 한도가 설정된 키를 발급하려면 remain_quota을 5000000로 설정하고 unlimited_quota은 false로 설정합니다. 현재까지의 사용량은 token의 used_quota 필드에서 확인할 수 있습니다. remain_quota은 일회성 총액이며 자동으로 충전되지 않습니다. 일일 예산을 설정하려면 아래의 시나리오: 키별 일일 한도를 자동으로 초기화를 참조하세요.

모델 제한

models은 쉼표로 구분된 허용 목록입니다. 설정하면 목록에 없는 모델을 호출할 때 요청이 거부됩니다.
응답은 HTTP 403이며 과금되지 않습니다. models을 생략하면 제한이 적용되지 않습니다.

만료 제한

expired_time은 Unix 초 단위 타임스탬프이며, -1은 만료되지 않음을 의미합니다. 예를 들어, 30일 후 만료되는 키는 다음과 같습니다.

Token 목록 조회

주요 필드:

Token 업데이트하기

업데이트 엔드포인트는 전체 객체를 필요로 합니다 — 패치가 아닙니다.올바른 흐름은 다음과 같습니다: GET 전체 token 객체를 가져와서, 변경하려는 필드를 수정한 뒤 PUT 전체 객체를 다시 보냅니다. 변경된 필드만 보내면 나머지 값이 지워집니다.

시나리오: 매일 자동으로 초기화되는 키별 한도

회사에서 워크플로, 팀 구성원 또는 다운스트림 프로젝트에 키를 제공할 때 흔히 필요한 사항은 “각 키의 일일 사용 금액은 최대 $5이며, 다음 날 한도가 복구됩니다”입니다. 워크플로가 예상치 못하게 실행되더라도 피해는 하루 예산으로 제한됩니다. 플랫폼에는 아직 기본 제공되는 “일일 쿼터” 필드가 없지만, 위의 업데이트 엔드포인트와 자정에 한 번 실행되는 예약 작업을 함께 사용하면 됩니다. 매일 키의 remain_quota을 일일 한도로 되돌립니다. 키 자체는 변경되지 않으므로 팀 구성원은 계속 같은 키를 사용합니다. 하루 예산을 모두 사용한 키의 요청은 거부되며 과금되지 않습니다. 자정에 초기화된 후에는 다시 사용할 수 있습니다.
1

개인 액세스 토큰 준비

모델 키 · 읽기 및 모델 키 · 쓰기 권한을 부여합니다. 비밀 키 표시는 필요하지 않습니다. 스크립트가 고정 IP를 사용하는 서버에서 실행된다면 토큰에 IP 허용 목록을 설정합니다.
2

제한할 키와 일일 한도 목록 작성

목록 조회 엔드포인트를 사용해 각 키의 id을 조회하고, 아래 스크립트의 DAILY_BUDGET_USD에 입력합니다.
3

매일 00:00 (UTC+8)에 스크립트 실행

cron, 클라우드 함수 타이머 또는 원하는 스케줄러를 사용하면 됩니다. 자세한 내용은 아래를 참조하세요.

초기화 스크립트

스크립트는 다음 세 가지 작업도 추가로 수행합니다.
  • 중복 초기화 방지: 하루에 두 번 실행되더라도(스케줄러의 누락 작업 보정 실행이나 수동 재실행 등) 하루치 예산을 다시 지급하지 않습니다.
  • 초과 사용분 이월: 쿼터는 소프트 캡이므로(아래 참조), 어제 초과 사용한 금액을 오늘 차감하여 시간이 지나도 일일 평균이 캡 이내로 유지됩니다. 이 기능을 원하지 않으면 CARRY_OVERDRAFT를 False로 설정합니다.
  • 어제 사용 금액 출력: 실행할 때마다 이전 기간에 각 키가 사용한 금액을 로그에 기록하므로, 로그를 간단한 일일 보고서로도 활용할 수 있습니다.

예약 실행

토큰을 본인만 읽을 수 있는 환경 파일에 저장한 다음, cron으로 스크립트가 매일 실행되도록 설정합니다.
다른 시간대에서 “하루”의 기준을 정하려면 cron 시간과 스크립트의 TZ를 모두 변경합니다.

이를 사용하기 전에 알아둘 점

쿼터는 정확한 차단선이 아니라 소프트 캡입니다. 쿼터 확인은 요청이 시작될 때 이루어지므로 여러 요청이 동시에 실행되면 모두 쿼터를 통과할 수 있으며, 비용이 많이 드는 단일 요청(동영상, 4K 이미지, 매우 긴 컨텍스트)은 한 번에 한도를 초과해 잔액이 마이너스가 될 수 있습니다. 동시 실행 수와 단가가 높을수록 초과 폭도 커집니다. 스크립트는 초과 지출을 다음 날로 이월해 차감합니다. 절대로 한도를 초과해서는 안 되는 키가 있다면 자체적으로 해당 키의 동시 실행 수를 제어하거나, models 허용 목록을 사용해 비용이 많이 드는 모델을 제외하세요.
  • 초기화는 예산을 더하는 것이 아니라 덮어씁니다: 사용하지 않은 예산은 다음 날로 이월되지 않습니다. 콘솔에서 이 키들의 쿼터를 수동으로 변경해도 다음 초기화 때 덮어써집니다
  • 자정을 전후해 처리 중인 요청: 자정 전에 보냈지만 자정 이후에 완료된 요청은 새 날짜의 예산에서 과금될 수 있습니다. 대개 소액입니다
  • 스크립트가 실행되지 않으면 키는 소진된 상태로 유지됩니다: 호출은 일시적으로 차단되지만 추가 비용은 발생하지 않습니다. 예약 작업에 실패 알림을 추가하세요
  • 계정 잔액이 여전히 전체 한도입니다: 키의 일일 한도를 모두 합한 금액이 계정 잔액보다 크면 잔액이 먼저 소진되고 모든 키가 중지됩니다
  • 오늘 특정 키에 조금 더 할당해야 하나요? 업데이트 엔드포인트를 사용해 해당 키의 remain_quota를 늘리세요. 다음 날에는 평소처럼 한도로 초기화됩니다

비활성화 및 삭제

비활성화(기록은 유지됨)

비활성화되면 키는 즉시 작동을 멈춥니다 — 이를 사용한 호출은 401을 반환합니다 — 그러나 token 기록과 사용 내역은 유지됩니다.

삭제(되돌릴 수 없음)

일괄 삭제도 마찬가지로 클라이언트 측 루프입니다:
삭제는 되돌릴 수 없습니다. 키를 일시적으로 중단하려는 경우에는 대신 비활성화하십시오 — 사용 기록은 대조를 위해 계속 확인할 수 있습니다.

자주 묻는 질문

생성 엔드포인트는 마스킹된 key(중간에 *이 연속해서 들어 있음)를 반환하므로 바로 사용할 수 없습니다. 반환된 id로 POST /api/token/{id}/key을 호출해 평문을 가져온 다음(비밀 정보 표시 권한 필요), sk-을 앞에 붙이십시오. 이전 스크립트에서 생성 응답의 key을 바로 사용하고 있다면 개인 액세스 token으로 전환할 때 이 단계를 추가하십시오.
생성 시 remain_quota을 설정하지 않았거나 unlimited_quota을 true로 설정하지 않았을 가능성이 큽니다. 이 기본 조합으로 생성하면 쿼터가 0인 token이 만들어집니다. 두 항목 중 하나를 명시적으로 지정하여 다시 생성하십시오.
현재 이 필드와 model_limits_enabled은 적용되지 않습니다. 해당 값을 전달해도 오류는 발생하지 않지만 저장되지 않습니다. 사용 가능한 모델을 제한하려면 models을 사용하십시오. 현재 소스 IP 제한은 직접 처리해야 합니다.
서버 측 일괄 처리 엔드포인트는 없으며, 요청 본문에 count과 같은 값을 전달해도 적용되지 않습니다. 대신 클라이언트에서 생성 호출을 반복하십시오. 위의 일괄 생성 섹션을 참조하십시오.
사용자당 최대 1,000개이며, 비활성화했지만 삭제하지 않은 token도 총 개수에 포함됩니다. 한도에 도달하면 더 이상 필요하지 않은 token을 삭제할 때까지 생성할 수 없습니다. 키를 교체할 때는 삭제 단계까지 완료해야 합니다. 비활성화만 하면 해당 자리가 계속 차지됩니다.
기본 제공되는 일일 쿼터 필드는 없지만 예약 작업으로 처리할 수 있습니다. 매일 00:00 (UTC+8)에 업데이트 엔드포인트를 호출해 해당 키의 remain_quota을 일일 한도로 다시 설정하십시오. 키 자체는 변경되지 않습니다. 키의 예산을 다 쓰면 호출은 거부되고 과금되지 않으며, 다음 날 다시 사용할 수 있습니다. 전체 스크립트와 주의 사항은 위의 시나리오: 키별 일일 한도 자동 초기화를 참조하십시오.
업데이트 엔드포인트에는 전체 객체가 필요합니다. 먼저 전체 객체를 GET한 다음 수정하고, 변경된 필드만 전송하는 대신 전체 객체를 다시 PUT하십시오.
비활성화(status: 2)하면 키가 즉시 작동을 중지하지만 레코드와 사용량 기록은 유지되며, 언제든지 1로 되돌릴 수 있습니다. 삭제는 되돌릴 수 없으며 레코드가 제거됩니다. 일시적으로 사용을 중단하려면 비활성화를 권장합니다.
token의 used_quota 필드에는 해당 키의 누적 지출액이 표시됩니다(÷ 500,000 = USD). 기간별 내역이나 호출 단위 상세 정보를 보려면 콘솔 로그 페이지에서 token 이름으로 필터링하십시오. 호출 기록을 확인하는 방법을 참조하십시오.

중요 참고 사항

개인 액세스 token은 API 키가 아니며, 두 항목은 서로 대체할 수 없습니다
  • API 키(sk-(으)로 시작)는 /v1/* 추론 엔드포인트 전용입니다
  • 개인 액세스 token(nap_(으)로 시작)은 /api/* 관리 엔드포인트 전용이며 모델을 호출할 수 없습니다
오류 참조: 401 ACCESS_TOKEN_LEGACY_RETIRED은(는) 사용 중단된 레거시 시스템 token을 여전히 사용하고 있음을 의미합니다. 401 This access token may not be used from the current IP address.은(는) 해당 token의 허용 목록 외의 IP에서 요청이 전송되었음을 의미합니다. 403 ACCESS_TOKEN_SCOPE_DENIED은(는) 해당 token에 이 엔드포인트에 필요한 권한이 없음을 의미합니다(엔드포인트 표 참조).
일반 텍스트 키를 주의 깊게 다루십시오일반 텍스트 조회 엔드포인트는 모델을 직접 호출할 수 있는 키를 반환합니다. 따라서 다음 사항을 준수하십시오:
  • key이(가) 포함된 응답 본문을 로그 파일에 기록하거나 저장소에 커밋하지 마십시오
  • 단체 채팅방이 아닌 안전한 채널을 통해 팀원에게 키를 배포하십시오
  • 이 일반 텍스트에는 sk- 접두사가 포함되어 있지 않으므로 일반적인 시크릿 스캐너가 감지하지 못할 수 있습니다 — 자동화된 검사에만 의존하지 마십시오
운영 팁
  • 대량 생성 시에는 순간적인 동시 실행 수가 급증하는 것을 방지하기 위해 호출 간에 적절한 지연 시간을 두십시오
  • 나중에 로그에서 token_name별 사용량을 추적할 수 있도록 각 키에 의미 있는 name(예: team-alice 또는 prod-webhook)을(를) 지정하십시오
  • 키 교체 시: 새 키를 생성하고, 트래픽을 전환한 후, 이전 키를 비활성화하고 잠시 모니터링한 다음, 더 이상 호출이 발생하지 않는 것을 확인한 후에만 삭제하십시오

관련 문서