---
title: "List Protocol Groups"
method: GET
path: "/protocol_groups"
tags: ["protocol_groups"]
---

# List Protocol Groups

`GET /protocol_groups`

List a project's protocol groups.

``project_id`` is required — groups are project-scoped, exactly like the
protocols they group. Each item carries ``protocol_count``, the number of
protocols currently filed under it.

Parameters
----------
project_id : str
    Project whose groups to list.
limit : int | None, optional
    Page size, 1–100. When None, returns all groups.
offset : int | None, optional
    Number of records to skip.
order_by : {"name", "created_at", "updated_at"}, optional
    Column to sort by. Defaults to ``created_at``.
order : {"asc", "desc"}, optional
    Sort direction. Defaults to ``desc``.

Returns
-------
ProtocolGroupListResponse
    Page of groups plus the total number matching the filters.

## Query parameters

- `project_id` string, required
- `limit` integer, nullable
- `offset` integer, nullable
- `name` string, nullable
- `created_by_email` string, nullable
- `created_at` string, nullable
- `created_at_gt` string, nullable
- `created_at_lt` string, nullable
- `updated_at` string, nullable
- `updated_at_gt` string, nullable
- `updated_at_lt` string, nullable
- `order_by` 'name' | 'created_at' | 'updated_at'
- `order` 'asc' | 'desc'

## Response `200`

Successful Response

- ProtocolGroupListResponse — Paginated list of protocol groups.
  - `items` ProtocolGroup[], required
    - `id` string, nullable — Unique identifier for the group
    - `name` string, required — Name of the group, unique within the project
    - `description` string, nullable — Optional note on what relates the protocols in this group
    - `organization_id` string, required — ID of the organization that owns this group
    - `project_id` string, required — ID of the project that owns this group
    - `created_by` string, nullable — User ID of the user who created this group
    - `created_at` string, nullable — When the group was created
    - `updated_at` string, nullable — When the group was last updated
    - `protocol_count` integer, nullable — Number of protocols in this group. Present on list responses, None when the group is fetched on its own.
    - `created_by_email` string, nullable — Email of the user who created this group
  - `count` integer, required
  - `total` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
