---
title: "List SMS campaigns"
description: "Retrieve your SMS campaigns, newest first and cursor-paginated. `GET /api/v1/sms/campaigns`"
url: https://www.unitpost.com/docs/sms/get-sms-campaigns
section: "SMS API reference"
updated: 2026-10-13
---
# List SMS campaigns

`GET /api/v1/sms/campaigns`

Retrieve your SMS campaigns, newest first and cursor-paginated. Deleted (archived) campaigns are hidden; pass `?archived=true` to list only archived ones. Requires the `campaigns:read` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Max rows to return (default 20, max 100). |
| `after` | query | string | no | Return rows after this id (forward paging). |
| `before` | query | string | no | Return rows before this id (backward paging). |
| `archived` | query | boolean | no | When true, list only archived SMS campaigns instead of active ones. |

## Response fields (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `id` | string | yes | — |
| `name` | string | yes | — |
| `status` | enum | yes | One of: `draft`, `scheduled`, `sending`, `paused`, `sent`, `canceled`, `failed`. |
| `type` | enum | yes | One of: `marketing`, `transactional`. |
| `template_id` | string | yes | — |
| `segment_id` | string | yes | — |
| `sender_id` | string \| null | yes | — |
| `topic_id` | string \| null | yes | — |
| `routing` | enum | yes | One of: `automatic`, `fixed`, `pool`. |
| `scheduled_at` | string \| null | yes | — |
| `hold` | object \| null | yes | — |
| `projected_recipients` | object \| null | yes | — |
| `recipient_count` | number | yes | — |
| `variable_fallbacks` | object | yes | — |
| `excluded_contact_ids` | string[] | yes | — |
| `started_at` | string \| null | yes | — |
| `completed_at` | string \| null | yes | — |
| `canceled_at` | string \| null | yes | — |
| `created_at` | string | yes | — |
| `updated_at` | string | yes | — |

## Responses

| Status | Description |
| --- | --- |
| 200 | A page of SMS campaigns. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope, or SMS is not on this plan. |
| 404 | SMS campaign not found, or SMS is not enabled. |
| 422 | Invalid pagination params. |

## Example request

```bash
curl -X GET 'https://www.unitpost.com/api/v1/sms/campaigns' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
```

## Example response (200)

```json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "sms_campaign",
      "id": "id_123",
      "name": "Example",
      "status": "draft",
      "type": "marketing",
      "template_id": "template_123",
      "segment_id": "segment_123",
      "sender_id": "sender_123",
      "topic_id": "topic_123",
      "routing": "automatic",
      "scheduled_at": "2026-01-01T00:00:00.000Z",
      "hold": {
        "reason": "scheduled",
        "until": "string"
      },
      "projected_recipients": {
        "total": 1,
        "reachable": 0,
        "skipped": 0
      },
      "recipient_count": 1,
      "variable_fallbacks": {},
      "excluded_contact_ids": [
        "string"
      ],
      "started_at": "2026-01-01T00:00:00.000Z",
      "completed_at": "2026-01-01T00:00:00.000Z",
      "canceled_at": "2026-01-01T00:00:00.000Z",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/sms/get-sms-campaigns
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
