Skip to main content
The Audit API takes a conversation in whatever format you already have it — a chat export, a log dump, a copied thread — and returns a complete review of how your agent behaved in it: a reception report, the context your agent was missing, a per-turn risk read, and rewritten versions of its worst moments. It differs from analyze in two ways. It parses the transcript for you, so you do not have to build the message list yourself. And it runs the whole review, which takes minutes, so you start it and collect the result later rather than holding a request open.

The flow

Three calls, in this order:
  1. audit_prepare — send the raw text. You get back a run_id, the speakers found in it, and a guess at which one is your agent. Billable.
  2. audit_launch — tell the API which speaker is your agent. This is what starts the audit. It returns immediately.
  3. audit-run — poll for the result until every section is filled in.
Step 2 exists because the audit reviews one speaker, and picking the wrong one produces a confident review of the wrong participant. audit_prepare guesses so you can pre-select it in your interface, but the guess is never acted on by itself.

Nothing runs until you launch

A prepared run is parked. Until audit_launch confirms which speaker is your agent, the run is never executed and never billed beyond the audit_prepare call that created it. A run you prepare and abandon costs you that one call and nothing more.

Size limits

Both limits refuse. Neither trims your transcript, because a review of a slice you did not choose is a claim about a conversation you never sent. Both 400 responses name the number you sent and the number allowed, so you can act on them directly. To audit a longer conversation, send the most recent 250 messages — which 250 matter is a judgement only you can make.

Billing

audit_prepare is billable. Launching a run bills the stages of the audit as they execute. Polling is free. A run that fails a size check after the text was read is charged for that read only. See Credits and billing.

Authentication

Every call is authenticated and owner-scoped: a run_id is only ever visible to the account that created it. A run belonging to another account and a run that does not exist return the same error, so run ids cannot be used to discover anything. Next: Prepare a run.