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을 받으려면 계정 비밀번호를 입력합니다

API 정보
요청 세부 정보
요청 헤더
쿼리 파라미터
로그 유형
응답 세부 정보
성공 응답 예시
핵심 응답 필드
other 필드는 중첩 객체가 아니라 JSON 문자열을 담고 있으므로, 두 번째 파싱이 필요합니다
(json.loads() in Python, JSON.parse() in JavaScript). 여기에는 billing_type,
request_path(실제로 호출된 엔드포인트), group_ratio, model_ratio, usage가 포함됩니다.쿼터 변환
변환 규칙
500,000 쿼터 = $1.00 USD
quota ÷ 500,000
예시:
quota: 7500→ $0.015 USDquota: 22500→ $0.045 USDquota: 18→ $0.000036 USD
오류 응답
HTTP 401 - 인증 실패
sk-로 시작하는 API key를
실수로 시스템 token으로 사용한 경우입니다.
해결 방법: 콘솔에서 시스템 token을 다시 생성하고, Authorization에 Bearer 접두사가
없는 원시 값이 들어 있는지 확인하십시오.
코드 예제
cURL 예제(단일 페이지, 빠른 확인)
이 명령은 최대 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를 제공하십시오. 그러면 정확한 요청을 끝에서 끝까지 식별할 수 있으므로, “어떤 모델에 대한 호출이 특정 시점에 실패했다”라고 설명하는 것보다 훨씬 효율적입니다.
자주 묻는 질문
왜 10개 레코드만 반환됩니까?
왜 10개 레코드만 반환됩니까?
서버 측에서
page_size의 상한은 10입니다. 더 큰 값을 넣어도 오류는 나지 않지만 적용되지도 않습니다. 더 많이 가져오려면 응답이 빈 배열을 반환할 때까지 페이지네이션(p=0, p=1, p=2 등)을 해야 합니다. 위의 Python 및 Node.js 예제에는 이미 이 내용이 포함되어 있습니다.응답의 일부 필드가 비어 있습니다. 문제가 있습니까?
응답의 일부 필드가 비어 있습니다. 문제가 있습니까?
아니요. 일부 필드는 플랫폼 내부 정보를 담고 있으며 일반 계정의 관점에서는 비어 있거나 0입니다. 이는 예상된 동작이며, 정산이나 문제 해결에 필요한 필드에는 영향을 주지 않습니다 —
quota, model_name, error_code, request_id은 모두 완전히 채워져 있습니다.token_group이 콘솔에 표시되는 그룹 이름과 다른 이유는 무엇입니까?
token_group이 콘솔에 표시되는 그룹 이름과 다른 이유는 무엇입니까?
API는 그룹 식별자를 반환하는 반면, 콘솔은 그룹의 레이블을 표시합니다. 이 둘은 다를 수 있습니다 — 예를 들어 API는
default을 반환하지만 콘솔에는 Default가 표시됩니다.전체 매핑은 공개 엔드포인트 https://api.apiyi.com/api/pricing의 usable_group 필드에서 확인할 수 있으며, 이 필드는 식별자를 레이블에 매핑합니다. 보고서가 콘솔과 일치하도록 하려면 해당 매핑을 직접 적용하십시오.token 수와 쿼터가 서로 맞지 않는 것 같습니다. 무엇이 기준입니까?
token 수와 쿼터가 서로 맞지 않는 것 같습니다. 무엇이 기준입니까?
quota을 사용하십시오. 이는 호출에서 실제로 차감된 금액이며, 정산에 적합한 유일한 필드입니다. 이미지 생성 및 동영상 생성처럼 호출당 과금되는 모델의 경우, 응답의 token 수는 과금에 참여하지 않는 자리표시자 값일 수 있습니다 — 해당 모델은 by_count을 other.billing_type에서 보고합니다.얼마나 과거까지 조회할 수 있습니까?
얼마나 과거까지 조회할 수 있습니까?
start_timestamp와 end_timestamp로 원하는 범위를 지정하십시오. 이력 데이터의 정확한 보존 기간은 지원팀에 문의해 주십시오. 장기 조회를 위해 API에 의존하기보다 정산 데이터를 주기적으로 내보내는 것을 권장합니다.curl이 깨진 텍스트를 반환하거나 jq가 오류를 발생시킵니다
curl이 깨진 텍스트를 반환하거나 jq가 오류를 발생시킵니다
원인: API가 gzip으로 압축된 콘텐츠(Python requests 라이브러리와 Node.js fetch API는 자동으로 압축을 해제합니다.
Content-Encoding: gzip)를 반환하며 curl이 이를 압축 해제하지 않기 때문입니다.해결 방법: --compressed 플래그를 추가하십시오:로그를 조회하면 쿼터가 소모됩니까?
로그를 조회하면 쿼터가 소모됩니까?
아니요. 로그 조회 엔드포인트는 어떤 쿼터도 사용하지 않습니다.
중요 사항
요청 제한
- 요청 제한을 피하려면 쿼리 사이를 최소 1초 이상 두십시오
- 적절한 요청 타임아웃을 설정하십시오(30초 권장)
- 넓은 시간 범위의 경우 페이지네이션과 재시도 처리를 구현하십시오
관련 문서
- 잔액 조회 API — 남은 계정 크레딧을 확인합니다
- 토큰 관리 API — API 키를 프로그래밍 방식으로 생성하고 관리합니다
- 내 호출 기록을 보는 방법 — 콘솔에서 수동으로 확인합니다
- 로그와 과금 이해 — 과금 필드를 읽는 방법을 설명합니다