Timeline Request Structure
Timeline requests use a full render manifest shape.
Need the short mental model first? See Timeline Overview timing inference model.
Endpoint
- Render:
POST https://api.reelforger.com/v1/videos/render - Validate:
POST https://api.reelforger.com/v1/videos/validate
Top-level structure
{
"version": "v1",
"output": { "width": 1080, "height": 1920, "fps": 30 },
"assets": [],
"composition": {}
}
Required fields
versionoutput.width,output.height,output.fpscompositionobject
At least one visual/audio path must be represented through composition.timeline and corresponding assets.
Optional but common fields
idempotency_key(safe retry dedupe)composition.auto_stitch(derive sequencing by layer order)composition.text_overlayscomposition.captionswebhook_url,webhook_headers,webhook_secretmetadata
Assets and layer linkage
- Each timeline layer references an asset via
asset_id. - Every
asset_idmust exist inassets[]. - Layer
typeand assettypeshould match intended usage.
Time rules
imagelayers requiretime.start_seconds.image.time.duration_secondscan be omitted when composition duration is inferable:- from explicit
composition.duration_seconds, - from max timed end across timeline/text overlays,
- or at render-time when
composition.auto_stitchis enabled and media durations are probed.
- from explicit
video/audiolayers requiretimeunlesscomposition.auto_stitchistrue.trim.start_secondsis optional for audio/video.
Captions and alignment
- Use
composition.captions.wordsas raw timing source. - Add
composition.captions.correct_textwhen you need improved punctuation/casing alignment. - Keep caption placement in safe lower-third regions for social readability.
Validate first
Use https://api.reelforger.com/v1/videos/validate with the exact same body before rendering in production.
Warnings highlight common readability/layout/timing risks before credits are spent.