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

# Get Flows

> Get a list of available flows in your workspace

Retrieves all active flows in your workspace. Flows define multi-step document processing workflows that can be executed via the API.

## Usage Notes

* Only active flows are returned
* The response includes the complete flow configuration
* Use the flow ID to execute flows via the [run flow endpoint](/api-reference/run-flow)

## Request

This endpoint accepts no parameters.

## Response

<ResponseExample>
  ```json theme={null}
  [
    {
      "id": "dk4g1tUg1uHLs8YU",
      "workspace_id": "uT2bJNWN75YPU95r",
      "name": "PO to Invoice Reconciliation",
      "description": "Match purchase orders with invoices and verify totals",
      "file_input_config": {
        "file_fields": [
          {
            "key": "purchase_order",
            "name": "Purchase Order",
            "required": true,
            "file_types": ["pdf", "image"],
            "max_file_size": 10485760
          },
          {
            "key": "invoice",
            "name": "Invoice",
            "required": true,
            "file_types": ["pdf", "image"],
            "max_file_size": 10485760
          }
        ]
      },
      "steps": [
        {
          "id": "step_1",
          "title": "Extract Purchase Order",
          "description": "Extract data from the purchase order",
          "type": "extraction",
          "order": 1,
          "config": {
            "template_id": "Bx9wKm4nRt7vP3cQ",
            "file_key": "purchase_order"
          }
        },
        {
          "id": "step_2",
          "title": "Extract Invoice",
          "description": "Extract data from the invoice",
          "type": "extraction",
          "order": 2,
          "config": {
            "template_id": "Ys2hLf6jNq8dW5xA",
            "file_key": "invoice"
          }
        },
        {
          "id": "step_3",
          "title": "Reconcile Documents",
          "description": "Match line items and verify totals",
          "type": "reconciliation",
          "order": 3,
          "config": {
            "source_step_id_1": "step_1",
            "source_step_id_2": "step_2",
            "table_key_1": "line_items",
            "table_key_2": "line_items"
          }
        }
      ],
      "active": true,
      "created_at": 1682366228,
      "updated_at": 1682366228
    }
  ]
  ```
</ResponseExample>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://api.tableflow.com/v2/flows \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.tableflow.com/v2/flows",
      headers={
          "Authorization": "Bearer YOUR_API_KEY"
      }
  )

  flows = response.json()
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.tableflow.com/v2/flows", {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  });

  const flows = await response.json();
  ```
</RequestExample>

<ResponseField name="flows" type="array">
  Array of flow objects

  <Expandable title="Flow Object">
    <ResponseField name="id" type="string" required>
      The unique identifier for the flow
    </ResponseField>

    <ResponseField name="workspace_id" type="string" required>
      The workspace this flow belongs to
    </ResponseField>

    <ResponseField name="name" type="string" required>
      The name of the flow
    </ResponseField>

    <ResponseField name="description" type="string">
      A description of what the flow does
    </ResponseField>

    <ResponseField name="file_input_config" type="object">
      Configuration for file inputs

      <Expandable title="File Input Config">
        <ResponseField name="file_fields" type="array">
          Array of file field configurations

          <Expandable title="File Field">
            <ResponseField name="key" type="string" required>
              The field key used when uploading files
            </ResponseField>

            <ResponseField name="name" type="string" required>
              Display name for the field
            </ResponseField>

            <ResponseField name="required" type="boolean" required>
              Whether this file is required
            </ResponseField>

            <ResponseField name="file_types" type="array" required>
              Allowed file types (e.g., \["pdf", "image"])
            </ResponseField>

            <ResponseField name="max_file_size" type="number">
              Maximum file size in bytes
            </ResponseField>

            <ResponseField name="multiple" type="boolean">
              Whether multiple files can be uploaded for this field
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="steps" type="array">
      The steps that make up this flow

      <Expandable title="Flow Step">
        <ResponseField name="id" type="string" required>
          Unique identifier for the step
        </ResponseField>

        <ResponseField name="title" type="string" required>
          Display title for the step
        </ResponseField>

        <ResponseField name="description" type="string">
          Description of what the step does
        </ResponseField>

        <ResponseField name="type" type="string" required>
          Type of step: extraction, reconciliation, review, verify, etc.
        </ResponseField>

        <ResponseField name="order" type="number" required>
          Execution order of the step
        </ResponseField>

        <ResponseField name="config" type="object">
          Step-specific configuration
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="active" type="boolean" required>
      Whether the flow is active and can be run
    </ResponseField>

    <ResponseField name="created_at" type="number" required>
      Unix timestamp when the flow was created
    </ResponseField>

    <ResponseField name="updated_at" type="number" required>
      Unix timestamp when the flow was last updated
    </ResponseField>
  </Expandable>
</ResponseField>
