---
title: "List campaigns with keyset pagination"
method: GET
path: "/api/v1/campaigns"
tags: ["Campaigns"]
---

# List campaigns with keyset pagination

`GET /api/v1/campaigns`

## Request

- Base URL: `https://app.reachium.io`
- URL: `https://app.reachium.io/api/v1/campaigns`
- Auth: HTTP bearer

Resolves ANY campaign_id → name, however many campaigns the workspace has (deliberately not the MCP getCampaigns tool, which hard-caps at 20 most recent with no cursor).

## Query parameters

- `cursor` string
- `limit` integer

## Response `200`

A page of campaigns.

- object
  - `data` object, required
    - `items` CampaignListItem[], required
      - `id` string, required
      - `name` string, nullable, required
      - `status` string, required
      - `type` string, required
      - `created_at` string, date-time, required
      - `activated_at` string, date-time, nullable, required
    - `next_cursor` string, nullable, required
  - `error` unknown, required

## Other responses

- `400`: The cursor could not be decoded/validated (code invalid_cursor).
- `401`: Missing or invalid API key. Send `Authorization: Bearer rmcp_...` (code unauthorized).
- `403`: The key's granted scopes do not satisfy this endpoint's minimum required scope (code insufficient_scope).
- `429`: Rate limited: shared `mcp:ip:{ip}` (600/60s) or `mcp:key:{keyId}` (120/60s) bucket, the SAME buckets the MCP endpoint uses (code rate_limited).
- `500`: Lookup failed (code lookup_failed).

---

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