---
title: "Archive Campaign"
method: POST
path: "/campaigns/{campaign_id}/archive"
tags: ["campaigns"]
---

# Archive Campaign

`POST /campaigns/{campaign_id}/archive`

## Request

- Base URL: `https://dev.whispa.net` (the document declares no server; this is the origin it was published from)
- URL: `https://dev.whispa.net/campaigns/{campaign_id}/archive`
- Auth: one of:
  - OAuth 2
    - Password
    - Token URL: `auth/bearer/login`
  - API key in cookie `access_token`

Archive a campaign: hidden from the default list, activation and new
accounts refused until unarchived. An active campaign is paused on the
way out, so its queued calls stop dialing (admin only).

## Path parameters

- `campaign_id` string, uuid, required

## Response `200`

Successful Response

- CampaignRead
  - `id` string, uuid, required
  - `name` string, required
  - `scenario` string, required
  - `provider` string, required
  - `status` string, required
  - `supervised` boolean
  - `max_concurrent_calls` integer
  - `voice_id` string, nullable
  - `cartesia_model` string, nullable
  - `opening_line` string, nullable
  - `policy_overrides` object
  - `progress` CampaignProgress, required: Per-status account counts for the campaign list/detail header.
    - `total` integer
    - `waiting` integer
    - `pending` integer
    - `in_progress` integer
    - `callback` integer
    - `review` integer
    - `exhausted` integer
    - `resolved` integer
    - `escalated` integer
    - `removed` integer
  - `outcomes` CampaignOutcomes: Per-attempt dial outcomes for the campaign, derived at read time. Counted from the campaign's queue rows joined to the calls they placed, so this is "what the dialler actually did" — distinct from :class:`CampaignProgress`, which counts where each ACCOUNT currently sits. An account with four attempts contributes four rows here and one there. ``reached`` / ``voicemail`` / ``unclassified`` / ``no_answer`` partition ``attempts``, so the four always sum. Rates are None (not 0.0) when their denominator is zero: "no data yet" and "zero percent" must not render the same.
    - `attempts` integer
    - `reached` integer
    - `voicemail` integer
    - `unclassified` integer
    - `no_answer` integer
    - `commitments` integer
    - `connect_rate` number, nullable
    - `commitment_rate` number, nullable
  - `archived_at` string, date-time, nullable
  - `created_by` string, uuid, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/whispa/apis/whispa-api.md) - [All operations](https://skmtc.dev/whispa/apis/whispa-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whispa/apis/whispa-api/revisions/12c2e4aca43c?raw)
