Render a silent video from clips with the Timeline API

Set audio.mode to silence and a duration_seconds on POST /v1/timeline-1.0/render to join clips with no audio file. Which fields are illegal there, and pricing.

4 min readSume
All posts

To render clips into one video with no audio file, set audio.mode to "silence" and give audio.duration_seconds on POST /v1/timeline-1.0/render. The docs define silence as a declared length with no spine file, so the output is exactly that many seconds (1 to 1800) and you then place the video[] slots on that timeline.

Everything below is from the Timeline 1.0 docs, read 2026-09-29.

What does the request look like?

In silence mode do not send url, parts, gain_db or source_in inside audio. Each is refused with a silent_audio_takes_no_... code.

curl -X POST https://api.sume.com/v1/timeline-1.0/render \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: silent-render-001" \
  -d '{
    "audio": { "mode": "silence", "duration_seconds": 12 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 6 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 6, "duration": 6,
        "transition": { "type": "fade", "duration": 0.25 } }
    ]
  }'

What is not allowed with silence?

Silence-mode rules, from Timeline 1.0, read 2026-09-29.
FieldIn silence mode
audio.url, audio.partsRefused (silent_audio_takes_no_url, silent_audio_takes_no_parts)
audio.gain_db, audio.source_inRefused
soundtrack.duck_dbRefused (duck_requires_audio_spine)
soundtrack without duckNot excluded by the docs, so a music bed is possible

How do the slots have to line up?

video[0].start must be 0 and later starts must increase. Each slot's duration is at least 0.2 seconds, and coverage may trail the declared length by at most 0.5 seconds. Transitions go on slots after the first: fade, wipeleft, wiperight, slideup, slidedown or dissolve.

What does it cost?

$0.10 per output minute, reserved as ceil(audio.duration_seconds / 60) minutes, so the 12 second render above reserves one minute. POST /v1/timeline-1.0/plan returns the billable minutes and estimate without creating a job.

Which refusals should I expect?

  • audio_url_required: no url or parts and not silence.
  • audio_url_and_parts_exclusive: both url and parts sent.
  • invalid_segment_timing or segment_overlap: starts not increasing, or overlapping past the transition.
  • unsupported_media_source or source_not_found: a clip URL is off-host or dead.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume