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

# List workflows

`GET /workflows`

Retrieve all workflows for your project. Workflows are returned ordered by creation time (newest first). Use query parameters to filter by status, name, or creation date.

Common use cases:
- List all active workflows ready for execution
- Find workflows by partial name match
- Audit workflow creation over time

## Query parameters

- `status` 'draft' | 'active' | 'archived'
- `name_contains` string
- `created_after` string, date-time
- `created_before` string, date-time

## Response `200`

Workflows retrieved successfully

- WorkflowListResponse — List of workflows for the project
  - `data` Workflow[], required
    - `id` string, uuid, required — Unique workflow identifier
    - `name` string, required — Workflow name (unique per project)
    - `slug` string, required — URL-safe workflow identifier (lowercase alphanumeric with hyphens). Stable across renames — useful as an external sync key. Auto-generated from `name` on create if not provided. Unique within the project.
    - `description` string, nullable — Optional workflow description
    - `status` 'draft' | 'active' | 'archived', required — Workflow lifecycle status: - `draft`: Under development, not executable - `active`: Published and executable - `archived`: Inactive, no longer in use
    - `lock_version` integer, nullable — Optimistic locking version. Increment on each update to prevent concurrent modification conflicts. Include this value when updating to ensure you're working with the latest version.
    - `message_debounce_seconds` integer, nullable — Debounce window for incoming messages in seconds (default: 1). When a user sends multiple messages rapidly, the workflow waits this duration before processing to batch messages together. Prevents workflow from reacting to every keystroke.
    - `agent_default_tools_version` integer, nullable — Version used to decide which built-in agent tools are required by default for this workflow.
    - `inbound_message_read_mode` 'disabled' | 'read_only' | 'read_with_typing' — Controls how inbound WhatsApp messages are marked as read before the workflow responds (default: read_with_typing). - `disabled`: Do nothing — messages are not marked as read - `read_only`: Mark messages as read without showing a typing indicator - `read_with_typing`: Mark as read and show a typing indicator before responding
    - `created_at` string, date-time, required — Workflow creation timestamp
    - `updated_at` string, date-time, required — Last modification timestamp
    - `project_id` string, uuid — Project this workflow belongs to
    - `execution_count` integer — Total number of times this workflow has been executed
    - `last_executed_at` string, date-time, nullable — Timestamp of most recent execution, null if never executed

## Other responses

- `401` — Missing or invalid API key

---

[API](https://skmtc.net/kapso/apis/kapso-platform-api.md) · [All operations](https://skmtc.net/kapso/apis/kapso-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kapso/kapso-platform-api/revisions/18ff5548a33f/schema)
