---
title: "List concurrency groups for a workflow run"
method: GET
path: "/repos/{owner}/{repo}/actions/runs/{run_id}/concurrency_groups"
tags: ["actions"]
---

# List concurrency groups for a workflow run

`GET /repos/{owner}/{repo}/actions/runs/{run_id}/concurrency_groups`

Lists all concurrency groups associated with a workflow run or its jobs.

The set of groups is derived from the run's configuration, so a group is
included even when the run no longer has any items currently holding or
waiting in it. In that case the `group_members` array will be empty.
`total_count` reflects the number of groups the run participates in by
configuration, not the number with active items.

This differs from `GET /repos/{owner}/{repo}/actions/concurrency_groups/{group_name}`,
which returns 404 when a group has no active items. That endpoint reports
the live state of a group repo-wide, while this endpoint reports the
groups associated with a specific run by configuration.

Results are sorted by group name and support cursor-based pagination via
`before` and `after`. The `after` cursor paginates forward only and does
not emit a `rel="prev"` Link; use `before` to page backward from a
forward page's `next` cursor.

OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository.

## Path parameters

- `owner` string, required
- `repo` string, required
- `run_id` integer, required

## Query parameters

- `per_page` integer
- `before` string
- `after` string

## Response `200`

Response

- ConcurrencyGroupRunList — A list of concurrency groups associated with a workflow run.
  - `total_count` integer, required — The total number of concurrency groups this workflow run participates in, derived from the run's configuration. This count is not filtered by whether the run currently holds or is waiting in each group, so it can include groups whose `group_members` array is empty (for example, when the run has already released its lease in that group).
  - `concurrency_groups` object[], required
    - `group_name` string, required — The name of the concurrency group.
    - `group_url` string, uri, required — API URL for this concurrency group. May return 404 if the group has no active items at the time it is requested, since the get-by-name endpoint reports the live repo-wide state of a group while this endpoint lists groups associated with a run by configuration.
    - `group_members` object[], required — Items belonging to this workflow run that are either currently holding or waiting for the concurrency group lease. May be empty if the run no longer has any active or queued items in this group.
      - `run_id` integer, required — The ID of the workflow run.
      - `run_name` string, required — The name of the workflow run.
      - `run_url` string, uri, nullable, required — API URL for the workflow run.
      - `run_html_url` string, uri, nullable, required — Web URL for the workflow run.
      - `position` integer, required — Queue position. 0 means the item holds the concurrency lease (in_progress), 1 or higher means queued (pending).
      - `position_url` string, uri, required — API URL to get items ahead of this item in the concurrency group.
      - `job_id` integer, nullable — The ID of the job, when the item represents a job-level or reusable-workflow-level lease.
      - `job_name` string, nullable — The display name of the job, when the item represents a job-level or reusable-workflow-level lease.
      - `job_url` string, uri, nullable — API URL for the job.
      - `job_html_url` string, uri, nullable — Web URL for the job.
      - `status` 'in_progress' | 'pending', required

## Other responses

- `404` — Resource not found
- `422` — Validation failed, or the endpoint has been spammed.

---

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