# List campaigns, newest first (cursor-paginated)

Source: https://docs.usetone.ai/reference/campaigns/list

> Archived campaigns are hidden by default; pass `archived=true` to see only those.

`GET /v1/campaigns`
Archived campaigns are hidden by default; pass `archived=true` to see only those. There is deliberately no way to ask for both at once.

Requires the `read` scope.

## Parameters

| Name | In | | Meaning |
|---|---|---|---|
| `limit` | query | optional | How many results to return. 1-100, defaulting to 25. |
| `cursor` | query | optional | Opaque page cursor — pass `meta.pagination.cursor` from the previous response to fetch the next page. Its contents are an implementation detail; do not parse or construct one. |
| `status` | query | optional | Only campaigns in this state. Open set — handle an unrecognised value rather than throwing. Today: `draft`, `scheduled`, `running`, `paused`, `completed`, `stopped`, `failed`. |
| `agent_id` | query | optional | Only campaigns running this agent. |
| `environment` | query | optional | Ignored when you authenticate with an API key: the key prefix pins the environment. |
| `from` | query | optional | Inclusive lower bound on when the campaign was created. |
| `to` | query | optional | Exclusive upper bound on when the campaign was created. |
| `archived` | query | optional | true returns ONLY archived campaigns; the default returns only unarchived ones. There is deliberately no way to ask for both. |

## Response



### Example response

```json
{
  "data": [
    {
      "agent": {
        "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451",
        "name": "Order confirmation"
      },
      "archivedAt": null,
      "autoPauseBelowPaise": 50000,
      "completedAt": null,
      "createdAt": "2026-08-25T09:14:22Z",
      "environment": "live",
      "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451",
      "launchedAt": "2026-09-01T04:00:00Z",
      "name": "COD confirmations — September",
      "number": {
        "e164": "+918045678901",
        "id": "4c8b1e77-3d2a-4f5b-9e6c-8a7b6c5d4e3f"
      },
      "pacing": {
        "callsPerMinute": 10,
        "maxConcurrent": 4
      },
      "pausedReason": "operator",
      "preflight": {
        "callable": 0,
        "checks": [
          {
            "outcome": "pass",
            "reason": "Outside the 09:00-21:00 IST window for promotional calls.",
            "type": "time_window"
          }
        ],
        "computedAt": "2026-09-01T03:58:12Z",
        "estimatedCostPaise": {
          "high": 480000,
          "low": 120000
        },
        "excluded": "invalid_number",
        "excludedE164s": {},
        "total": 0,
        "walletBalancePaise": 500000
      },
      "progress": {
        "connected": 244,
        "dialed": 320,
        "excluded": 31,
        "spentPaise": 146400,
        "total": 500
      },
      "purpose": "transactional",
      "retries": {
        "attempts": 1,
        "backoff": "linear",
        "intervalMinutes": 60,
        "on": [
          "no_answer",
          "busy"
        ]
      },
      "schedule": {
        "endsAt": "2026-09-07T14:00:00Z",
        "startsAt": "2026-09-01T04:00:00Z",
        "weekdays": 31,
        "windowEndMinute": 1260,
        "windowStartMinute": 540
      },
      "status": "running",
      "updatedAt": "2026-08-25T09:14:22Z"
    }
  ]
}
```
