TikTok Shop video wants a visible face and the product: check first
TikTok Shop's quality page says content should feature people, camera movement, and a visible face and product. A pre-flight with Sume video frames first.

The TikTok Shop Academy page on requirements for high-quality videos and LIVEs says to create content that "is recorded in a real-world environment, add some camera movement, and feature people", and that it must include your face and the physical product visibly. Under posting a video, it also asks for at least three seconds of dynamic content without any still images or looping visuals.
What an AI-only clip lacks
A generated product shot with no person fails the plain reading of those lines. That does not make AI useless: you can mix real footage of a person holding the product with generated inserts, and check each against the page.
A frame check you can run
The video frames API pulls stills at times you name, at source size, up to 24 per call from a clip of up to 300 s. Ask for the first, middle and last seconds and look for a face and the product.
| Check | Time stamps to pull |
|---|---|
| Face visible at the start | 0, 1, 2 |
| Product visible mid-clip | one third, one half |
| Product visible at the end | last second |
Request
Stills at fixed times. The submit always returns 202 with a job; poll GET /v1/video-frames/{id} until resource_status is ready, then review the images in frames.
import json, os, urllib.request
body = {
"video_url": "https://media.sume.com/artifacts/example/ad.mp4",
"at": [0, 1, 2, 8, 14],
"format": "jpeg",
}
req = urllib.request.Request(
"https://api.sume.com/v1/video-frames",
data=json.dumps(body).encode(),
headers={
"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": "frames-ad-001",
},
method="POST",
)
print(urllib.request.urlopen(req).read().decode())Limit
Stills show you a face; they do not prove the clip passes TikTok's review. The page lists enforcement from violation points to content removal, so treat the check as a filter.
Sources
Related posts
More in Use cases
- TikTok square ad minimum 640x640: check a Sume 1:1 render first
TikTok's non-Spark page lists 1:1 at 640x640 or more. Sume labels sizes 480p, 720p, 1080p, so measure the 1:1 frame with video-inspect before you upload.
- Toy store spot cut to the beat: a Lyria track as the Timeline spine
Make a 15-second toy ad with the music as the spine: Lyria 3.5 track, audio.source_in to start at the best bar, then slots cut on the beat for $0.225 on Sume.
- Training knowledge-check clips with an AI avatar, one per question
Make a question clip and an answer clip per quiz item with one Sume avatar: 10-second scripts, a silence beat for thinking time, and the cost for 20 questions.
- Transcribe a 30-minute video: three 10-minute detaches and STT, $0.33
A 30-minute file is too long for one detach or one STT call. Cut three 10-minute audio ranges at $0.01 each, then transcribe each at $0.01 per minute: $0.33.
Written by Sume