Spark Ads
Boost a TikTok video as a Spark Ad with POST /v1/ads/boost, including another creator's video through a Spark Code.
Boost a published TikTok video as a Spark Ad with POST /v1/ads/boost. Spark Ads keep the creator's identity, organic engagement signals and follower handle.
Before you start
Use the accountId of the TikTok posting account linked when you connected TikTok Ads.
A tiktokads connection with no posting account can boost too, but only with a Spark Code and platformPostId (Boost another creator's video).
Promote a post
Call POST /v1/ads/boost with postId, accountId, adAccountId, goal and budget.
const { data: boosted } = await zernio.adcampaigns.boostPost({
body: {
postId: '65f1c0a9e2b5af0012ab34cd',
accountId: '66b2e19d8c3f5a7e9d0b1c2d',
adAccountId: '7123456789012345678',
name: 'Boost viral video',
goal: 'traffic',
budget: { amount: 50, type: 'daily' },
schedule: { startDate: '2027-01-04T09:00:00Z', endDate: '2027-01-11T23:59:00Z' },
targeting: { countries: ['US'] },
linkUrl: 'https://example.com/landing',
callToAction: 'SHOP_NOW',
bidStrategy: 'COST_CAP',
bidAmount: 0.5
}
});
console.log(boosted.ad._id);Response (201):
{
"ad": {
"_id": "66f0a1b2c3d4e5f6a7b8c9d0",
"name": "Boost viral video",
"platform": "tiktok",
"status": "pending_review",
"adType": "boost",
"goal": "traffic",
"budget": { "amount": 50, "type": "daily" },
"bidStrategy": "COST_CAP",
"bidAmount": 0.5,
"platformAdId": "1802345678901234567",
"platformCampaignId": "1802345678901234001",
"platformAdSetId": "1802345678901234002"
},
"message": "Ad created and submitted for review"
}linkUrl and callToAction are the Spark Ad creative overrides. They map to landing_page_url and call_to_action on the TikTok ad.
Pass them for traffic and conversion goals. Without linkUrl, the Spark Ad has no clickable destination distinct from the organic video.
targeting.countries is required on TikTok boosts, because the ad group needs location_ids. The exception is attaching to an existing Smart+ ad group with adSetId.
bidStrategy and bidAmount are optional Cost Cap bidding (Bid strategy).
Boost another creator's video
To boost a creator's organic video from a different TikTok account than the one running the ads, you need a Spark Code.
The creator generates it in their TikTok app's Promote settings and shares it with the advertiser.
Pass it as sparkAuthCode on POST /v1/ads/boost, with the creator's video as platformPostId:
{
"platformPostId": "7310234567890123456",
"accountId": "66b2e19d8c3f5a7e9d0b1c2d",
"adAccountId": "7123456789012345678",
"name": "Cross-creator boost",
"goal": "traffic",
"budget": { "amount": 50, "type": "daily" },
"targeting": { "countries": ["US"] },
"linkUrl": "https://example.com",
"callToAction": "SHOP_NOW",
"sparkAuthCode": "BCAQAAAA..."
}Without sparkAuthCode, boosts are limited to videos owned by the same TikTok account that runs the ads.
The value maps to auth_code on TikTok's AdcreateCreatives.
On a tiktokads connection with no posting account, accountId takes the TikTok Ads connection. It has no TikTok identity of its own, so sparkAuthCode is required and the video goes in platformPostId, never postId.
If it fails
| Error | Cause | Fix |
|---|---|---|
422 with code invalid_field_value on targeting.countries | No country sent | Send at least one country in targeting.countries. |
400 with code missing_required_field on sparkAuthCode | accountId is a TikTok Ads-only connection and no Spark Code was sent | Pass sparkAuthCode, or use the id of a connected TikTok account. |
400 with code invalid_field_value on postId | A Zernio postId sent with a TikTok Ads-only connection | Pass the TikTok item id as platformPostId. |
| Budget rejected | Below TikTok's minimum | TikTok's minimum is $20 per ad set. |
Related
- Create a campaign: a standalone video ad and the bid strategy table.
- Targeting fields: what
targetingtakes. - TikTok: the posting account Spark Ads boost from.
- Boost post: every field of the request.