TikTok Ads Write
User wants to create a TikTok ad campaign with IMAGES, Spark Ads, or Carousel ads (not video)
POST https://api.adspirer.ai/api/v1/tools/create_tiktok_campaign/execute
Authorization: Bearer sk_live_... — your Adspirer API key (required)Content-Type: application/json (required)Idempotency-Key: <uuid> — recommended for write operations to make retries safeAll tool arguments are wrapped in an arguments object.
| Field | Type | Description |
|---|---|---|
campaign_name | string required | Campaign name (will be automatically suffixed with timestamp for uniqueness) |
objective | string optional | Campaign objective. Options: 'TRAFFIC' (website visits), 'CONVERSIONS' (website conversions), 'LEAD_GENERATION' (leads), 'REACH' (maximum impressions), 'VIDEO_VIEWS' (video views), 'APP_PROMOTION' (app installs — requires app_id). Default: TRAFFIC default: "TRAFFIC" |
app_id | string optional | TikTok app ID for APP_PROMOTION campaigns. Required when objective is APP_PROMOTION. |
app_promotion_type | string optional | App promotion type for APP_PROMOTION campaigns. Options: 'APP_INSTALL' (new installs), 'APP_RETARGETING' (re-engage existing users). Default: APP_INSTALL |
budget_daily | number optional | Daily budget in account currency (minimum varies by region, typically $20-50/day). Mutually exclusive with budget_lifetime. |
budget_lifetime | number optional | Lifetime budget in account currency (total spend over campaign duration). Requires schedule_end_time. Mutually exclusive with budget_daily. |
schedule_end_time | string optional | Campaign end time in format 'YYYY-MM-DD HH:MM:SS'. Required when using budget_lifetime. Optional with budget_daily. |
budget_optimize_on | boolean optional | Campaign Budget Optimization (CBO). TikTok default: true (enabled). When enabled, TikTok auto-distributes budget across ad groups. Set to false to manage budgets per ad group manually. |
asset_bundle_id | string optional | Asset bundle ID from validate_and_prepare_tiktok_assets tool. Use this for NEW image uploads. Mutually exclusive with existing_image_ids. |
existing_image_ids | array optional | List of existing TikTok image IDs from discover_tiktok_assets tool. Use this to REUSE images from TikTok Asset Library. Mutually exclusive with asset_bundle_id. |
ad_text | string required | Ad text (1-100 characters). Recommended: 50 characters or less for no truncation. |
display_name | string required | Brand/business name displayed on the ad (max 40 characters) |
landing_page_url | string required | Landing page URL (must be HTTPS). |
call_to_action | string optional | Call-to-action button text. Options: 'LEARN_MORE', 'SHOP_NOW', 'SIGN_UP', 'DOWNLOAD', 'CONTACT_US', 'APPLY_NOW', 'BOOK_NOW', 'GET_QUOTE', 'SUBSCRIBE', 'ORDER_NOW', 'BUY_NOW', 'GET_OFFER', 'WATCH_NOW'. Default: auto-selected by TikTok. |
pixel_id | string optional | TikTok Pixel ID for conversion tracking. Required for CONVERSIONS objective. |
optimization_event | string optional | Conversion event to optimize for when pixel_id is provided. Options: COMPLETE_PAYMENT, ON_WEB_CART (add to cart), ON_WEB_DETAIL (view content), ON_WEB_REGISTER (registration), FORM (form submit), CONVERSION_LEADS (lead gen), INITIATE_ORDER, PAGE_VISIT, CLICK_LANDING_PAGE, ON_WEB_SUBSCRIBE, PHONE_CONNECT, CONSULT, SEARCH, SUBSCRIBE, DOWNLOAD_FINISH. Default: COMPLETE_PAYMENT |
target_locations | array optional | List of TikTok location IDs. Default: ['6252001'] (United States). Common IDs: USA=6252001, UK=2635167, Canada=6251999, Australia=2077456. |
target_age_groups | array optional | Age groups to target. Options: 'AGE_13_17', 'AGE_18_24', 'AGE_25_34', 'AGE_35_44', 'AGE_45_54', 'AGE_55_100'. Default: all 18+. |
target_gender | string optional | Gender targeting: 'GENDER_UNLIMITED', 'GENDER_MALE', 'GENDER_FEMALE'. default: "GENDER_UNLIMITED" |
interest_category_ids | array optional | Interest category IDs for interest-based targeting. Get IDs from TikTok Ads Manager or search_tiktok_interests tool. |
audience_ids | array optional | Custom audience IDs to include (DMP audiences, lookalikes). |
excluded_audience_ids | array optional | Custom audience IDs to exclude. |
languages | array optional | Language targeting codes (e.g., ['en', 'es']). Default: all languages. |
placement_type | string optional | Placement type: 'PLACEMENT_TYPE_AUTOMATIC' (recommended) or 'PLACEMENT_TYPE_NORMAL' (manual). Default: PLACEMENT_TYPE_AUTOMATIC. |
placements | array optional | Manual placement selection (when placement_type=PLACEMENT_TYPE_NORMAL). Options: 'PLACEMENT_TIKTOK', 'PLACEMENT_PANGLE', 'PLACEMENT_GLOBAL_APP_BUNDLE'. |
operating_systems | array optional | Target device OS. Options: 'ANDROID', 'IOS'. Default: all. |
video_download_disabled | boolean optional | Disable video download on TikTok. Default: false (users can download). |
comment_disabled | boolean optional | Disable comments on ads. Default: false (comments allowed). |
tiktok_item_id | string optional | TikTok organic post ID for Spark Ads. Boosts an existing TikTok post as a paid ad. The post's video/content becomes the ad creative. Get the post ID from TikTok Ads Manager > Spark Ads. When using Spark Ads, asset_bundle_id and existing_image_ids are NOT required. |
card_id | string optional | Carousel card ID for multi-card image ads. Create carousel cards first in TikTok Ads Manager, then provide the card ID here. When using carousel, asset_bundle_id and existing_image_ids are NOT required. |
card_type | string optional | Carousel card type: 'IMAGE' (image carousel) or 'PRODUCT' (product catalog carousel). Required when card_id is provided. |
advertiser_id | string optional | TikTok advertiser ID. Required for multi-account users. Get from list_connected_accounts. |
{
"arguments": {
"campaign_name": "string",
"ad_text": "string",
"display_name": "string",
"landing_page_url": "https://example.com",
"objective": "TRAFFIC",
"app_id": "string",
"app_promotion_type": "string",
"budget_daily": 1.0,
"budget_lifetime": 1.0,
"schedule_end_time": "string"
}
}
{
"success": true,
"data": {
"text": "(tool-specific textual output for create_tiktok_campaign)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "create_tiktok_campaign"
}
{
"success": false,
"error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n - Acme Holdings (ad_account_id=\"act_123456789\")\n - Acme EU (ad_account_id=\"act_987654321\")",
"is_error": true,
"tool": "create_tiktok_campaign"
}
{
"success": false,
"error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
"is_error": true,
"tool": "create_tiktok_campaign",
"quota": {
"used": 150,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01",
"upgrade_url": "https://adspirer.ai"
}
}
Interactive: Swagger UI
Machine-readable: OpenAPI 3.1 spec · llms-full.txt
More tools: TikTok Ads · All tools
Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai