fal bytedance/seedance-2.0 request fields, mapped to Sume's
Moving a fal Seedance 2.0 call to Sume: the path becomes a bare model id, image_urls become input_references, and seed, auto ratio and auto duration go.

A fal Seedance 2.0 request maps to Sume's POST /v1/videos in five changes. The endpoint path becomes a bare model id such as seedance-2; image_urls, video_urls and audio_urls become typed input_references; image_url and end_image_url become frame_images; and seed, aspect_ratio: "auto" and duration: "auto" have no Sume equivalent.
The fal fields below were read on 2026-09-29 from its Seedance 2.0 pages. The Sume fields are in the Video generation docs.
How do the fields line up?
fal splits Seedance 2.0 into one endpoint per mode and tier. Sume has one endpoint and picks the mode from the fields you send.
| fal | Sume | Note |
|---|---|---|
Path bytedance/seedance-2.0/text-to-video | model: "seedance-2" | Sume uses bare catalog ids and no provider-org prefix. |
Path bytedance/seedance-2.0/fast/text-to-video | model: "seedance-2-fast" | Sume also lists seedance-2-mini. |
prompt | prompt | Same name. |
resolution: 480p, 720p, 1080p | resolution | Each Sume model advertises its own subset. |
duration: auto or 4 to 15 | duration: an integer the model lists in supported_durations | No auto. Seedance 2.0 lists 4 to 15 in the docs example; check GET /v1/videos/models. |
aspect_ratio: auto plus six ratios | aspect_ratio: a ratio the model lists in supported_aspect_ratios | auto is not in that list, so it is refused. |
generate_audio | generate_audio | Same name. |
seed | Not accepted | 400 unsupported_parameter. |
image_url, end_image_url | frame_images with first_frame and last_frame | last_frame needs a first_frame. |
image_urls, video_urls, audio_urls | input_references with image_url, video_url, audio_url types | At most 12 in total. |
What does a converted request look like?
Here is an image-to-video call with an end frame, in Sume's shape. The same fields on fal would be image_url and end_image_url on the image-to-video endpoint.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-port-001" \
-d '{
"model": "seedance-2",
"prompt": "The door opens and light floods the hallway",
"duration": 6,
"resolution": "720p",
"aspect_ratio": "16:9",
"frame_images": [
{"type": "image_url", "frame_type": "first_frame",
"image_url": {"url": "https://example.com/door-closed.png"}},
{"type": "image_url", "frame_type": "last_frame",
"image_url": {"url": "https://example.com/door-open.png"}}
]
}'What else changes besides the field names?
Sume submits a job and returns an id, then you poll GET /v1/videos/{jobId} until the status is completed, or pass an HTTPS callback_url to receive a webhook when the job completes. Billing is in workspace USD, reserved on submit at provider list × 1.25, and usage.cost is the Sume billable amount. If both frame_images and input_references are sent, frame_images takes precedence and the request is treated as image-to-video.
That means a fal client that sends both a start image and reference lists needs a decision on your side. Pick one field group per request, because frame_images wins when both are present. A reference-to-video call on fal has no start frame, so check which of the two you meant before you port it.
The audio switch keeps its name. On fal, generate_audio covers synchronized sound such as effects, ambient sound and lip-synced speech, and the page says the price is the same either way. Sume's docs default the field to the model's audio capability, so set it explicitly when you port a request that turned audio off.
What if I send a fal field Sume does not know?
Sume refuses seed, size and a non-empty provider.options with 400 unsupported_parameter. Read the refusal message, remove the field and send a new request.
Sources
Related posts
More in Developers
- FFmpeg: add a watermark image to a video with overlay
Add a watermark image to a video with FFmpeg: pass the logo as a second input and use overlay=W-w-10:H-h-10 for the bottom-right corner.
- FFmpeg burn subtitles into video: subtitles filter, force_style
Burn subtitles into a video with FFmpeg's subtitles filter: -vf subtitles=subs.srt re-encodes the picture, and force_style overrides the font and colour.
- FFmpeg change frame rate: the fps filter vs -r
Change a video's frame rate with FFmpeg's fps filter: -vf fps=30 drops or duplicates frames and keeps the running time. How -r and framerate differ.
- FFmpeg crop video: crop=w:h:x:y, centre, and 9:16
Crop a video with FFmpeg's crop filter: -vf crop=w:h:x:y keeps a w×h area whose top-left corner is at x,y; leave out x and y to crop the centre.
Written by Sume