Financial
Query the financial outcomes summary — recovered, prevented, and at-risk spend.
Get financial summary
/api/v1/financial/summaryReturns the aggregated financial opportunity breakdown for your account.
Response
{
"recoverable_confirmed_usd": 142.50,
"recoverable_review_usd": 38.20,
"prevented_usd": 210.00,
"preventable_modeled_usd": 95.40,
"unexplained_critical_usd": 18.75,
"unexplained_review_usd": 9.30,
"total_financial_opportunity_usd": 514.15
}
Fields
| Field | Description |
|---|---|
recoverable_confirmed_usd |
Billing errors confirmed by reconciliation — billable back to the provider |
recoverable_review_usd |
Potential errors flagged for human review |
prevented_usd |
Spend blocked by enforcement rules before reaching the provider |
preventable_modeled_usd |
Modeled savings if enforcement rules were applied to historical spend |
unexplained_critical_usd |
Critical anomalies with no matching provider explanation |
unexplained_review_usd |
Lower-confidence unexplained spend |
total_financial_opportunity_usd |
Sum of all above |
Review queue
/api/v1/financial/review-queueReturns violations queued for human review, ordered by dollar impact.
Resolve a dispute
/api/v1/financial/disputes/{dispute_id}Mark a dispute as resolved.
{
"resolution": "confirmed",
"notes": "Provider confirmed billing error, credit issued."
}
Export disputes
GET /api/v1/financial/disputes/export
Returns a CSV of all disputes. Use ?status=open to filter.
Claims lifecycle
A claim is a billing dispute filed against a provider. TokenID generates a claim
from confirmed reconciliation evidence, then tracks it from draft through
submitted_to_provider to a terminal state — credit_issued, denied, or
partial. Status transitions require the admin role.
Valid status values: draft, submitted_to_provider, provider_acknowledged,
under_review, credit_approved, credit_issued, denied, partial, escalated.
Get a claim
/api/v1/claims/{claim_id}Returns the full claim record including status, totals, external ticket reference, and evidence blob URLs.
curl https://token.audit.id/api/v1/claims/01HXY… \
-H "Authorization: Bearer td_live_xxxx"
{
"id": "01HXY…",
"org_id": "01H00…",
"period_start": "2026-04-01",
"period_end": "2026-04-30",
"provider": "anthropic",
"total_recoverable_cents": 14250,
"confidence_tier": "HIGH",
"status": "draft",
"submitted_at": null,
"resolved_at": null,
"external_ticket_id": null,
"credit_issued_cents": null,
"notes": null,
"evidence_pdf_blob_url": "https://…/evidence.pdf",
"evidence_csv_blob_url": "https://…/evidence.csv",
"created_at": "2026-05-02T08:00:00Z",
"evidence": { "pricing_snapshot": { /* … */ } }
}
Submit a claim
/api/v1/claims/{claim_id}/submitTransitions the claim from draft to submitted_to_provider and stamps submitted_at.
Returns the updated claim. 409 if the claim is not in draft.
curl -X POST https://token.audit.id/api/v1/claims/01HXY…/submit \
-H "Authorization: Bearer td_live_xxxx"
Update claim status
/api/v1/claims/{claim_id}/statusTransition a claim to a new status. Used to record provider responses, denials, and issued credits.
| Field | Type | Required | Description |
|---|---|---|---|
status |
string | Yes | Target status (see valid values above). |
denial_reason |
string | When status = denied |
Free-text reason recorded on the outcome row. |
external_ticket_id |
string | No | Provider's support ticket reference. |
credit_issued_cents |
integer | When status = credit_issued or partial |
Credit amount in cents. |
violation_type |
string | When status = denied |
Violation taxonomy key, used by the weight-recompute job. |
curl -X PATCH https://token.audit.id/api/v1/claims/01HXY…/status \
-H "Authorization: Bearer td_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"status":"credit_issued","credit_issued_cents":14250,"external_ticket_id":"ANT-12345"}'
Returns the updated claim. 400 for unknown status, 409 for illegal transitions.
Get a support-ticket draft
/api/v1/claims/{claim_id}/ticket-draftGenerates a ready-to-paste support ticket draft (subject, body, suggested resolution,
evidence references) for an escalated claim. Idempotent — re-generates from live
data on every call. 409 if the claim is not in escalated status.
{
"org_id": "01H00…",
"claim_id": "01HXY…",
"subject": "Billing discrepancy — Anthropic — Apr 2026",
"body": "Hello Anthropic billing team, …",
"suggested_resolution": "Issue a credit of $142.50 …",
"evidence_refs": ["https://…/evidence.pdf", "https://…/evidence.csv"],
"generated_at": "2026-05-21T08:00:00Z"
}
Pricing table
/api/v1/pricing/tableReturns the per-model unit pricing TokenID uses for cost computation. This is the same table the SDK fetches on startup. No authentication required — rates are public information.
curl https://token.audit.id/api/v1/pricing/table
Response
{
"version": "v1-2026-05-15",
"pricing": {
"claude-opus-4-7": {
"in_per_mtok": 15.0,
"out_per_mtok": 75.0,
"cache_read": 1.5,
"cache_creation": 18.75
},
"gpt-4o": {
"in_per_mtok": 2.5,
"out_per_mtok": 10.0,
"cache_read": 1.25,
"cache_creation": 0.0
}
}
}
| Field | Description |
|---|---|
version |
Snapshot version string, derived from the latest updated_at. Increments whenever any rate changes. |
pricing |
Map keyed by canonical model family. |
pricing.<model>.in_per_mtok |
USD per million input tokens. |
pricing.<model>.out_per_mtok |
USD per million output tokens. |
pricing.<model>.cache_read |
USD per million cache-read tokens. |
pricing.<model>.cache_creation |
USD per million cache-creation tokens. |
For the full record set including provider and updated_at timestamps, use
GET /api/v1/pricing instead.