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

# List campaigns

`GET /campaigns`

## Request

- Base URL: `https://warmysender.com/api/v1`
- URL: `https://warmysender.com/api/v1/campaigns`
- Auth: HTTP bearer

Returns campaigns with summary stats (sent/opened/replied/...). Cursor paginated. Email and multichannel campaigns also carry `sendingMailboxes` (the mailboxes each one sends from — `state` is ready, sending_paused or needs_reconnect; `campaignDailyLimit` is the most the campaign sends from that mailbox per day; up to 50 per campaign), the exact `sendingMailboxCount` and `sendingMailboxStateCounts` (how many of them are in each state). All three are null for other channels.

Required scope: `campaigns:read`.

Returns a cursor-paginated list — pass `cursor` from the previous page to continue.

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'draft' | 'scheduled' | 'running' | 'paused' | 'completed' | 'error'
- `archived` 'true' | 'false'

## Response `200`

Success

## Other responses

- `401`: `unauthorized` — Missing or invalid API key.
- `403`: `insufficient_scope` — The API key lacks the scope this endpoint requires.
- `429`: `rate_limited` — Too many requests — slow down and retry after the Retry-After delay.

---

[API](https://skmtc.dev/warmysender/apis/warmysender-public-api.md) · [All operations](https://skmtc.dev/warmysender/apis/warmysender-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/warmysender/apis/warmysender-public-api/revisions/eb5c7f10a1cd?raw)
