> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unstructured.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List workflows

> Retrieve a list of workflows, optionally filtered by source, destination, state, name, date range, and supports pagination and sorting.

You can specify multiple query parameters, for example `?source_id=<connector-id>&status=<status>`.

## Query parameters

<ParamField query="source_id" type="string">
  Filter by source connector ID.
</ParamField>

<ParamField query="destination_id" type="string">
  Filter by destination connector ID.
</ParamField>

<ParamField query="status" type="string">
  Filter by workflow state.

  | Value      | Description                                       |
  | ---------- | ------------------------------------------------- |
  | `active`   | Workflow is enabled and will run on its schedule. |
  | `inactive` | Workflow is disabled and will not run.            |
  | `paused`   | Workflow is temporarily paused.                   |
</ParamField>

<ParamField query="name" type="string">
  Filter by workflow name.
</ParamField>

<ParamField query="page" type="integer">
  Page number for pagination. Default: `1`.
</ParamField>

<ParamField query="page_size" type="integer">
  Results per page. Default: `20`.
</ParamField>

<ParamField query="created_since" type="string">
  Return workflows created after this ISO 8601 timestamp.
</ParamField>

<ParamField query="created_before" type="string">
  Return workflows created before this ISO 8601 timestamp.
</ParamField>

<ParamField query="sort_by" type="string">
  Field to sort results by. Default: `id`.
</ParamField>

<ParamField query="sort_direction" type="string">
  Sort order. Default: `asc`.

  | Value  | Description       |
  | ------ | ----------------- |
  | `asc`  | Ascending order.  |
  | `desc` | Descending order. |
</ParamField>

<ParamField query="dag_node_configuration_id" type="string">
  Filter by DAG node configuration ID.
</ParamField>

<ParamField query="show_only_soft_deleted" type="boolean">
  If `true`, return only soft-deleted workflows. Default: `false`.
</ParamField>

<ParamField query="show_recommender_workflows" type="boolean">
  If `true`, include recommender system workflows. Default: `false`.
</ParamField>

## Response

<ResponseField name="id" type="string" required>
  Unique identifier for the workflow.
</ResponseField>

<ResponseField name="name" type="string" required>
  Workflow name.
</ResponseField>

<ResponseField name="workflow_type" type="string" required>
  Workflow type: `custom` or `auto`.
</ResponseField>

<ResponseField name="status" type="string" required>
  Workflow state: `active`, `inactive`, or `paused`.
</ResponseField>

<ResponseField name="created_at" type="string" required>
  ISO 8601 timestamp when the workflow was created.
</ResponseField>

<ResponseField name="source_id" type="string">
  Source connector ID.
</ResponseField>

<ResponseField name="destination_id" type="string">
  Destination connector ID.
</ResponseField>

<ResponseField name="schedule" type="string">
  Repeating run schedule.
</ResponseField>

<ResponseField name="dag_nodes" type="array">
  Workflow processing pipeline nodes.

  For more information on workflow nodes, see [Workflow nodes](/api-reference/workflow/nodes/overview).
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp when the workflow was last updated.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url "${UNSTRUCTURED_API_URL}/api/v1/workflows/?status=active&page=1&page_size=20" \
    --header "unstructured-api-key: ${UNSTRUCTURED_API_KEY}"
  ```

  ```python Python SDK theme={null}
  import os
  from unstructured_client import UnstructuredClient
  from unstructured_client.models.operations import ListWorkflowsRequest

  client = UnstructuredClient(
      api_key_auth=os.getenv("UNSTRUCTURED_API_KEY"),
      server_url=os.getenv("UNSTRUCTURED_API_URL"),
  )

  response = client.workflows.list_workflows(
      request=ListWorkflowsRequest(
          status="active",
          page=1,
          page_size=20,
      )
  )
  print(response)
  ```

  ```python Python SDK (async) theme={null}
  import asyncio
  import os
  from unstructured_client import UnstructuredClient
  from unstructured_client.models.operations import ListWorkflowsRequest

  async def list_workflows():
      client = UnstructuredClient(
          api_key_auth=os.getenv("UNSTRUCTURED_API_KEY"),
          server_url=os.getenv("UNSTRUCTURED_API_URL"),
      )
      response = await client.workflows.list_workflows_async(
          request=ListWorkflowsRequest(
              status="active",
              page=1,
              page_size=20,
          )
      )
      print(response)

  asyncio.run(list_workflows())
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  [
    {
      "id": "f0a1b2c3-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
      "name": "my-workflow",
      "workflow_type": "auto",
      "status": "active",
      "source_id": "7f3e2a1b-4c5d-6e7f-8a9b-0c1d2e3f4a5b",
      "destination_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
      "schedule": "daily",
      "dag_nodes": null,
      "created_at": "2026-04-29T10:00:00Z",
      "updated_at": null
    }
  ]
  ```
</ResponseExample>
