Add TikTok Ad
Add a new ad to an existing TikTok ad group.
Use this when you need to add additional ads (creatives) to an ad group that was already created.
Supports all ad formats:
- SINGLE_IMAGE: Provide image_urls (public HTTPS URLs — auto-uploaded) OR image_ids (pre-uploaded TikTok IDs)
- SINGLE_VIDEO: Provide video_id (TikTok video ID from creative library)
- Spark Ads: Boost organic TikTok posts (requires tiktok_item_id + identity_type=TT_USER)
- Carousel: Multi-card ads (first call create_tiktok_carousel_card to get card_id, then provide card_id + card_type here)
Identity (identity_id) is auto-resolved — you do NOT need to provide it unless using Spark Ads. Images are auto-uploaded from URLs — you do NOT need to call upload_tiktok_images first.
This is useful for:
- Testing different creatives in the same ad group
- Adding new ad variations without creating a new campaign
- A/B testing ad copy, images, or CTAs
Required: adgroup_id, ad_text, landing_page_url. For image ads: provide image_urls (easiest) or image_ids. For video ads: provide video_id. For Spark Ads: provide tiktok_item_id and set identity_type to TT_USER.
Authorizations
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Headers
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
Body
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input for adding a new ad to an existing TikTok ad group
Response
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

