TikTok Spark Ads code: 7, 30, 60 or 365 days, caption locked
TikTok Spark Ads authorization codes last 7, 30, 60 or 365 days and the post caption cannot change once authorized. Prepare an AI video accordingly.

A TikTok Spark Ads authorization code can be generated for 7, 30, 60 or 365 days, and you cannot edit the post's caption after it has been authorized as an ad. For an AI-generated video that means the caption, the burned-in text and any AI disclosure have to be final before you ask the creator for a code.
Both facts come from TikTok's help article How to create Spark Ads for Smart+ Campaigns in TikTok Ads Manager, read 2026-10-02. Spec-level limits for Spark video are in TikTok Spark Ads video requirements.
How long does a Spark Ads code last?
The creator chooses the duration when generating the code: 7, 30, 60 or 365 days. The same page supports batch authorization of up to 20 video codes at a time, and says video codes can only be deleted once all ads that use them are removed.
The page does not state what happens at expiry beyond the duration itself, so plan renewals as a fresh authorization rather than assuming an extension.
| Item | Value on the page |
|---|---|
| Code duration | 7, 30, 60 or 365 days |
| Batch authorization | Up to 20 video codes at a time |
| Caption after authorization | Cannot be edited |
| Private videos | Become public when used in campaigns |
| Spark Ads per account | Maximum 10,000 |
What should be final before the code is issued?
Three things live in the video or caption, and only the caption is locked by TikTok's rule. The burned-in captions and any on-screen AI note are pixels in the file, so they are effectively locked too once the post is live: replacing the video means a new post and a new code.
The post caption is sent as the title field of the Content Posting API's Direct Post, which TikTok's Direct Post reference caps at 2200 UTF-16 runes; is_aigc marks the video as AI-generated content there. Finalise both before you publish the organic post.
- Cut to the final length and hook:
POST /v1/video-trimwithstartandduration. - Burn the captions you want to appear:
POST /v1/video-captions, usingscript_textif the transcript must match your copy. - Proof the exported file once, then publish and request the code.
How do I prepare the clip with Sume?
Trim first, then caption the trimmed file, so the caption timings match the final cut. The caption job needs a public HTTPS video_url; use the trimmed artifact URL once the trim job completes.
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: spark-final-001" \
-d '{"video_url":"https://media.sume.com/artifacts/artf_demo/trimmed.mp4","style":"slam","script_text":"Your final line here."}'What does Sume not handle?
Sume does not request Spark codes, link a TikTok account, or edit a post after publishing. It also cannot change a caption that TikTok has locked. If you need new wording, render a new video, publish a new post and authorize it again.
Private videos become public when used in a campaign, per the same article, so do not use a private test post as a stand-in for an unfinished ad.
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