Get Run Analysis
Fetch delivery, quality and cost analysis for a workflow run.
Three independent blocks, each carrying its own status so one unavailable
block never blanks the others:
audio— delivered vs replaced audio duration per locale. “Replaced” counts persisted non-delivered takes only; discarded takes and split-line concat entries are excluded so nothing is double counted.validators— one entry per validator NODE (not per kind: two validators of the same kind on different generators are legal and may carry different thresholds), with per-locale scores read from each line’s DELIVERED take.credits— per-node breakdown of the run’s charge, mirroring the ledger. Amounts are unrounded decimal STRINGS; the run-level floor and minimum are applied once at settlement and reported separately ascharged, which is the balance debit PLUSoverage_credits— the remainder billed against the next invoice when a paid plan’s balance ran out mid-run.
The run block’s duration_ms is ACTIVE duration — wall-clock
(completed_at - started_at) minus time the run spent paused — and
paused_ms reports that excluded paused total (POD-417).
Scores here can differ from GET /runs/{run_id}/overview: that endpoint
reads each line’s last take and is frozen on those semantics, while this one
reads the take actually delivered. When a retry produced a worse clip and an
earlier one won, the two legitimately disagree.
Related sub-resources:
GET /runs/{run_id}— full run record including the raw definition snapshot.GET /runs/{run_id}/status— volatile status fields only; for polling.GET /runs/{run_id}/overview— pre-aggregated metrics and node state map.GET /runs/{run_id}/data— paginated script+audio rows for a data table.
Authentication
AuthorizationBearer
Clerk JWT token
OR
AuthorizationBearer
Onepin live API key (op_live_...). Test and public keys are reserved in Phase 1.
Path parameters
workflow_id
run_id
Headers
X-Workspace-Id
Response
Successful Response
data
meta
Errors
422
Unprocessable Entity Error

