TikTok video_cover_timestamp_ms: pick the cover frame in seconds
TikTok's Direct Post field video_cover_timestamp_ms takes milliseconds. Preview candidate frames with Sume video-frames, then multiply the chosen time by 1000.

Preview a few candidate moments with POST /v1/video-frames (its at[] is in seconds), pick the still you prefer, and send that time times 1000 as video_cover_timestamp_ms. TikTok's reference says the field "Specifies which frame (measured in milli-seconds) will be used as the video cover."
What does the field mean?
The quote is the whole definition the page gives, so nothing else about it is assumed here: it selects a frame by time, in milliseconds, of the video you post. The unit difference is the trap, because Sume's frame times are in seconds.
| Where | Field | Unit |
|---|---|---|
| TikTok Direct Post | video_cover_timestamp_ms | Milliseconds |
| Sume video-frames | at[] | Seconds, each at least 0 |
| Example | 2.5 s in Sume | 2500 in TikTok |
How do I preview candidates?
Submit up to 24 times in at[]; each must be at least 0 and below the clip duration or the worker fails with frame_time_out_of_range. The result lists frames[{t,url,width,height}], so t is the number you convert.
Video frames is unbilled, always answers 202, and reads only sources up to 300 seconds.
curl -X POST https://api.sume.com/v1/video-frames \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: cover-pick-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/post.mp4",
"at": [0.5, 1.5, 2.5, 3.5],
"max_edge": 720
}'What if the video is longer than 300 seconds?
Frames refuses a longer source as duration_out_of_range. If the moment you want is early, cut that stretch with https://docs.sume.com/models/video-trim and preview that. The cover time is measured on the video you post, so a preview cut only helps if it starts at 0 of the video you post.
What are the risks?
The page quoted here does not say how a time between two frames is resolved, so pick a time from a preview and re-check the cover on TikTok after posting. Sume does not post to TikTok; the Direct Post call and the token are yours.
What does a short checklist look like?
Because the field is a single number, the failure modes are unit errors and out-of-range values. This list keeps both visible before the upload call.
- Convert seconds to milliseconds by multiplying by 1000, and keep the result an integer.
- Keep the time below the length of the file you send to TikTok, not the source clip.
- Store the chosen frame's artifact id next to the post id to see later which moment was picked.
- Re-preview if you re-cut the video, because timings shift with the cut.
Sources
Related posts
More in Use cases
- TikTok video ineligible for recommendation: AI content rule
TikTok keeps realistic content about public-interest matters out of the For You feed when it is not confirmed as AI or edited. What that means for Sume clips.
- Topaz Labs and Adobe: what Sume's image upscale API takes
Adobe completed its Topaz Labs acquisition on Sep 23, 2026, and Topaz stays standalone. If you need an upscale API, here is what Sume's accepts.
- Text to speech reading a confirmation code digit by digit
To make TTS read a code one digit at a time on Sume, write the transcript with the digits separated, pin a Sonic id, and listen before you ship it.
- Twitch clip captions: edit text and timing, burn them in
Twitch is rolling out editable clip captions. For a clip file you edit yourself, Sume burns your own cues with text, start and end, no speech-to-text.
Written by Sume