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

# List ChatGPT Ads ads

`POST /api/v1/tools/chatgpt_list_ads/execute`

## Request

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

Lists individual ads with their status, the chat card behind each one (title, body, destination) and — most usefully — the platform's review verdict and reason.
Use when: you need ad ids, or the user asks what creative is live, or an ad is not delivering and you need to know whether review is the reason.
Do not use to judge creative quality — get the numbers from chatgpt_get_performance first, then look at the copy.
Returns review_status: an ad that is in_review is not delivering yet, and one that is rejected never will until the copy or destination changes. The rejection reason is the single most useful field on this platform, so quote it to the user verbatim rather than paraphrasing.
Pass ad_group_id to scope the list; without it you get every ad in the account.

## 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.
    - `ad_group_id` string: Only ads in this ad group.
    - `status` 'active' | 'paused' | 'archived' | 'all': Only objects in this state. Statuses are lowercase on this platform. Defaults to all except archived.
    - `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)
