---
title: "Find TikTok targeting ids"
method: POST
path: "/api/v1/tools/tiktok_search_targeting/execute"
tags: ["TikTok Ads"]
---

# Find TikTok targeting ids

`POST /api/v1/tools/tiktok_search_targeting/execute`

## Request

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

Turns names into the ids TikTok targets by: places into location ids, interest names into interest category ids (interest_category_ids), keyword phrases into additional interest ids (interest_keyword_ids), languages into language codes, and lists the device and network enums verbatim.
Use when: the user names any place, interest or language the ads should target — always before tiktok_create_video_campaign, tiktok_add_ad_group or tiktok_update_ad_group. Those tools take ids only, check them against TikTok's lists, and refuse anything that looks like a name.
Do not guess an id, reuse one from another ad platform, or pass a place name into a write. A wrong location id spends real money in the wrong country and TikTok will not warn you.
Do not pass a country together with a region or city inside it: TikTok refuses overlapping locations in one ad group. Which locations exist depends on the campaign objective, so pass objective when it is known.
Do not resolve sensitive categories (health conditions, sexual orientation, religion, politics): TikTok restricts them and Adako will not target them. If the user asks for one, say why not and offer a behavioural interest instead.
Returns every match with whatever distinguishes them — a location's level and country, an interest's depth in the taxonomy. When several matches look plausible, show them and ask the user which they mean rather than taking the first.
Costs nothing, so resolve every name the user mentions, one type per call.

## 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.
    - `type` 'location' | 'interest' | 'interest_keyword' | 'language' | 'device', required: What to resolve: location (countries, regions, cities), interest (TikTok's interest categories), interest_keyword (free phrases like "home workout", resolved to additional interests), language, or device (returns the fixed enums, no search needed).
    - `query` string: The name to look up, as the user said it, in English. Not needed for type "device".
    - `objective` 'REACH' | 'TRAFFIC' | 'VIDEO_VIEWS' | 'ENGAGEMENT' | 'LEAD_GENERATION' | 'WEB_CONVERSIONS' | 'APP_PROMOTION' | 'PRODUCT_SALES': The campaign objective the ids are for; TikTok offers different locations per objective. Defaults to TRAFFIC. Only used for type "location".
    - `limit` integer: Maximum matches to return (default 20).
    - `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)
