Reference ingest source block: rotation, vfr and aspect
Before you remake a reference, read the manifest source block: display_aspect, rotation, fps, vfr, codec and has_audio_track. What each field should change.

The first block of a Sume reference-ingest manifest, source, answers what the file is before you ask what happens in it: duration_seconds, width, height, rotation, display_aspect, fps, frame_count, vfr, video_codec, has_audio_track, size_bytes, plus url, artifact_id and sha256. Read it first; three of those fields change how you plan the remake.
Phone footage is the common reference, and phone editors keep adding clip-assembly features: Instagram's First Draft, which TechCrunch reported on August 25, trims clips and removes pauses to build a first cut in under 10 seconds, on iPhone first (TechCrunch, read 2026-10-04). Files like that arrive with whatever the phone recorded, so check before you assume.
Fields and what they change
The field list comes from the manifest contract in packages/api-contract/src/reference-ingest.ts and the OpenAPI schema; the column on the right is guidance, not a documented Sume rule.
| Field | Type | What to change |
|---|---|---|
| display_aspect | string | Pick the remake's output aspect from this, not from width and height |
| rotation | number | Remember that text boxes are normalised to the rotated frame |
| fps | number | Choose a conform rate for the remake |
| vfr | boolean | True means variable frame rate; do not assume a fixed frame time |
| has_audio_track | boolean | False means plan new sound; see audio.silent for a track that exists but is quiet |
| sha256 | string or null | Use as a stable key for the source in your own log |
Tie it to the next call
Two Sume surfaces take an output spec. Video trim accepts output with width and height 256 to 2160 and fps of 24, 25, 30 or 60, on exact precision only. Timeline compose takes output.width, output.height and output.fps, and warns output_fps_resamples_sources when the rate differs from the clip. Read source.fps and source.vfr first and you know whether a conform will repeat or drop frames.
source = {
"width": 1080, "height": 1920, "rotation": 0,
"display_aspect": "9:16", "fps": 29.97, "vfr": True,
"has_audio_track": True,
}
allowed_fps = (24, 25, 30, 60)
nearest = min(allowed_fps, key=lambda f: abs(f - source["fps"]))
notes = [f"output aspect {source['display_aspect']}",
f"trim output.fps candidate {nearest}"]
if source["vfr"]:
notes.append("variable frame rate: conform on purpose")
if not source["has_audio_track"]:
notes.append("no track: plan new sound")
print("; ".join(notes))
The reference-ingest read itself covers a clip of up to 300 seconds that already lives on media.sume.com; import outside files first through POST /v1/media-imports, as the media inputs page describes. It is dest first with a production opt-in.
Sources
Related posts
More in Media tools
- Reference ingest uncertain[]: five kinds and what to do
The reference-ingest manifest lists five uncertain kinds, each with a suggested next step. Read the list, look again once per entry, and skip the rest.
- Remove a video background: Firefly vs Sume options
Adobe Firefly can now remove a video background across a whole clip. The Sume docs list a cutout tool for stills, not video, so plan a clean backdrop instead.
- Roku ad frame rates: only three allowed, probe first
Roku ads reportedly accept 23.98, 25 or 29.97 fps. Probe your clip before upload with Sume's video inspect, and cut it to length if it is outside 6 to 92 s.
- Seedance 2.5 secondary edit vs trim-and-regenerate on Sume
BytePlus describes timestamp-level edits to Seedance 2.5 clips. Sume has no such edit field, so here is the trim-and-regenerate route and its limits.
Written by Sume