---
title: "Get a single runner stat as a time series"
method: GET
path: "/ci/{owner}/runners/stats/{stat}"
tags: ["ci_insights"]
---

# Get a single runner stat as a time series

`GET /ci/{owner}/runners/stats/{stat}`

Return one of the runner stats bucketed over the requested time range, with a summary value over the full window.

## Path parameters

- `stat` 'success_rate' | 'active_runners' | 'active_jobs' | 'utilization_rate' | 'avg_duration' | 'jobs_per_hour' | 'avg_jobs_per_hour' | 'min_duration' | 'median_duration' | 'p95_duration' | 'p99_duration' | 'max_duration', required
- `owner` string, required — The owner of the repository

## Query parameters

- `runner_name` string[], nullable — The runner name to filter on
- `runner_name_exclude` string[], nullable — The runner name to exclude
- `runner_group_name` string[], nullable — The runner group name to filter on
- `runner_group_name_exclude` string[], nullable — The runner group name to exclude
- `runner_labels` string[], nullable — The runner labels to filter on (all must match)
- `start` string, date-time, nullable — Start of the time range. Defaults to `end - 1 day` when omitted.
- `end` string, date-time, nullable — End of the time range. Defaults to `start + 1 day` when only start is provided, or `now` otherwise.

## Response `200`

Successful Response

- union
  - RunnerDurationStatsResponse
    - `value` integer, nullable, required
    - `value_over_time` RunnerStatsBucketInt[], required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `value` integer, nullable, required
    - `stat` 'avg_duration' | 'min_duration' | 'median_duration' | 'p95_duration' | 'p99_duration' | 'max_duration', required
  - RunnerRateStatsResponse
    - `value` number, nullable, required
    - `value_over_time` RunnerStatsBucketFloat[], required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `value` number, nullable, required
    - `stat` 'success_rate' | 'jobs_per_hour' | 'avg_jobs_per_hour' | 'utilization_rate', required
  - RunnerCountStatsResponse
    - `value` integer, nullable, required
    - `value_over_time` RunnerStatsBucketInt[], required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `value` integer, nullable, required
    - `stat` 'active_runners' | 'active_jobs', required

## Other responses

- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity

---

[API](https://skmtc.net/mergify/apis/mergify-api.md) · [All operations](https://skmtc.net/mergify/apis/mergify-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mergify/mergify-api/revisions/ae394a06c465/schema)
