TikTok Spark Ads: 10-minute cap on sparked videos, probe then trim

TikTok's Spark Ads page says videos over 10 minutes cannot be sparked, though the in-feed page says no duration limit. Probe the length, then trim.

6 min readSume
All posts

A long organic TikTok cannot be sparked: TikTok's About Spark Ads page says there is a 10 minute maximum on videos that can be sparked (read 2026-10-03). The same page says there are no restrictions on video ratio, resolution, file type, duration, bitrate or file size, and the Auction In-Feed page lists the Spark duration as having no restrictions too. The two statements pull in different directions, so treat 10 minutes as the safe ceiling and cut anything longer before it goes near an ad.

This post shows how to find out how long a file really is and how to make a sub-10-minute version with Sume.

Two TikTok pages, one practical rule

The auction page covers the ad formats and lists Spark videos as .mp4 or .mov with captions drawn from the organic post, up to four lines on display. The Spark Ads page covers the programme: you can publish ads from your own posts or from other creators' posts with authorization, text for a Spark Ad push can be edited when you set up the ad, and a video must be un-authorized as a Spark Ad before it can be deleted from the organic account (read 2026-10-03). Each Ads Manager account can support at most 10,000 Spark Ads.

Only the Spark Ads page mentions the 10 minute figure. When two pages disagree, the stricter number is cheaper to obey than to argue about, because a rejection costs you the time you spent on the campaign.

Spark Ads facts, TikTok Ads Help, read 2026-10-03
ItemWhat the page saysPractical step
Maximum length10 minutes for videos that can be sparkedProbe the duration; cut anything above 600 seconds
Format limitsNone on ratio, resolution, type, bitrate or sizeStill keep .mp4 or .mov
CaptionFrom the organic post, up to four lines shownEdit the post before you authorize it
Account cap10,000 Spark Ads per Ads Manager accountCount your active ads
Deleting a postUn-authorize it as a Spark Ad firstDo this before removing the organic video

Probe the length, then cut

Video inspect reads one media.sume.com clip and returns probe facts without producing a new file. With frames: false you get no stills, so the call is cheap and quick. Its source cap is 1800 seconds, which is 30 minutes, so a clip longer than that is refused and needs another route.

Video trim then returns a new MP4 with only the range you ask for. The script below probes the clip and, when it is longer than 600 seconds, trims the first 590. The docs show the probe as an object but do not list its field names on the page, so the code tries duration_seconds and then duration; print the probe once and adjust if your response names it differently.

import os, time, requests
BASE = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

def inspect(url, key, **body):
    r = requests.post(BASE + "/v1/video-inspect", headers={**H, "Idempotency-Key": key},
                      json={"video_url": url, **body})
    r.raise_for_status()
    rid = r.json()["request_id"]
    while True:
        v = requests.get(f"{BASE}/v1/video-inspect/{rid}", headers=H).json()
        v = v.get("video_inspect", v)
        if v.get("status") in ("completed", "failed", "canceled") or v.get("probe"):
            return v
        time.sleep(3)

def run(path, body, key):
    r = requests.post(BASE + path, headers={**H, "Idempotency-Key": key}, json=body)
    r.raise_for_status()
    job = r.json()["request_id"]
    while requests.get(f"{BASE}/v1/jobs/{job}/status", headers=H).json()["status"] not in ("completed", "failed", "canceled"):
        time.sleep(3)
    return requests.get(f"{BASE}/v1/jobs/{job}/result", headers=H).json()

clip = "https://media.sume.com/artifacts/artf_demo/long-organic.mp4"
probe = inspect(clip, "spark-probe-001", frames=False)["probe"]
length = probe.get("duration_seconds") or probe.get("duration")
print(probe)
if length and length > 600:
    print(run("/v1/video-trim", {"video_url": clip, "start": 0, "duration": 590}, "spark-cut-001"))

Keep the numbers in one place

Spark Ads tend to be managed by more than one person: a creator posts, a marketer requests the code, and someone else watches the budget. A short checklist saves a round trip. Write down the length of each candidate video, the date its authorization code was set to expire, the caption as it appears today, and whether the video has been un-authorized before deletion. TikTok's page says the code duration can be customized to meet campaign needs and does not name the choices on that page (read 2026-10-03), so record the value you picked rather than relying on memory.

For the length column, the probe is the source of truth. A video that looks like nine minutes in the app can be a few seconds over once you export it, and a cut costs $0.02 under the public trim rate to try again. Run the probe on every candidate that is close to the limit, not only on the obviously long ones.

After the cut

A trimmed MP4 is a new file, not the organic post. Spark Ads use the post that lives on TikTok, so the cut version is only useful if you publish it as a new organic video and authorize that one. Remember that the caption comes from the organic post, which is why you edit it before you generate the authorization code.

If you only need a shorter ad and the long video can stay organic, you do not have to spark it at all. Cut the version for the ad, run it as a normal in-feed creative, and keep the long one for your profile.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume