# TikTok Ads

Run Spark Ads, standalone video campaigns and website conversion campaigns on a tiktokads account, with Custom Audiences and Insights.

Boost a TikTok video as a Spark Ad with `POST /v1/ads/boost`, on a `tiktokads` account. Or create a campaign, ad group and video ad in one `POST /v1/ads/create` call.

Zernio's `adSetId` is the TikTok ad group id. On Meta the same field is an ad set, on LinkedIn a campaign.

## Quick reference

| Feature | Status |
|---------|--------|
| Standalone campaigns (Campaign > Ad Group > Ad) | Yes |
| Website conversion ads (TikTok Pixel optimization) | Yes |
| TikTok Pixel management, pixel events, Business Center sharing and Shopify / WordPress install ([Pixels](/platforms/tiktok-ads/tracking-tag)) | Yes |
| Spark Ads (boost organic videos) | Yes |
| Spark Ad custom destination URL and CTA | Yes |
| Spark Code (cross-creator boosts via `auth_code`) | Yes |
| Bid strategy (Cost Cap, ROAS floor) | Yes |
| Campaign duplication (manual graph copy) | Yes |
| Attach to an existing ad group on `/v1/ads/create` | Yes |
| Creative swap on `PUT /v1/ads/{adId}` | Yes |
| Targeting updates after creation | Yes |
| Agency Business Centers (multi-advertiser plus a BC list endpoint) | Yes |
| Custom Audiences (customer list) | Yes |
| Age, gender, location and interest targeting | Yes |
| Video creative from URL | Yes |
| Insights (spend, views, CTR, CPM) | Yes |
| Live reports and de-duplicated reach on `GET /v1/ads/insights` | Yes |
| Catalog and TikTok Shop ads | Roadmap |
| Chunked video upload and async transcode | Roadmap |

## Before you start

TikTok Ads requires a `tiktokads` account with its own token. The TikTok Business API is a separate OAuth from TikTok posting.

No TikTok Business Center developer onboarding is needed. Connect with OAuth and call the ads endpoints.

It does not use per-request OAuth scopes. When the user authorizes the connection, permissions are granted at the app level (ad account management, reporting, creative management), not as individual scopes in the consent URL.

You also need the advertiser id, from [List ad accounts](/ad-accounts/list-ad-accounts).

## Connect

Call `GET /v1/connect/tiktok/ads` with `profileId` and, optionally, the `accountId` of a TikTok posting account ([Connect ads](/connect/connect-ads)).

**With `accountId`**, the new `tiktokads` account links to that posting account. Spark Ads and standalone ads with the real `@username` identity become available.

**Without it**, ads-only mode applies. A Spark Ad then needs the creator's Spark Code ([Promote a post](/platforms/tiktok-ads/boost#boost-another-creators-video)).

In ads-only mode, standalone ads use a synthetic Brand Identity (`CUSTOMIZED_USER`). Configure it with `PATCH /v1/connect/tiktok-ads`, or inline through `brandIdentity` on create.

```bash
curl "https://zernio.com/api/v1/connect/tiktok/ads?profileId=66a1f0c2a4b9d3e8f1a2b3c4&accountId=66b2e19d8c3f5a7e9d0b1c2d" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"
```

Response (`200`):

```json
{
  "authUrl": "https://business-api.tiktok.com/portal/auth?app_id=...",
  "state": "..."
}
```

Send the user to `authUrl`, as in the [connecting accounts guide](/guides/connecting-accounts).

Once the flow completes, the same call returns `alreadyConnected: true` with the `tiktokads` `accountId`. Every sample below uses it.

## In this section

<PlatformPages platform="tiktok-ads" />

## Related

- [Connecting accounts](/guides/connecting-accounts): the OAuth flow behind `authUrl`.
- [TikTok](/platforms/tiktok): the posting account Spark Ads boost from.
- [Boost post](/ad-campaigns/boost-post) and [Create standalone ad](/ad-campaigns/create-standalone-ad): every field.
- [Meta Ads](/platforms/meta-ads): the same endpoints on Meta, where `adSetId` is an ad set.
- [Pixels and tracking tags](/guides/pixels): the pixel API across platforms.