---
title: "Get Play Run Performance"
method: GET
path: "/api/plays/{play_id}/runs/{run_id}/performance"
tags: ["plays"]
---

# Get Play Run Performance

`GET /api/plays/{play_id}/runs/{run_id}/performance`

## Request

- Base URL: `https://platform.verbiflow.com/api/bridge`
- URL: `https://platform.verbiflow.com/api/bridge/api/plays/{play_id}/runs/{run_id}/performance`
- Auth: one of:
  - HTTP bearer and API key in header `x-flage-org-id`
  - HTTP bearer and API key in header `x-flage-org-slug`

## Path parameters

- `play_id` string, required
- `run_id` string, required

## Response `200`

Successful Response

- PlayRunPerformanceResponse
  - `active_orchestration` PlayRunActiveOrchestrationResponse, required: Time during which an agent or local Workflow Play orchestrator was active.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `session_count` integer, required: Recorded or reconstructed orchestration sessions included.
    - `source` 'recorded_sessions' | 'legacy_local_run_interval', required: Authority used to measure orchestration activity.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `human_followup_pause` PlayRunHumanPauseResponse, required: Human follow-up gaps after background queue and provider work is removed.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `definition` 'between_orchestration_sessions_minus_background_queue_and_provider', required: Exact interval subtraction used to classify human follow-up pause.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `play_id` string, required: Canonical Play id owning the measured run.
  - `provider_execution` PlayRunProviderExecutionResponse, required: Measured provider, browser, and LLM attempt time plus lease coverage.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `attempt_count` integer, required: Measured provider, browser, or LLM attempts.
    - `completed_attempt_count` integer, required: Attempts with durable completion.
    - `coverage` 'exact' | 'partial_expired_open_attempts_unclassified', required: Whether every open attempt has exact active-time authority.
    - `expired_open_attempt_count` integer, required: Open attempts without a live lease, left in unclassified runtime.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `live_leased_attempt_count` integer, required: Open attempts whose lease proves they were active at snapshot time.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `queue_wait` PlayRunQueueWaitResponse, required: Measured dispatcher queue wait and explicit coverage gaps.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `coverage` 'exact' | 'partial', required: Whether queue wait is measured for every execution.
    - `exact_execution_count` integer, required: Executions with a valid recorded dispatcher-claim boundary.
    - `execution_count` integer, required: Capability executions observed for the run.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `invalid_dispatch_count` integer, required: Executions whose dispatcher timestamp falls outside its valid interval.
    - `open_unobserved_dispatch_count` integer, required: Still-open executions without a dispatcher-claim timestamp.
    - `unobserved_dispatch_count` integer, required: Executions without a dispatcher-claim timestamp.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `snapshot_as_of` string, required: ISO 8601 database snapshot time for this read.
  - `snapshot_lifetime` PlayRunIntervalMetricResponse, required: Non-overlapping wall-clock time plus pre-merge aggregate capacity time.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `unclassified_runtime` PlayRunIntervalMetricResponse, required: Non-overlapping wall-clock time plus pre-merge aggregate capacity time.
    - `aggregate_ms` integer, required: Sum of interval durations before overlap removal, in milliseconds; may exceed wall_clock_ms when work overlaps.
    - `interval_count` integer, required: Number of measured intervals before overlap merging.
    - `wall_clock_ms` integer, required: Unioned wall-clock duration of these intervals, in milliseconds.
  - `workflow_play_run_id` string, required: Canonical Workflow Play run id measured.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract.md) - [All operations](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/llms.txt) - [OpenAPI document](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/revisions/c80e903ef8f3?raw)
