koAPI 레퍼런스

API 레퍼런스

별도 표시 없으면 모든 엔드포인트는 JSON in/out. bearer 토큰은 Authorization: Bearer …. 임베드 엔드포인트는 브라우저 편의를 위해 ?token= 쿼리스트링도 허용.

공개 read

GET /api/usage/totals

{
  "totals": {
    "input": 18234,
    "cacheCreation": 4521,
    "cacheRead": 92341,
    "output": 7821,
    "sum": 122917,
    "messages": 142,
    "costUsd": 3.71
  },
  "timestamp": 1729900000
}

GET /api/usage/timeseries?from=&to=&step=

step은 밀리초. 반환 { from, to, step, buckets: [{ ts, messages, tokensRaw, tokensWeighted, costUsd }] }.

GET /api/usage/leaderboard?by=user|machine|model_family&limit=20

선택한 차원으로 그룹화한 Top-N.

GET /api/usage/users/:name

유저 상세 — 모델 패밀리/머신별 breakdown.

GET /api/usage/recent?limit=50

토큰 카운트/모델/머신/비용 포함된 최근 어시스턴트 메시지.

GET /api/usage/breakdown.csv

/api/usage/breakdown과 같은 데이터를 CSV로 (스프레드시트 import용).

SSE /api/usage/stream

Server-Sent Events 스트림. updated 알림마다 이벤트 1개. 페이로드는 /api/usage/totals와 동일.

Embed (오리진 제한)

GET /embed/totals?token=we_…

/api/usage/totals와 같은 페이로드. embed-origins 테이블에 있는 오리진에서만 호출 가능.

SSE /embed/stream?token=we_…

/api/usage/stream과 같은 페이로드. 같은 오리진 제한.

Ingest (스코프: ingest)

POST /api/ingest/messages

{
  "machine": "alice-mbp",
  "messages": [
    {
      "message_id": "msg_…",
      "model": "claude-sonnet-4-6",
      "input_tokens": 421,
      "cache_creation_input_tokens": 0,
      "cache_read_input_tokens": 14093,
      "output_tokens": 612,
      "ts": 1729900000
    }
  ]
}

message_id로 dedupe. 멱등 — 같은 페이로드 재전송은 no-op.

Setup wizard (status 외 admin 스코프)

GET /api/setup/status

Public. 반환 { complete, scenario, infra, completedAt, headless, db: { kind } }.

POST /api/setup/complete

admin 스코프. Body: { scenario, infra }.

POST /api/setup/reset

admin 스코프. setup.* 키 초기화.

Admin (스코프: admin)

토큰

  • GET /api/admin/tokens — 목록 (해시만, 평문 없음)
  • POST /api/admin/tokens — 발급 { user, scope, label?, expiresAt? }, 일회성 평문 { token, ...row } 반환
  • DELETE /api/admin/tokens/:id — 폐기

임베드 오리진

  • GET /api/admin/embed-origins
  • POST /api/admin/embed-origins { origin, label? }
  • DELETE /api/admin/embed-origins/:id

감사 로그

GET /api/admin/audit?since=&limit= — 토큰 발급/폐기, 임베드 변경, setup 액션의 시간순 로그.

Prometheus

GET /metrics

OpenMetrics 포맷. 라벨: user, machine, model_family.

wigtn_tokens_total{user="alice",machine="mbp",model_family="opus",kind="input"} 18234
wigtn_messages_total{user="alice",machine="mbp",model_family="opus"} 142
wigtn_cost_usd_total{user="alice",machine="mbp",model_family="opus"} 3.71

상태 코드

코드의미
200OK
204OK, 본문 없음 (폐기, 삭제)
400검증 에러
401토큰 없음
403토큰 스코프 부족 또는 오리진 화이트리스트 미일치
404리소스 없음
409충돌 (예: 중복 임베드 오리진)
429rate limit (기본 100 req/min/token)
500내부 — 서버 로그 확인