---
title: "List planned measurements for a project"
method: GET
path: "/projects/{project_id}/planned_measurements"
tags: ["Planned Measurements"]
---

# List planned measurements for a project

`GET /projects/{project_id}/planned_measurements`

## Request

- Base URL: `https://api.ionworks.com`
- URL: `https://api.ionworks.com/projects/{project_id}/planned_measurements`
- Auth: none declared

List a project's planned measurements.

``name`` supports Supabase filter operators (e.g. ``ilike.%formation%``
for a partial match, ``eq.Formation`` for an exact match).

``channel_id`` and ``protocol_id`` are exact match.

``started_measurement_id`` finds the request a real measurement came from,
which is what a measurement page needs to link back to its request.

``q`` is the search box's free-text query, which also matches the related
names the table shows; it composes with the column filters above.

## Path parameters

- `project_id` string, uuid, required

## Query parameters

- `status` 'requested' | 'scheduled' | 'in_progress' | 'completed' | 'cancelled': Lifecycle state for a planned measurement.
- `channel_id` string, uuid, nullable
- `protocol_id` string, uuid, nullable
- `name` string, nullable
- `started_measurement_id` string, uuid, nullable
- `q` string, nullable: Free-text search on the plan name plus prefix full-text match on the protocol, cell spec, program, cycler and channel names the scheduler table displays, matching the global search.
- `limit` integer
- `offset` integer
- `order_by` 'planned_start_time' | 'planned_end_time' | 'created_at' | 'updated_at' | 'name' | 'status'
- `order` 'asc' | 'desc'

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-02** `af9fdad1dc5b`: 1 info
  - added the new optional `query` request parameter `started_measurement_id`
- **2026-09-30** `ea3d377fec1a`: 3 breaking
  - for the `query` request parameter `channel_id`, the format of property `anyOf[subschema #1]/` was specialized from no format to `uuid`
  - for the `query` request parameter `protocol_id`, the format of property `anyOf[subschema #1]/` was specialized from no format to `uuid`
  - for the `path` request parameter `project_id`, the format changed from no format to `uuid`
- **2026-09-09** `48c041ad4800`: 1 info
  - added the new optional `query` request parameter `protocol_id`

[Operation history](https://skmtc.dev/ionworks/apis/ionworks-api/changes/projects/:project_id/planned_measurements/get.md)

---

[API](https://skmtc.dev/ionworks/apis/ionworks-api.md) - [All operations](https://skmtc.dev/ionworks/apis/ionworks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ionworks/apis/ionworks-api/revisions/abebbbc5f60a?raw)
