---
title: "List Workflows"
method: GET
path: "/v3/workflows"
tags: ["Workflows"]
---

# List Workflows

`GET /v3/workflows`

**List workflows in the current environment.**

Returns each workflow's current version, including its node graph
and main node. Combine filters freely — they AND together.

## Filtering

- `workflowIDs` / `workflowNames`: exact-match identity filters.
- `displayName`: case-insensitive substring match.
- `tags`: returns workflows tagged with any of the supplied tags.
- `functionIDs` / `functionNames`: returns only workflows that
reference the named functions in any node. Useful for "which
workflows depend on this function?" lookups before changing or
deleting a function.
- `functionIDVersionNums` / `functionNameVersionNums`: the same lookup
narrowed to nodes pinned to a specific function version.

## Pagination

Cursor-based with `startingAfter` and `endingBefore` (workflowIDs).
Default limit 50, maximum 100.

## Query parameters

- `limit` integer
- `workflowIDs` string[]
- `workflowNames` string[]
- `displayName` string
- `sortOrder` 'asc' | 'desc'
- `startingAfter` string
- `endingBefore` string
- `tags` string[]
- `functionIDs` string[]
- `functionNames` string[]
- `functionIDVersionNums` string[]
- `functionNameVersionNums` string[]

## Response `200`

The request has succeeded.

- WorkflowsListResponseV3
  - `workflows` WorkflowV3[]
    - `id` string, required — Unique identifier of the workflow.
    - `name` string, required — Unique name of the workflow within the environment.
    - `versionNum` integer, required — Version number of this workflow version.
    - `displayName` string — Human-readable display name.
    - `emailAddress` string — Inbound email address associated with the workflow, if any.
    - `tags` string[] — Tags associated with the workflow.
    - `mainNodeName` string, required — Name of the entry-point call-site node.
    - `nodes` WorkflowNodeResponse[], required — All call-site nodes in this workflow version's DAG.
      - `name` string, required — Name of this call site, unique within the workflow version.
      - `function` FunctionVersionIdentifier, required
        - `id` string — Unique identifier of function. Provide either id or name, not both.
        - `name` string — Name of function. Must be UNIQUE on a per-environment basis. Provide either id or name, not both.
        - `versionNum` integer — Version number of function.
      - `metadata` object — Opaque free-form JSON object attached to this node on create/update. Returned verbatim; never interpreted by the server.
    - `edges` WorkflowEdgeResponse[], required — All directed edges in this workflow version's DAG.
      - `sourceNodeName` string, required — Name of the source node.
      - `destinationName` string — Labelled outlet on the source node, if any.
      - `destinationNodeName` string, required — Name of the destination node.
      - `metadata` object — Opaque free-form JSON object attached to this edge on create/update. Returned verbatim; never interpreted by the server.
    - `connectors` WorkflowConnector[], required — Connectors currently attached to this workflow. For version-scoped reads (`/versions/{n}`) this is always empty — connectors are current-state and not part of version history.
      - `connectorID` string, required — Unique connector API ID.
      - `name` string, required — Human-friendly connector name.
      - `type` 'paragon', required — Discriminator for a workflow connector. V3 supports `paragon` only.
      - `paragon` ParagonConnectorConfig — Paragon-integration configuration on a workflow connector.
        - `integration` string, required — Paragon integration key (e.g. "googledrive").
        - `configuration` object, required — Opaque per-integration configuration (e.g. `{"folderId": "..."}`).
        - `syncID` string, required — Paragon sync ID managed by the server. Read-only.
    - `createdAt` string, date-time, required — The date and time the workflow was created.
    - `updatedAt` string, date-time, required — The date and time the workflow was last updated.
    - `audit` WorkflowAudit
      - `workflowCreatedBy` UserActionSummary
        - `userActionID` string, required — Unique identifier of the user action.
        - `userID` string — User's ID. Present for user-initiated actions.
        - `userEmail` string — User's email address. Present for user-initiated actions.
        - `apiKeyName` string — API key name. Present for API key-initiated actions.
        - `emailAddress` string — Email address. Present for email-initiated actions.
        - `createdAt` string, date-time, required — The date and time the action was created.
      - `workflowLastUpdatedBy` UserActionSummary
        - `userActionID` string, required — Unique identifier of the user action.
        - `userID` string — User's ID. Present for user-initiated actions.
        - `userEmail` string — User's email address. Present for user-initiated actions.
        - `apiKeyName` string — API key name. Present for API key-initiated actions.
        - `emailAddress` string — Email address. Present for email-initiated actions.
        - `createdAt` string, date-time, required — The date and time the action was created.
      - `versionCreatedBy` UserActionSummary
        - `userActionID` string, required — Unique identifier of the user action.
        - `userID` string — User's ID. Present for user-initiated actions.
        - `userEmail` string — User's email address. Present for user-initiated actions.
        - `apiKeyName` string — API key name. Present for API key-initiated actions.
        - `emailAddress` string — Email address. Present for email-initiated actions.
        - `createdAt` string, date-time, required — The date and time the action was created.
    - `restricted` boolean, required — Whether this workflow is hidden from other members of the account in the bem web app. When true, only account owners and admins and explicitly granted users see the workflow and its calls, outputs, and errors in the app. This is a UI-visibility control: API keys are not scoped to workflows, so an environment API key still reads a restricted workflow and its data.
  - `totalCount` integer — The total number of results available.
  - `error` string — Error message if the workflow listing failed.

## Changes

- **2026-08-17** `a6e4624117c6` — 2 info
  - added the new optional `query` request parameter `functionIDVersionNums`
  - added the new optional `query` request parameter `functionNameVersionNums`
- **2026-08-05** `e3a4c8c54d97` — 1 info
  - added the required property `workflows/items/restricted` to the response with the `200` status
- **2026-04-17** `9755ec390110` — 3 info
  - added the optional property `workflows/items/edges/items/metadata` to the response with the `200` status
  - added the optional property `workflows/items/nodes/items/metadata` to the response with the `200` status
  - added the required property `workflows/items/connectors` to the response with the `200` status

[Change history](https://skmtc.dev/bem-team/apis/bem-api/changes/v3/workflows/get.md)

---

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