One 24-second Seedance 2.5 clip for a TikTok App Bundle ad

TikTok recommends 21 to 30 seconds for App Bundle video. One seedance-2.5 call can cover it at 9:16. Request body, checks, and where captions fit.

5 min readSume
All posts

TikTok's Global App Bundle page says a video ad runs between 5 and 60 seconds and recommends 21 to 30 seconds. seedance-2.5 on Sume accepts 4 to 30 seconds in one call, so you can ask for a 24 second vertical clip directly and skip stitching.

The target, from TikTok

From the TikTok App Bundle page (read 2026-10-05): vertical 9:16 is recommended, the minimum for vertical is 720x1280, the formats are .mp4, .mov, .mpeg, .avi, the file must be within 500 MB, and the bitrate must be at least 516 kbps. The page I read did not list a safe zone.

TikTok Global App Bundle video ad targets (read 2026-10-05)
ItemValue on the page
Aspect ratio9:16 recommended
Vertical minimum720x1280
Duration5 to 60 s, recommend 21 to 30 s
File sizeWithin 500 MB
BitrateAt least 516 kbps

The Sume request

Per the Video Router docs, seedance-2.5 accepts 4 to 30 seconds at 480p, 720p and 1080p. The aspect_ratio field takes 9:16. The request below asks for 24 seconds at 1080p, which is the highest tier the model lists. The docs do not give a pixel width for every tier, so confirm the result with a measurement below instead of assuming.

curl -X POST https://api.sume.com/v1/video-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bundle-clip-001" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "A vertical UGC-style product clip on a desk, natural light",
    "resolution": "1080p",
    "duration": 24,
    "aspect_ratio": "9:16",
    "mode": "async"
  }'

Which endpoint

New integrations are pointed at POST /v1/videos in the docs, which has the same catalog and the same jobs; the Video Router route stays available and does not change. The poll response from /v1/videos carries unsigned_urls[0] for the finished file, and the file saved in the docs example is output.mp4.

Measure what you got

Do not trust the tier name alone. Import the finished clip, then run video inspect with frames: { at: [1] }. The still comes back with width and height, which is the quickest way to confirm the vertical shape and the pixel floor. Probe also tells you has_audio, which matters when the clip is going to be an ad.

Trim only if you must

A 24 second clip is under the 60 second cap with a wide margin, so you can keep the whole file. If the model returns more than you need, video trim cuts a new MP4 at $0.02 per job. The file size limit is rarely a problem for a clip this short, but check the exported file against the 500 MB cap and the 516 kbps floor before you upload.

Captions

Add captions last, and only on the clip you will upload. The captions API burns a style onto a public HTTPS video URL for $0.20 per job of up to 60 seconds, and a clip with no speech needs cues instead of speech-to-text, otherwise the job fails with caption_no_speech. If the model generated no audible speech, send authored cues.

What the vendor says and what Sume accepts

Seedance 2.5 is a recent model. ByteDance Seed's launch post on 2026-07-31 describes up to 30 seconds per generation with audio-video joint generation (read 2026-10-05: Seedance 2.5 launch post). Sume's catalog entry is what matters for your integration: 4 to 30 seconds at 480p, 720p and 1080p. Always read capabilities from GET /v1/video-router/models, because each model has its own envelope and the catalog is the source of truth for what Sume will accept.

Prompt and structure

Prompts for a short app ad work best when the first second shows the product in use, because the viewer decides in the first moments. Keep one idea per clip. If you need a second beat, request a second clip and join them in a timeline render, which charges $0.10 per output minute and uses no provider inference.

Proof cheap, then finalize

Run the whole path once on a cheap setting before you spend on the final. Request the same prompt at 480p and a short duration first to check composition, then repeat at 1080p for the final. The Video Router docs note that limits differ for each model, and each job is billed at the provider list rate times 1.25, so a short low-resolution proof costs little compared with a full 24 second 1080p render. Use Idempotency-Key on each request so a retry returns the original job instead of creating a second one.

Checklist

Request 9:16 at 24 seconds, measure the first still, trim only if needed, and caption last.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume