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

# List Campaigns

> List email campaigns

List campaigns for the authenticated company. You can filter by status or label.
Results are ordered newest first. The default page size is 50, and `limit` is
capped at 100.

## Request

<ParamField query="status" type="string">
  Optional status filter: `draft`, `scheduled`, `sent`, `sending`, `cancelled`,
  `paused`, or `waiting_approval`.
</ParamField>

<ParamField query="label" type="string">
  Optional label name filter. Only campaigns assigned this label are returned.
</ParamField>

<ParamField query="limit" type="integer">
  Optional page size. Defaults to `50`; maximum `100`.
</ParamField>

<ParamField query="offset" type="integer">
  Optional zero-based row offset. Defaults to `0`.
</ParamField>

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/campaigns?status=draft&label=edm&limit=100&offset=0" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "campaigns": [
      {
        "id": "camp_abc123",
        "name": "April Launch",
        "subject": "A quick update",
        "status": "draft",
        "labels": ["edm"],
        "scheduledAt": null,
        "sentAt": null,
        "createdAt": "2026-05-01T10:30:00Z",
        "url": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123",
        "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review"
      }
    ],
    "pagination": {
      "limit": 100,
      "offset": 0,
      "count": 1,
      "total": 1,
      "hasMore": false
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "Invalid status filter. Valid values: draft, scheduled, sent, sending, cancelled, paused, waiting_approval"
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```
</ResponseExample>
