Kling 4.0 saved elements: 7 slots vs Sume reference URLs

Kling 4.0 reuses up to 7 saved elements per generation. Sume has no saved-element object: you send image, video and audio URLs per request. What that changes.

4 min readSume
All posts

Short answer

Kling 4.0 lets a generation carry up to 7 saved elements alongside 10 images and 5 videos, 15 references in all, according to fal's Kling 4.0 guide (read 2026-10-04). Sume has no saved-element object. Each request carries its own reference URLs, so a character or product you want on every shot is re-sent on every shot. Kling 4.0 itself is not in the Sume video catalog today; Kling 3 is.

What a saved element is, and what Sume has instead

A saved element, as fal describes it, is an asset stored once in the Kling account and then called by name in later generations. That removes the upload from each call and keeps one identity stable across a series.

Sume's video request is stateless. The legacy Video Router takes flat URL arrays: reference_image_urls (max 10), reference_video_urls (max 5) and reference_audio_urls (max 5) per the OpenAPI schema. The OpenRouter-compatible POST /v1/videos takes input_references and frame_images. In both cases the asset lives at a URL you control, and you pass it each time.

Side by side

Kling 4.0 reference slots vs Sume request fields (Kling facts from fal, read 2026-10-04)
ItemKling 4.0 (per fal)Sume today
Total references15Per model; read supported_input_references
Images10Up to 10 on the Video Router field
Videos5Up to 5 on the Video Router field
Saved elements7, stored in the accountNone; pass a URL each call
Kling 4.0 model idRolling out in OctoberNot listed; kling-3 is

Check what a model accepts before you build

Reference limits differ by model, so ask the catalog rather than assuming. The script below prints each video model id with its accepted reference types.

import asyncio, json, os, urllib.request

def fetch():
    req = urllib.request.Request(
        "https://api.sume.com/v1/videos/models",
        headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]},
    )
    with urllib.request.urlopen(req) as r:
        return json.load(r)["data"]

async def main():
    for m in await asyncio.to_thread(fetch):
        print(m["id"], m.get("supported_input_references"))

asyncio.run(main())

Workaround for a stable character

Keep your own library of reference images at stable HTTPS URLs and attach the same two or three on every call. For Kling 3, check its row for which reference types it takes first. Where a model takes only a first frame, render the character into the frame instead.

See the reference limits table for every model, and the Kling 4.0 reference-asset comparison for the 15-asset count.

A worked example: one character across six shots

Say a series needs the same host in six 10 second shots. On Kling 4.0, the host would be saved once as an element and called six times, using one of the seven slots. On Sume you keep two or three clean images of the host at stable URLs and attach them to each of the six requests. The request count is the same; what changes is that the reference list is part of your code, so it is versioned with the rest of your pipeline and no account state can drift.

The cost of a re-sent reference on Sume is not a per-asset fee in most models. Prices are per second of output (or per token for Seedance), so attaching three images instead of one does not change the quote, with one documented exception: MiniMax H3 charges for reference images beyond the first five. Check the model row before adding a long reference list.

Caveats

  • Kling 4.0 details here come from fal's guide, not a Kling API reference; Kling's own release-notes page did not render its body when read.
  • Full Kling 4.0 is expected in October; limits can change at launch.
  • Reference limits on Sume are per model: a high cap on the field does not mean every model accepts it.

Sources

Related posts

More in Models

All Models posts

Written by Sume