---
title: "List campaigns"
method: GET
path: "/campaigns"
tags: ["Campaigns"]
---

# List campaigns

`GET /campaigns`

Lists campaigns for the authenticated company, optionally filtered by status or label.

## Query parameters

- `status` 'draft' | 'scheduled' | 'sent' | 'sending' | 'cancelled' | 'paused' | 'waiting_approval' | 'rejected'
- `label` string
- `limit` integer
- `offset` integer

## Response `200`

Campaigns returned

- object
  - `success` boolean
  - `campaigns` CampaignSummary[]
    - `id` string
    - `name` string
    - `type` 'email' | 'sms' — Delivery channel. SMS campaigns are created and managed from the dashboard: they carry no email, so `subject` and `blocks` come back empty, and the email-only endpoints (update, schedule, pause, resume, duplicate, resend to non-openers) reject them. Campaign stats and campaign events reject them too, since both read email engagement.
    - `subject` string
    - `emailId` string, nullable — The linked email body. The same record is returned by the templates endpoints and can be passed as `templateId` when creating campaigns to reuse the design. Null for SMS campaigns.
    - `emailPreset` 'branded' | 'minimal', nullable — Per-email Style > Format, derived from the stored blocks. `branded` renders the company logo and the full footer; `minimal` renders no logo and the simple footer. Null when the entire email is a single raw HTML block, which has no Sequenzy format. Sequence steps, campaigns, transactional templates, and saved templates all report this field, so chrome can be compared across emails without rendering them.
    - `status` 'draft' | 'scheduled' | 'waiting_approval' | 'rejected' | 'sending' | 'paused' | 'sent' | 'cancelled' — Campaign status. `waiting_approval` means the campaign is held for safety review and is not sending; this is most common on new accounts and recently registered sending domains. See https://docs.sequenzy.com/concepts/campaigns#safety-review
    - `rejectionComment` string, nullable — Reviewer feedback when the campaign status is rejected. Stays null while a campaign is still in waiting_approval.
    - `trackingCode` string, nullable — Campaign tracking code available to UTM templates as `{{campaign.trackingCode}}`.
    - `labels` string[] — Label names assigned to this campaign.
    - `scheduledAt` string, date-time, nullable
    - `sentAt` string, date-time, nullable
    - `createdAt` string, date-time
  - `pagination` object
    - `limit` integer
    - `offset` integer
    - `count` integer
    - `total` integer
    - `hasMore` boolean

## Other responses

- `400` — Invalid filter or pagination parameter
- `401` — Unauthorized

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
