TikTok Spark Ads limits: 10,000 per account and 20 codes a batch
TikTok Spark Ads allow 10,000 per account, 20 video codes per batch authorization, and Duet or Stitch posts need codes from both creators.

TikTok allows a maximum of 10,000 Spark Ads per account, lets a creator authorize up to 20 video codes in one batch, and requires authorization codes from both creators when a post is a Duet or Stitch. If you are producing AI video variants for Spark, the 20-code batch is the limit that shapes your rollout first.
All figures are from TikTok's help article How to create Spark Ads for Smart+ Campaigns in TikTok Ads Manager, read 2026-10-02.
What are the numbers?
The page states them plainly, and each one turns into a planning constraint.
| Limit | Value | What it means for variants |
|---|---|---|
| Spark Ads per account | 10,000 | Plenty for tests; prune old ones |
| Codes per batch authorization | 20 | Group variants in sets of 20 |
| Code duration | 7, 30, 60 or 365 days | Match to your test window |
| Duet or Stitch | Codes from both creators | Avoid Stitch formats for ad-bound posts |
| Deleting a video code | Only when all its ads are removed | Remove ads first |
How do I batch AI variants for 20-code sets?
Name and track each variant before you publish, then authorize in groups. Sume jobs take an Idempotency-Key, so using a key per variant keeps a retry from producing a duplicate render. A set of 20 caption jobs at $0.20 each is $4.00 in caption cost for clips up to 60 seconds, plus $0.02 per trim.
for i in $(seq -w 1 20); do
curl -s -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: spark-batch-$i" \
-d "{\"video_url\":\"https://media.sume.com/artifacts/artf_demo/v$i.mp4\",\"style\":\"slam\"}"
doneDoes the same-clip trap apply to AI variants?
TikTok does not say on this page that near-identical variants are penalised, so do not infer a rule from it. Separately, TikTok's content policies on unoriginal content are covered in reused AI video batches; make variants meaningfully different rather than re-captioned copies.
What does Sume not manage?
Sume does not request, store or renew Spark codes, and does not talk to Ads Manager. Poll jobs as in Jobs and results and track code expiry in your own sheet.
Sources
Related posts
More in Use cases
- TikTok Spark Ads: no duration limit listed, MP4 or MOV, 4 lines
TikTok's in-feed ads page lists Spark Ads as .mp4 or .mov, no duration restriction, caption taken from the organic post up to four lines.
- Symphony Creative Studio reference clips must be under 10 seconds
TikTok's Symphony help page limits reference videos to under 10 seconds and single scenes. Cut your clip first with Sume's video trim, then upload it.
- TikTok video_cover_timestamp_ms: pick the cover frame from a clip
TikTok takes a cover frame as a millisecond offset. Pull candidate stills with Sume video frames, choose one, and send its time as video_cover_timestamp_ms.
- Toast menu images: 750x450, 5 MB, crop-safe dishes
Toast recommends 750 x 450 px menu item images up to 5 MB that may be cropped. Generate a 3:2 plate with Sume, then crop to 5:3 with a short script.
Written by Sume