Transactions
Why the unit of account is a business job, not a tool call.
Cost per call is a number every tool reports and nobody can act on. “You made 190,000 model calls” tells a finance team nothing. “Resolving one support ticket costs $0.41” tells them everything — whether it is worth doing, whether it got worse this month, and what to compare it against.
So the unit of account in Navige is the transaction: one business job, made of however many model calls, tool calls and retries it took.
Opening one
Correlation is opt-in and additive. Send nothing and everything behaves exactly as it would have; send one of these and the calls group themselves.
x-navige-workflow— the stable name for this kind of job, such assupport.ticket.triage. Baselines and per-job costs key on this.x-navige-transaction— your own id for this specific run, used to make retries idempotent rather than counting them twice.traceparent— a standard W3C trace header. If your stack already emits one, you get correlation with no Navige-specific configuration at all.
curl https://api.navige.ai/proxy/openai/v1/chat/completions \
-H "x-navige-key: $NAVIGE_KEY" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "x-navige-workflow: support.ticket.triage" \
-H "x-navige-transaction: ticket-88412" \
-d @request.jsonBoth are bounded at 200 characters and rejected rather than truncated if longer — two different 5,000 character names that share a prefix would otherwise register as one job.
Status and outcome are different questions
This trips people up, so it is worth being explicit.
- Status is lifecycle: is this job open, closed, abandoned. Navige knows this on its own.
- Outcome is judgement: did the job actually achieve what it was for. Navige cannot know this, and does not guess.
An unjudged transaction has no outcome — null, which is not the same as failed. Tell us how it went and the cost-per-successful-job figures become real:
curl -X POST https://api.navige.ai/v1/transactions/$TX_ID/outcome \
-H "x-navige-key: $NAVIGE_KEY" \
-H "Content-Type: application/json" \
-d '{"succeeded": true}'What you get from it
- Cost per job, and the spread across runs of the same job.
- The most expensive workflow you run, which is rarely the one people guess.
- Cost per successful job, once outcomes are reported.
- A baseline, so a change that doubles the cost of a job shows up as a change rather than noise.