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 as `charged`, which is the balance debit PLUS `overage_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_idstringRequiredformat: "uuid"
run_idstringRequiredformat: "uuid"

Headers

X-Workspace-Idstring or nullOptional

Response

Successful Response
dataobject
metaobject

Errors

422
Unprocessable Entity Error