# List flows

> List flows for an agent.

`GET https://api.zavu.dev/v1/senders/{senderId}/agent/flows`

List flows for an agent.

## Parameters

- `senderId` (path, string, required)
- `enabled` (query, boolean)
- `limit` (query, integer)
- `cursor` (query, string)

## Responses

### 200

List of flows.

- `items` (object[], required)
  - `id` (string, required)
  - `agentId` (string, required)
  - `name` (string, required)
  - `description` (string, nullable)
  - `trigger` (object, required)
    - `type` (string, required): What starts a flow. - `keyword`: the message contains one of the words listed in `keywords`. Plain substring matching, so a word inside another word still counts. - `intent`: the message MEANS what `intent` describes, whatever words it uses. - `always`: any message starts it. - `manual`: reserved. Nothing starts a `manual` flow today — it is accepted and stored, and no message or endpoint runs it. One of: `keyword`, `intent`, `always`, `manual`.
    - `keywords` (string[]): Words that start the flow, for `keyword` triggers. Matched as substrings, case-insensitively, against the whole message: a flow on `info` also starts on "no quiero info". Use `intent` when that matters.
    - `intent` (string): One plain sentence describing what the contact wants, for `intent` triggers. Any language. The message is judged for meaning, not for words, so "kiero saber el presio" starts a flow whose intent is "quiere saber precios o cotizar", and "no quiero info de precios" starts nothing. A `keyword` or `always` flow with a higher `priority` is matched first and wins. At most 12 intent flows are considered per message, highest priority first. When the classification is unavailable or uncertain, the message is handled as if no intent matched, so a flow never starts on a guess.
  - `steps` (object[], required)
    - `id` (string, required): Unique step identifier.
    - `type` (string, required): Type of flow step. One of: `message`, `collect`, `condition`, `tool`, `llm`, `transfer`.
    - `config` (object, required): Step configuration (varies by type).
    - `nextStepId` (string, nullable): ID of the next step to execute.
  - `enabled` (boolean, required)
  - `priority` (integer, required): Priority when multiple flows match (higher = more priority).
  - `createdAt` (string<date-time>, required)
  - `updatedAt` (string<date-time>, required)
- `nextCursor` (string, nullable)

### 400

Invalid query parameters. `enabled` must be `true` or `false`.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

### 401

Unauthorized.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

### 404

Agent not found.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

## Example

```bash
curl -X GET "https://api.zavu.dev/v1/senders/sender_abc123/agent/flows" \
  -H "Authorization: Bearer $ZAVUDEV_API_KEY"
```

```typescript
import Zavudev from "@zavudev/sdk";

const zavu = new Zavudev({ apiKey: process.env.ZAVUDEV_API_KEY });

const result = await zavu.senders.agent.flows.list("sender_abc123");

console.log(result);
```
