---
title: "Billing Reconciliation"
method: GET
path: "/api/internal/reconciliation"
tags: ["Internal — Staff Tools", "internal"]
---

# Billing Reconciliation

`GET /api/internal/reconciliation`

## Request

- Base URL: `https://api.thebetterhire.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.thebetterhire.ai/api/internal/reconciliation`
- Auth: HTTP bearer

Completed-but-unbilled interviews — the silent billing-failure detector.

Lists chargeable interviews that reached status='completed' but have no
deduction row, i.e. billing never fired. A capped action still writes a
$0 audit row, so a *missing* row is a real miss, not a free action.
Internal-staff only (404 to everyone else, same as the rest of this
router). Read-only — no mutation, no backfill from here.

## Query parameters

- `window_days` integer

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api.md) · [All operations](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/revisions/c8ad03e900ea?raw)
