Skip to main content

API 개요

Log Query API는 계정에서 이루어진 모든 API 호출에 대한 상세 기록을 반환합니다. 여기에는 사용된 모델, 실제 과금 금액, 지연 시간, 호출이 스트리밍으로 전송되었는지 여부, 그리고 호출이 실패했을 때의 오류 코드가 포함됩니다. 이 API는 Balance Query API를 보완합니다. 잔액 조회는 남은 크레딧이 얼마인지 알려주고, 로그 조회는 그 크레딧이 어디에 사용되었는지 알려줍니다. 대표적인 사용 사례 3가지입니다:

자동 대사

시간 범위별 또는 모델별로 실제 지출을 집계하여 자체 과금 내역과 대사합니다

셀프서비스 문제 해결

실패한 요청의 오류 코드를 확인하여 매개변수 문제와 상위 시스템 문제를 구분합니다

지원 티켓

지원팀에 request_id를 제공하면 정확한 호출을 특정할 수 있습니다
로그는 콘솔의 Logs 페이지에서도 볼 수 있습니다. 이 API는 동일한 데이터에 대한 프로그램 방식의 진입점으로, 자동 대사, 예약된 내보내기 또는 자체 모니터링에 데이터를 공급하는 용도로 사용됩니다. 수동 확인은 콘솔을 사용하십시오 — 내 호출 기록을 보는 방법을 참조하십시오.

시스템 Token을 얻는 방법

로그 조회 API는 시스템 Token으로 인증하며, 이는 API key와는 다른 개념입니다(이 페이지 끝의 중요 참고 사항을 참조합니다).
1

콘솔에 접근

프로필 페이지에 접근하려면 api.apiyi.com/account/profile를 방문합니다
2

System Token 찾기

페이지 하단에서 “Account Options - System Token” 섹션을 찾습니다
3

Generate AccessToken

이후 API 질의에 사용할 수 있는 AccessToken을 받으려면 계정 비밀번호를 입력합니다
System Token 받기

API 정보

요청 세부 정보

요청 헤더

쿼리 파라미터

page_size의 실제 상한은 10입니다. page_size=100를 전달해도 10개 레코드만 반환됩니다 — 이는 오류가 아니며, “이 기간에 호출을 10번만 했습니다”라고 오해하기 쉽습니다. 의미 있는 시간 범위는 모두 페이지네이션이 필요합니다. 응답이 빈 배열을 반환할 때까지 반복해야 합니다. 아래의 Python 및 Node.js 예제는 이미 이를 처리합니다.

로그 유형

지출을 계산할 때는 항상 type=2를 전달하십시오. 그렇지 않으면 충전 및 시스템 부여 레코드도 함께 반환됩니다. 이들의 quota은 0이지만, model_nametoken_name도 비어 있으므로, 단순 합산하거나 모델별로 그룹화하면 잘못된 결과가 나옵니다.

응답 세부 정보

성공 응답 예시

핵심 응답 필드

other 필드는 중첩 객체가 아니라 JSON 문자열을 담고 있으므로, 두 번째 파싱이 필요합니다 (json.loads() in Python, JSON.parse() in JavaScript). 여기에는 billing_type, request_path(실제로 호출된 엔드포인트), group_ratio, model_ratio, usage가 포함됩니다.

쿼터 변환

변환 규칙

500,000 쿼터 = $1.00 USD
공식: USD 금액 = quota ÷ 500,000 예시:
  • quota: 7500 → $0.015 USD
  • quota: 22500 → $0.045 USD
  • quota: 18 → $0.000036 USD
이것은 잔액 조회 API에서 사용하는 것과 동일한 변환이므로, 두 값이 직접적으로 일치합니다.

오류 응답

HTTP 401 - 인증 실패

이유: 시스템 token이 유효하지 않거나 만료되었거나, sk-로 시작하는 API key를 실수로 시스템 token으로 사용한 경우입니다. 해결 방법: 콘솔에서 시스템 token을 다시 생성하고, AuthorizationBearer 접두사가 없는 원시 값이 들어 있는지 확인하십시오.

코드 예제

cURL 예제(단일 페이지, 빠른 확인)

--compressed 옵션은 필수입니다, API가 gzip으로 압축된 콘텐츠를 반환하기 때문입니다. 이 옵션이 없으면 출력이 깨져 보입니다.
이 명령은 최대 10개 레코드만 반환합니다. 실제 대조 작업에는 아래의 페이지네이션 버전을 사용하십시오.

Python 예제(페이지네이션, 바로 실행 가능)

샘플 출력:

Node.js 예제(페이지네이션)

Python requests 라이브러리와 Node.js fetch API는 모두 gzip을 자동으로 압축 해제하므로, 별도의 설정이 필요하지 않습니다. curl만 명시적인 --compressed 플래그가 필요합니다.

공통 시나리오

특정 기간의 지출 계산

위의 Python 예제를 사용하십시오. 중요한 두 가지는 type=2을 전달하는 것과 합산된 quota을 500,000으로 나누는 것입니다. 이를 단일 모델로 범위를 제한하려면 model_name 매개변수를 추가하십시오.

실패한 호출 찾기

게이트웨이에서 거부된 요청(잘못된 매개변수 등)은 quota가 0이며 과금되지 않습니다. 로그의 error_code를 사용하면 “호출이 실패함”과 “호출은 성공했지만 결과가 마음에 들지 않음”을 구분할 수 있습니다.

지원을 위한 요청 ID 제공

로그에서 문제가 있는 호출을 찾아 지원팀에 request_id를 제공하십시오. 그러면 정확한 요청을 끝에서 끝까지 식별할 수 있으므로, “어떤 모델에 대한 호출이 특정 시점에 실패했다”라고 설명하는 것보다 훨씬 효율적입니다.

자주 묻는 질문

서버 측에서 page_size의 상한은 10입니다. 더 큰 값을 넣어도 오류는 나지 않지만 적용되지도 않습니다. 더 많이 가져오려면 응답이 빈 배열을 반환할 때까지 페이지네이션(p=0, p=1, p=2 등)을 해야 합니다. 위의 Python 및 Node.js 예제에는 이미 이 내용이 포함되어 있습니다.
아니요. 일부 필드는 플랫폼 내부 정보를 담고 있으며 일반 계정의 관점에서는 비어 있거나 0입니다. 이는 예상된 동작이며, 정산이나 문제 해결에 필요한 필드에는 영향을 주지 않습니다 — quota, model_name, error_code, request_id은 모두 완전히 채워져 있습니다.
API는 그룹 식별자를 반환하는 반면, 콘솔은 그룹의 레이블을 표시합니다. 이 둘은 다를 수 있습니다 — 예를 들어 API는 default을 반환하지만 콘솔에는 Default가 표시됩니다.전체 매핑은 공개 엔드포인트 https://api.apiyi.com/api/pricingusable_group 필드에서 확인할 수 있으며, 이 필드는 식별자를 레이블에 매핑합니다. 보고서가 콘솔과 일치하도록 하려면 해당 매핑을 직접 적용하십시오.
quota을 사용하십시오. 이는 호출에서 실제로 차감된 금액이며, 정산에 적합한 유일한 필드입니다. 이미지 생성 및 동영상 생성처럼 호출당 과금되는 모델의 경우, 응답의 token 수는 과금에 참여하지 않는 자리표시자 값일 수 있습니다 — 해당 모델은 by_countother.billing_type에서 보고합니다.
start_timestampend_timestamp로 원하는 범위를 지정하십시오. 이력 데이터의 정확한 보존 기간은 지원팀에 문의해 주십시오. 장기 조회를 위해 API에 의존하기보다 정산 데이터를 주기적으로 내보내는 것을 권장합니다.
원인: API가 gzip으로 압축된 콘텐츠(Content-Encoding: gzip)를 반환하며 curl이 이를 압축 해제하지 않기 때문입니다.해결 방법: --compressed 플래그를 추가하십시오:
Python requests 라이브러리와 Node.js fetch API는 자동으로 압축을 해제합니다.
아니요. 로그 조회 엔드포인트는 어떤 쿼터도 사용하지 않습니다.

중요 사항

시스템 토큰은 API 키가 아니며, 둘은 서로 호환되지 않습니다
  • API 키(접두사가 sk-으로 시작함)는 /v1/* 추론 엔드포인트용입니다. 이를 /api/log/self에 사용하면 401을 반환합니다.
  • 시스템 토큰(접두사가 없는 일반 문자열)은 /api/* 관리 엔드포인트용입니다. 이를 /v1/chat/completions에 사용하면 잘못된 토큰 오류가 반환됩니다.
시스템 토큰의 범위는 계정 전체에 적용되므로, 계정 비밀번호처럼 취급하십시오: 코드가 아니라 시크릿 관리자에 저장하고, 저장소에 절대 커밋하지 말며, 주기적으로 교체하십시오.
로그 응답에는 사용자의 API 키가 평문으로 포함됩니다각 로그 레코드에는 해당 호출을 만든 토큰에 대한 정보가 포함됩니다. 원시 로그 응답을 공개된 곳에 붙여넣거나, 스크린샷을 공유하거나, 제3자에게 넘기지 마십시오 — 내보내기 전에 민감한 필드를 제거하십시오.특히 이 평문에는 sk- 접두사가 포함되지 않으므로, 일반적인 시크릿 스캐너로는 탐지되지 않을 수 있습니다. 자동 검사를 그대로 믿고 놓치지 않도록 하십시오.
요청 제한
  • 요청 제한을 피하려면 쿼리 사이를 최소 1초 이상 두십시오
  • 적절한 요청 타임아웃을 설정하십시오(30초 권장)
  • 넓은 시간 범위의 경우 페이지네이션과 재시도 처리를 구현하십시오

관련 문서