---
title: "List ChatGPT Ads campaigns"
method: POST
path: "/api/v1/tools/chatgpt_list_campaigns/execute"
tags: ["ChatGPT Ads"]
---

# List ChatGPT Ads campaigns

`POST /api/v1/tools/chatgpt_list_campaigns/execute`

## Request

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

Lists the campaigns in the advertiser account with status, objective, what the platform bids towards, the lifetime and daily spend limits as decimals in the account currency, the schedule, where they are allowed to run, and any serving issue the platform reports.
Use when: you need campaign ids before reading performance or changing anything, or the user asks what is running.
Do not use to compare results — that is chatgpt_get_performance; this returns configuration only, with no spend or clicks in it.
Returns one row per campaign plus the id every other tool needs. Serving issues are the fastest explanation for a campaign that exists but delivers nothing: an exhausted budget, a missing payment method or an unapproved account will all show up here rather than in the numbers.
Archived campaigns are hidden unless you ask for them, because archiving is irreversible on this platform and an archived campaign is never the answer to "what is running".

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `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.
    - `status` 'active' | 'paused' | 'archived' | 'all': Only objects in this state. Statuses are lowercase on this platform. Defaults to all except archived.
    - `name` string: Only campaigns whose name matches this text, as the platform matches it.
    - `limit` integer: Maximum rows to return (default 100).
    - `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)
