---
title: "Get a workflow"
method: GET
path: "/v1/workspaces/{workspaceId}/workflows/{workflowId}"
tags: ["Workflows"]
---

# Get a workflow

`GET /v1/workspaces/{workspaceId}/workflows/{workflowId}`

Gets a workflow by ID.

## Path parameters

- `workspaceId` string, required
- `workflowId` string, required

## Response `200`

OK response

- Workflow
  - `id` string, required
  - `inputs` WorkflowInput[], required
    - union
      - WorkflowStringInput
        - `default` string
        - `key` string, required
        - `type` 'string', required
      - WorkflowNumberInput
        - `default` number
        - `key` string, required
        - `type` 'number', required
      - WorkflowBooleanInput
        - `default` boolean
        - `key` string, required
        - `type` 'boolean', required
      - union
        - WorkflowManualArrayInput
          - `default` object[]
          - `key` string, required
          - `type` 'array', required
        - WorkflowSelectorArrayInput
          - `key` string, required
          - `selector` object, required
            - `default` string — CEL expression for the default selector.
            - `entityType` 'resource' | 'environment' | 'deployment', required
          - `type` 'array', required
      - WorkflowObjectInput
        - `default` object
        - `key` string, required
        - `type` 'object', required
  - `jobAgents` WorkflowJobAgent[], required
    - `config` object, required — Configuration for the job agent
    - `name` string, required
    - `ref` string, required — Reference to the job agent
    - `selector` string, required — CEL expression to determine if the job agent should dispatch a job
  - `name` string, required
  - `slug` string, required

## Other responses

- `400` — Invalid request
- `404` — Resource not found

## Changes

> 50 revisions in range; 1 could not be searched.

- **2026-05-14** `14f652e12089` — 1 info
  - added the required property `slug` to the response with the `200` status
- **2026-03-30** `9c961c6052c4` — 1 breaking, 1 info
  - removed the required property `jobs` from the response with the `200` status
  - added the required property `jobAgents` to the response with the `200` status
- **2026-03-12** `95ad4756775e` — 1 breaking, 1 info
  - the `inputs/items/oneOf[#/components/schemas/WorkflowArrayInput]/oneOf[#/components/schemas/WorkflowSelectorArrayInput]/selector/default` response's property type/format changed from ``/`` to `string`/`` for status `200`
  - removed `#/components/schemas/JsonSelector, #/components/schemas/CelSelector` from the `inputs/items/oneOf[#/components/schemas/WorkflowArrayInput]/oneOf[#/components/schemas/WorkflowSelectorArrayInput]/selector/default` response property `oneOf` list for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/ctrlplanedev/apis/ctrlplane-api/changes/v1/workspaces/:workspaceId/workflows/:workflowId/get.md)

---

[API](https://skmtc.dev/ctrlplanedev/apis/ctrlplane-api.md) · [All operations](https://skmtc.dev/ctrlplanedev/apis/ctrlplane-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ctrlplanedev/ctrlplane-api/revisions/156e0d264995/schema)
