ToAPIsToAPIs
계정 조회사용량

사용량 내역 조회

시스템 액세스 토큰으로 자신의 계정 데이터 조회

GET
/api/v1/account/usage/records

중국 본토 사용자 안내: 중국 본토 사용자는 https://toapis.cn 를 API 엔드포인트(Base URL)로 사용해 주세요. 본 문서의 예시에서 https://toapis.com 을 https://toapis.cn 로 바꿔 주세요.

인증, 페이지 처리 및 오류는 시작하기를 참조하세요.

동작

최대 범위는 31 일입니다. 내역은 생성 시각과 ID 내림차순이며 집계는 날짜 오름차순, 모델 UTF-8 바이트 순서 또는 null 키 그룹 다음 숫자 ID 오름차순입니다. 각 항목은 해당하는 day, model, api_key_id 만 포함합니다. record_count 는 로그 행 수이며 완전한 요청 수가 아닙니다. billing_phase 는 pre_consumed, settled, unknown 으로 최종 작업 결제가 아닙니다. trace 는 원래 요청입니다. 선택 추적과 상위 총 token 은 null 이 될 수 있지만 별도 금액과 입출력 token 은 유지됩니다. records_mutable=true, refund_accounting=not_complete, consistency=eventual 입니다. 정산과 환불로 과거 행이 변경되며 빈 결과가 소비 0 을 뜻하지 않습니다. 단방향 동기화는 업데이트 수집을 보장하지 않습니다.

인증

Authorizationstring헤더필수

Bearer YOUR_SYSTEM_ACCESS_TOKEN 을 사용합니다. 모델 API 키는 사용할 수 없습니다. X-User-Id 는 필요하지 않습니다.

매개변수

fromstring쿼리필수

시간대가 포함된 RFC 3339 시작 시각. 해당 시각을 포함하며 to 와 함께 지정합니다.

제약: date-time.

tostring쿼리필수

시간대가 포함된 RFC 3339 종료 시각. 해당 시각을 제외하며 from 보다 늦어야 합니다.

제약: date-time.

api_key_idstring쿼리

자신의 모델 API 키 ID 를 10 진수 문자열로 지정합니다. 타인의 키는 404 를 반환하며, 삭제된 키로도 과거 사용량을 필터링할 수 있습니다.

제약: pattern=^[1-9][0-9]*$.

modelstring쿼리

모델 식별자 정확히 일치. 사용량에서는 빈 문자열이 빈 모델 이름과 일치합니다.

제약: maxLength=255.

limitinteger쿼리기본값: 50

페이지당 최대 항목 수.

제약: minimum=1; maximum=100; 기본값: 50.

cursorstring쿼리

이전 next_cursor 를 그대로 전달하고 필터를 유지합니다. 조건을 변경하면 처음부터 조회합니다.

제약: maxLength=2048.

요청 예시

curl --request GET \
  --url 'https://toapis.com/api/v1/account/usage/records?from=2026-11-01T00:00:00Z&to=2026-11-02T00:00:00Z&api_key_id=42&limit=20' \
  --header 'Authorization: Bearer YOUR_SYSTEM_ACCESS_TOKEN'
import requests

response = requests.get(
    "https://toapis.com/api/v1/account/usage/records",
    headers={"Authorization": "Bearer YOUR_SYSTEM_ACCESS_TOKEN"},
    params={
        "from": "2026-11-01T00:00:00Z",
        "to": "2026-11-02T00:00:00Z",
        "api_key_id": "42",
        "limit": "20"
    },
    timeout=30,
)
response.raise_for_status()
print(response.json())
const url = new URL("https://toapis.com/api/v1/account/usage/records");
url.search = new URLSearchParams({
  "from": "2026-11-01T00:00:00Z",
  "to": "2026-11-02T00:00:00Z",
  "api_key_id": "42",
  "limit": "20"
}).toString();

const response = await fetch(url, {
  headers: { Authorization: "Bearer YOUR_SYSTEM_ACCESS_TOKEN" },
  signal: AbortSignal.timeout(30_000),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
console.log(await response.json());

응답 필드

예시는 가상 데이터이며 credits_per_usd="100" 을 가정합니다. 실제 환산에는 응답 값을 사용하세요.

결과는 data.items 에 있습니다. has_more 와 next_cursor 로 페이지를 조회합니다. 마지막 커서는 null 이며 총 개수는 반환하지 않습니다.

codeinteger

결과 코드. 0 은 성공입니다.

messagestring

성공 시 빈 문자열이며 오류 메시지는 현지화됩니다.

dataobject

현재 조회의 결과 객체입니다.

data.itemsobject[]

현재 페이지의 기록 목록이며 빈 결과는 [] 입니다.

data.items[].idstring

소비 로그 기록의 ID 입니다. 10 진수 ID 문자열로 반환합니다.

data.items[].created_atstring | null

생성 시각입니다. 시간대가 포함된 RFC 3339 형식입니다. 불명확하거나 해당하지 않으면 null 입니다.

data.items[].api_key_idstring | null

연결된 모델 API 키 ID. 연결된 키가 없으면 null 입니다.

data.items[].key_namestring | null

로그에 기록된 API 키 이름입니다. 불명확하거나 해당하지 않으면 null 입니다.

data.items[].modelstring

모델 식별자입니다.

data.items[].task_idstring | null

연결된 플랫폼 작업 ID 입니다. 불명확하거나 해당하지 않으면 null 입니다.

data.items[].recorded_cost_usdstring

현재 소비 로그의 USD 금액이며 모든 환불을 반영한 순지출이 아닙니다. 정밀도를 유지하기 위해 십진수 문자열로 반환합니다.

data.items[].recorded_creditsstring

현재 소비 로그에 기록된 credits 입니다. 정밀도를 유지하기 위해 십진수 문자열로 반환합니다.

data.items[].billing_phasestring

로그의 결제 단계이며 작업의 최종 정산 상태와 다릅니다. 허용 값: pre_consumed, settled, unknown.

data.items[].usageobject

입력, 출력 및 제공자가 보고한 token 수입니다.

data.items[].usage.input_tokensinteger

로그에 기록된 입력 token 수입니다.

data.items[].usage.output_tokensinteger

로그에 기록된 출력 token 수입니다.

data.items[].usage.reported_total_tokensinteger | null

제공자가 보고한 총 token 수. 불명확하면 null 이며 입출력 합계로 대체하지 않습니다.

data.items[].traceobject | null

원래 생성 요청의 추적 정보이며 현재 조회 ID 와 다릅니다. 불명확하거나 해당하지 않으면 null 입니다.

data.items[].trace.request_idstring | null

원래 생성 요청의 플랫폼 추적 ID 입니다. 불명확하거나 해당하지 않으면 null 입니다.

data.items[].trace.client_request_idstring | null

원래 생성 요청에 기록된 클라이언트 요청 ID 입니다. 불명확하거나 해당하지 않으면 null 입니다.

data.has_moreboolean

다음 페이지가 있는지 나타냅니다.

data.next_cursorstring | null

동일한 필터로 cursor 에 그대로 전달합니다. 마지막 페이지는 null 입니다.

data.metaobject

데이터 출처, 조회 범위 및 집계 기준 등의 메타데이터입니다.

data.meta.scopestring

조회 데이터의 소유 범위이며 인증된 계정 자신입니다. 고정 값: "self".

data.meta.fromstring

조회 시간 범위의 시작 시각을 포함합니다. 시간대가 포함된 RFC 3339 형식입니다.

data.meta.tostring

조회 시간 범위의 종료 시각은 제외합니다. 시간대가 포함된 RFC 3339 형식입니다.

data.meta.time_basisstring

시간 필터와 날짜 집계는 소비 로그 생성 시각을 사용합니다. 고정 값: "record_created_at".

data.meta.cost_basisstring

금액은 현재 소비 로그 값이며 고정된 최종 청구서가 아닙니다. 고정 값: "current_consume_log_amount".

data.meta.refund_accountingstring

환불 반영의 완전성입니다. not_complete 는 완전한 순지출 원장이 아님을 뜻합니다. 고정 값: "not_complete".

data.meta.records_mutableboolean

정산이나 환불로 기록이 갱신될 수 있는지 나타내며 현재 true 입니다.

data.meta.consistencystring

eventual 은 최종 일관성으로 기록이 나중에 갱신될 수 있습니다. 고정 값: "eventual".

data.meta.consume_logging_enabledboolean

소비 로그 활성화 여부입니다. 기록이 없다고 청구가 없음을 뜻하지 않습니다.

data.meta.credits_per_usdstring

1 USD 당 credits 수. 이 값으로 환산합니다. 정밀도를 유지하기 위해 십진수 문자열로 반환합니다.

응답 예시

{
  "code": 0,
  "message": "",
  "data": {
    "items": [
      {
        "id": "9001",
        "created_at": "2026-11-01T08:00:00Z",
        "api_key_id": "42",
        "key_name": "Example Key",
        "model": "example-text-model",
        "task_id": null,
        "recorded_cost_usd": "0.02",
        "recorded_credits": "2",
        "billing_phase": "settled",
        "usage": {
          "input_tokens": 1000,
          "output_tokens": 200,
          "reported_total_tokens": 1200
        },
        "trace": {
          "request_id": "request_example_01",
          "client_request_id": "client_example_01"
        }
      }
    ],
    "has_more": false,
    "next_cursor": null,
    "meta": {
      "scope": "self",
      "from": "2026-11-01T00:00:00Z",
      "to": "2026-11-02T00:00:00Z",
      "time_basis": "record_created_at",
      "cost_basis": "current_consume_log_amount",
      "refund_accounting": "not_complete",
      "records_mutable": true,
      "consistency": "eventual",
      "consume_logging_enabled": true,
      "credits_per_usd": "100"
    }
  }
}