---
title: "Explain TikTok objectives and what each one needs"
method: POST
path: "/api/v1/tools/tiktok_explain_objective/execute"
tags: ["TikTok Ads"]
---

# Explain TikTok objectives and what each one needs

`POST /api/v1/tools/tiktok_explain_objective/execute`

## Request

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

Explains what each TikTok campaign objective buys, which optimisation goals and billing events it allows, what it requires before it can be created, and what Adako can build end to end.
Use when: the user describes a goal in their own words ("I want sales", "I want followers") and a campaign has to be chosen, or before any create so the objective, goal and billing event are a valid combination rather than a guess.
Do not skip it before tiktok_create_video_campaign. An invalid combination is rejected by TikTok with a numeric code and no explanation; this tool is what prevents that round trip.
Do not promise conversion optimisation without a pixel. WEB_CONVERSIONS requires a pixel id and a specific event, and a pixel with too few recent events will not leave the learning phase however high the budget goes — check tiktok_list_pixels first.
Returns, per objective: what it is for, its valid goal/billing pairs, what it requires, and the minimum daily budget in the account's currency. Retired goal names (VIDEO_VIEW, PROFILE_VISIT) are not listed; a create that still sends one is moved to its replacement and the preview says so. Costs nothing.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `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.
    - `objective` 'REACH' | 'TRAFFIC' | 'VIDEO_VIEWS' | 'ENGAGEMENT' | 'LEAD_GENERATION' | 'WEB_CONVERSIONS' | 'APP_PROMOTION' | 'PRODUCT_SALES': Explain just this one. Omit to get the full matrix.
    - `goal` string: What the user said they want, in their words. Used only to point at the likely objectives.
    - `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)
