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

# List campaigns

`GET /advanced/campaigns`

## Request

- Base URL: `https://api.emelia.io`
- URL: `https://api.emelia.io/advanced/campaigns`
- Auth: API key in header `Authorization`

Returns all multichannel campaigns of the account except archived ones, newest first. No pagination. Use `all=true` to get an extra first item `ALL_CAMPAIGNS` (used to register a webhook on every campaign).

## Query parameters

- `all` 'true' | 'false'

## Response `200`

Success.

- object
  - `success` unknown
  - `campaigns` CampaignSummary[]
    - `_id` string: Campaign id. With `all=true` the first item is a synthetic entry whose `_id` is `"ALL_CAMPAIGNS"`.
    - `name` string
    - `status` 'DRAFT' | 'RUNNING' | 'PAUSED' | 'FINISHED' | 'ARCHIVED'
    - `createdAt` string, date-time
    - `startAt` string, date-time
    - `plannedStart` string, date-time
    - `identities` object[]
      - `_id` string: MongoDB ObjectId: 24 hexadecimal characters.
      - `email` string: MongoDB ObjectId: 24 hexadecimal characters.
      - `linkedin` string: MongoDB ObjectId: 24 hexadecimal characters.
    - `hasDisconnectedLinkedin` boolean
    - `hasDisconnectedEmail` boolean

## Other responses

- `400`: Invalid request or business error (the API also uses 400 for "not found").
- `401`: Missing, malformed, unknown or disabled API key. The key must be exactly 48 characters, otherwise it is treated as a session token and rejected the same way.
- `500`: Unexpected error. IMPORTANT: this is also what you receive today when the per minute quota of your account is exceeded (the quota error is not mapped to 429 for API keys). No `Retry-After` header is sent. Wait until the next minute window before retrying.

---

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