TikTok TopView locks assets at preloading: freeze the cut first
TopView creatives need sales-rep pre-approval and cannot change once preloading begins. Use Timeline's unbilled plan, then render once with an idempotency key.

For TopView, your last render is the only render. TikTok's TopView page says creatives need pre-approval from your sales representative before submission, that review takes about 2 days, and that assets cannot be modified once preloading begins (read 2026-10-07). So settle the cut with Sume's unbilled Timeline plan, render once, probe the result, and only then send it.
None of this is Sume-specific TikTok integration: Sume makes the file, and you hand it to your rep.
The TopView facts that shape the workflow
From the TopView page. Specs: 9:16, minimum 540x960, 5-60 seconds (15 seconds recommended in one line, 9-15 in another), max 500 MB, .mp4, .mov, .mpeg, .3gp, minimum 2,500 kbps.
| Constraint | Value |
|---|---|
| Pre-approval | from your sales representative before submission |
| Review time | approximately 2 days after submission |
| After preloading starts | assets cannot be modified |
| Same creative, other placements | cannot run the same day |
| Ads per ad group | maximum 20 |
Plan before you pay
POST /v1/timeline-1.0/plan runs the schema, the Sume-host URL checks, and the compiler. It returns duration_seconds, segment_count, billable_minutes, and estimated_cost_usd_micros. No job, no credits, and no media download. It cannot predict short-source pad or loop warnings, so the render can still warn.
curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio": { "url": "https://media.sume.com/artifacts/artf_demo/vo.wav", "duration_seconds": 15 },
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/hook.mp4", "start": 0, "duration": 5 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/body.mp4", "start": 5, "duration": 10 }
],
"output": { "width": 1080, "height": 1920 }
}'Render once, then probe
Send the same body to POST /v1/timeline-1.0/render with an Idempotency-Key you keep with the ticket, so a retry returns the same job rather than a second render. Poll GET /v1/jobs/:id/status, then read GET /v1/jobs/:id/result for video_url, duration_seconds, and any warnings[].
Then run video inspect with frames: false. Check 1080x1920 against the 540x960 minimum, the duration against 5-60 s, size_bytes against 500 MB, and the computed kbps against 2,500.
What this does not give you
Sume has no TikTok connector in the docs I read, no approval status, and no way to replace an asset after preloading. Keep the master and the idempotency key so a replacement creative can be rebuilt on the same recipe.
A pre-submission checklist
Before the file goes to your representative, record: the Timeline body, the idempotency key, the job id, the probe output, and the stills. If the review comes back with a change request, you will be re-rendering a new asset, not editing the old one, and the record tells you exactly what to change.
Budget the two-day review into the schedule. A creative that must run on a given date needs to be submitted days ahead, and the page says the same creative cannot run on other placements the same day, so plan the variant for the other placement as a separate file.
Sources
Related posts
More in Media tools
- Do fades shift my cuts? Timeline start times with transitions
In Timeline 1.0 a slot's declared start is its place on the audio spine, fade or no fade. The compiler compensates for the xfade overlap; gaps hold a frame.
- Two-voice dialogue audio on Sume: TTS lines joined with audio concat
Build a role-play or interview track by generating one TTS line per turn in each speaker's voice, then joining up to 20 turns into one gapless file for $0.01.
- One lip-sync model per video: Fabric runs at 25 fps, measure H3 Max
Mixing Fabric and MiniMax H3 Max lip-sync clips in one Sume video risks a frame-rate mismatch. Pick one per run and check fps with ffprobe on the first clip.
- video-filter dim amount 0 or 1.2 is refused: the (0, 1] range
Dim amount takes values above 0 up to 1. Zero, negatives and 1.2 return video_filter_amount_out_of_range. What it does, and how to lift a dark clip.
Written by Sume