---
title: "Read one TikTok campaign in full"
method: POST
path: "/api/v1/tools/tiktok_get_campaign_details/execute"
tags: ["TikTok Ads"]
---

# Read one TikTok campaign in full

`POST /api/v1/tools/tiktok_get_campaign_details/execute`

## Request

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

Reads one campaign together with every ad group under it: objective, budget and mode, and per ad group the optimisation goal, billing event, bid, schedule, placements and targeting (locations, ages, gender, languages, interests).
Use when: the user asks why a campaign behaves the way it does, or before changing anything on it — the ad group settings are where nearly every TikTok delivery problem lives.
Do not use it to list many campaigns; that is tiktok_list_campaigns. Do not use it for results; that is tiktok_get_campaign_performance.
Returns the optimisation goal and billing event per ad group, which together decide what TikTok is actually buying. An ad group optimising for CLICK and billed CPC buys clicks regardless of what happens next; one optimising for CONVERT against a pixel event buys that event. Mismatched expectations here are the usual reason a campaign "works" and still produces nothing the user wanted.
Also returns the raw location ids rather than place names; call tiktok_search_targeting to turn an id back into a name before quoting it to the user.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `advertiser_id` string: TikTok advertiser id (a long numeric string). Only needed when the user has authorised more than one advertiser. Omit it to use the primary one.
    - `campaign_id` string, required: The campaign to read, from tiktok_list_campaigns.
    - `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)
