---
title: "Token accounting operability report"
method: GET
path: "/v1/token-accounting/health"
tags: ["System"]
---

# Token accounting operability report

`GET /v1/token-accounting/health`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/token-accounting/health`
- Auth: HTTP bearer

Bounded local health metrics for the accounting system — ledger health, usage coverage by availability, mismatches, reconciliation backlog, unresolved age, write failures, submit-to-commit and commit latency digests, and the pinned counting service's handle/cache/queue counters, refusals and cold/warm latency digests. Counts, labels and durations only; no session, prompt or output content. Answers even when the ledger cannot be opened, because that state is the report.

## Response `200`

Operability report

- TokenAccountingHealthReport: Bounded local health metrics for the accounting system (shared contract shared/types/contracts/token-accounting.ts). `counting` is null when no pinned counting service is installed.
  - `observedAt` string, date-time, required
  - `ledger` TokenLedgerOperability, required
    - `health` TokenLedgerHealth, required: Store-wide accounting health (shared contract shared/types/contracts/token-accounting.ts). `degraded` means a write failed and observations are held in memory; `unavailable` means the store could not be opened.
      - `state` 'available' | 'degraded' | 'unavailable', required
      - `fault` 'busy' | 'diskFull' | 'permissionDenied' | 'corrupt' | 'migrationFailed' | 'ownedByAnotherProcess' | 'ioError', nullable
      - `nonDurableObservations` integer, required
      - `suppressedObservations` integer, required
      - `quarantinedAttempts` integer, required
      - `unresolvedAttempts` integer, required
      - `oldestUnresolvedAt` string, date-time, nullable
    - `storeId` string, nullable
    - `ledgerRevision` integer, required
    - `usageCoverage` TokenUsageCoverage, required: Terminal attempts by usage availability — the coverage denominator. An attempt that never sent is counted apart.
      - `terminalAttempts` integer, required
      - `complete` integer, required
      - `partial` integer, required
      - `missing` integer, required
      - `invalid` integer, required
      - `mismatch` integer, required
      - `unsupported` integer, required
      - `neverDispatched` integer, required
    - `mismatchedAttempts` integer, required
    - `reconciliationBacklog` integer, required
    - `oldestUnresolvedAgeSeconds` number, nullable
    - `writeFailures` integer, required
    - `lostNonDurableObservations` integer, required
    - `rejectedObservations` integer, required
    - `committedBatches` integer, required
    - `queueWait` TokenLatencyDigest, required: A latency distribution over a bounded reservoir of the most recent samples (shared contract shared/types/contracts/token-accounting.ts). Milliseconds; percentiles are null while the reservoir is empty.
      - `samples` integer, required
      - `recorded` integer, required
      - `p50Ms` number, nullable
      - `p95Ms` number, nullable
      - `p99Ms` number, nullable
      - `maxMs` number, nullable
    - `commitLatency` TokenLatencyDigest, required: A latency distribution over a bounded reservoir of the most recent samples (shared contract shared/types/contracts/token-accounting.ts). Milliseconds; percentiles are null while the reservoir is empty.
      - `samples` integer, required
      - `recorded` integer, required
      - `p50Ms` number, nullable
      - `p95Ms` number, nullable
      - `p99Ms` number, nullable
      - `maxMs` number, nullable
  - `counting` TokenCountingOperability
    - `loadedHandles` integer, required
    - `cachedCounts` integer, required
    - `loadsStarted` integer, required
    - `cacheHits` integer, required
    - `cacheMisses` integer, required
    - `activeCounts` integer, required
    - `queuedCounts` integer, required
    - `refusals` object, required
    - `unsupportedContracts` integer, required
    - `presetSupport` object, required
      - `supported` integer, required
      - `candidate` integer, required
      - `unsupported` integer, required
    - `coldLoad` TokenLatencyDigest, required: A latency distribution over a bounded reservoir of the most recent samples (shared contract shared/types/contracts/token-accounting.ts). Milliseconds; percentiles are null while the reservoir is empty.
      - `samples` integer, required
      - `recorded` integer, required
      - `p50Ms` number, nullable
      - `p95Ms` number, nullable
      - `p99Ms` number, nullable
      - `maxMs` number, nullable
    - `warmCount` TokenLatencyDigest, required: A latency distribution over a bounded reservoir of the most recent samples (shared contract shared/types/contracts/token-accounting.ts). Milliseconds; percentiles are null while the reservoir is empty.
      - `samples` integer, required
      - `recorded` integer, required
      - `p50Ms` number, nullable
      - `p95Ms` number, nullable
      - `p99Ms` number, nullable
      - `maxMs` number, nullable
    - `queueWait` TokenLatencyDigest, required: A latency distribution over a bounded reservoir of the most recent samples (shared contract shared/types/contracts/token-accounting.ts). Milliseconds; percentiles are null while the reservoir is empty.
      - `samples` integer, required
      - `recorded` integer, required
      - `p50Ms` number, nullable
      - `p95Ms` number, nullable
      - `p99Ms` number, nullable
      - `maxMs` number, nullable

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
