---
title: "Archive a ChatGPT Ads campaign permanently"
method: POST
path: "/api/v1/tools/chatgpt_archive_campaign/execute"
tags: ["ChatGPT Ads"]
---

# Archive a ChatGPT Ads campaign permanently

`POST /api/v1/tools/chatgpt_archive_campaign/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/chatgpt_archive_campaign/execute`
- Auth: HTTP bearer

Archives one campaign permanently. This cannot be undone on this platform: the campaign and everything under it stop delivering for good, cannot be resumed, renamed or reused, and only its historical numbers remain.
Use when: the user has explicitly asked to remove or clean up a campaign they are certain about, and understands it is permanent. Requires confirm_delete: true, which you may only set after they have said so in their own words.
Do not use it to stop spend — chatgpt_pause_campaign does that, reversibly, and is almost always what "stop", "turn off" or "kill" actually means. If there is any doubt at all, pause instead and say why.
Do not archive to tidy up on your own initiative, and never archive something you created in this conversation without being asked twice.
Returns the campaign read back from the platform in its archived state. Once that read-back says archived, there is nothing anyone can do to bring it back — say that plainly rather than offering to undo it.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `ad_account_id` string: ChatGPT Ads advertiser account id. One advertiser key belongs to one account, so this is only needed when the user has connected more than one key. Omit it to use the primary account.
    - `campaign_id` string, required: The campaign to archive permanently, from chatgpt_list_campaigns.
    - `confirm_delete` boolean: Must be true to remove anything. Ask the user first.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.
    - `raw_data` boolean: Return compact JSON only (no markdown). Use when you will compute on the result.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
