Valistry

Send your own records.

A vendor we have no connector for, a bill, an export from a system of your own: send the rows as JSON in the one shape every connector writes, and they land on the ledger like any other source.

The key

Create the endpoint under Connect → OpenTelemetry; the key it shows is the organization's push key. It writes and cannot read. The key the editor holds reads and cannot write.

curl -X POST https://app.valistry.ai/api/v1/records \
  -H "Authorization: Bearer vly_ot_…" -H "Content-Type: application/json" \
  -d '{"records":[{"source_record_id":"inv-0917-3","occurred_at":"2026-09-17T10:00:00Z",
       "provider":"anthropic","model":"claude-sonnet-4","input_tokens":1200,"output_tokens":300,
       "team":"support","workflow":"ticket-triage"}]}'

The fields

source_record_id
Your own id for the row. Required. The same id sent again replaces the row; it never doubles.
occurred_at
When, as an ISO 8601 instant with its offset. Required.
provider · model
The vendor and the model as the vendor names it. Required. A model the rate card knows is priced from it.
input_tokens · output_tokens · cached_tokens
Integers. Optional, default 0.
cost_usd
What the row cost, in dollars, when you know it. Optional. Given, it is kept; absent, the tokens are priced.
request_count
Calls in the row: one for a call, more for a daily bucket. Optional, default 1.
status · latency_ms · attempt
ok, error or timeout; milliseconds; which attempt this was. Optional.
trace_id
The trace the call ran in, when you have one: the join to an outcome. Optional.
application · workflow · team · agent
Who and what, as your own names; a rule can match on any of them. Optional.
workload · region
The class of use, from the fixed list; the region. Optional.

What happens to a row

Priced
A row with tokens and a model the rate card knows is priced from the card, and the record says so. A row with a cost keeps it.
Unpriced
A row with neither lands at zero and is marked; the reply counts them.
Sent again
The same id replaces the row. A retry never doubles a dollar.
Refused
A row the format does not allow refuses the whole batch, naming the row and the field. Nothing is stored.
Up to
5,000 rows a call.