Docs

One endpoint,
every model.

Tare is an OpenAI-compatible gateway in front of every model you use — ours and the ones you bring yourself. One base URL, one key, and every token accounted for.

BillingReconciliation API

Reconciliation API

Billing endpoints for machines: your ERP, finance system or internal dashboard can pull directly, with no login session to simulate.

Use an integration key, not an inference key

These endpoints require an integration key — issue one from the console's API Keys page (pick Reconciliation), or request one from the platform.

⚠️ The three key types do not overlap, and using the wrong one returns an explicit refusal rather than a vague 401:

Key typePermissions
Inference keyCall models
Integration keyRead reports — cannot call models
Provisioning keyManage keys — neither model calls nor billing reads

Endpoints

Base: https://tare.jamerly.ai/v1/integration

PathPurpose
/whoamiWhose key this is, current period, which resources are reachable
/balanceBalance, credit limit, available, lifetime charged/credited
/transactionsLedger entries, paginated
/statementsMonthly statements
/statements/{period}One period, e.g. 2026-07
/usage/dailyDaily usage, filterable by apiKeyId
/attributionCost attribution by model, channel, label
/reconciliationThe platform ledger vs the upstream invoice, and where they differ
Code / Terminal
curl https://tare.jamerly.ai/v1/integration/balance \
  -H "Authorization: Bearer $TARE_INTEGRATION_KEY"

Scope: balance is account-level, usage is per-key

/balance and /transactions are account-level: every key under the account shares one wallet.

This matches what a key is — one key is one billing unit, usage separates by key while the balance is shared. To cap an individual key use the limit on provisioning keys, which is a different mechanism.

Usage does split by key: /usage/daily?apiKeyId=….

Two limits

  • 100 days per query. Pull a year in four requests; exceeding it returns an explicit error rather than silently truncating — a cron job starting at from=2020-01-01 should not have the database absorb the consequences.
  • 1200 requests/minute, counted separately from model traffic. Reconciliation walks hundreds of pages by day, key and model, and the model-traffic tier would 429 you on day one.

Field stability

The response fields here are an external contract; they are not renamed for internal refactors. For an OpenAPI / JSON Schema description, see the last section of Endpoints.

Two prerequisites for reconciliation

A period is cut in a specific timezone. 2026-07 is just a string and its start is not self-evident, so every response carries the timezone the period was cut in. If your side cuts months in a different timezone, the last day's usage lands in a different month and the two sides never reconcile, with a gap small enough to be mistaken for rounding.

Late corrections land in the next period. A locked statement is never rewritten. If your ERP expects last month's number to change when a correction arrives, it will not; look for the adjustment line in the current period, which names the month it came from.

Docs last updated Sep 20, 2026, 06:31 (UTC+8)