Fix a first frame with Ideogram 4.5, then send it to Omni image_url

Correct text or a prop in a still with Ideogram 4.5 on Sume, then use the edited image as the Gemini Omni 1.1 Flash first frame. Two jobs, one shot.

5 min readSume
All posts

If the still you want as the first frame of a Gemini Omni 1.1 Flash shot has one wrong detail, such as a misspelled sign or a stray object, edit the still first and send the corrected image as image_url. On Sume that is two jobs: an image edit with ideogram/ideogram-v4.5 and a video job with gemini-omni-flash-1.1. Fixing the picture costs one image. Fixing it in the video means re-rolling seconds of footage.

Why fix the still, not the clip

Omni accepts a starting image and an optional last frame to control a shot (Google, read 2026-10-05). Whatever is in that frame is what the clip starts from, so an error in the still is carried through every second that follows. A video job bills per output second, while an image edit bills per image. The Sume docs give the Fal list prices of $0.03, $0.06 or $0.22 per image by quality for Ideogram 4.5, and Sume bills list times 1.25 on top (Sume docs: Image API, read 2026-10-05). Read the live number from GET /v1/images/models before you run.

Step 1: edit the image

Ideogram 4.5 edits when you send input_references: the first image is the one that is edited, and up to 4 more are references. An edit without aspect_ratio keeps the shape of the source image. Reference URLs must be public HTTPS.

curl -X POST https://api.sume.com/v1/images \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Idempotency-Key: first-frame-fix-v1" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ideogram/ideogram-v4.5",
    "prompt": "Change the shop sign to read OPEN LATE. Keep everything else.",
    "quality": "medium",
    "input_references": [
      { "type": "image_url",
        "image_url": { "url": "https://example.com/storefront.png" } }
    ]
  }'

Step 2: use the result as the first frame

The image job is asynchronous. Poll GET /v1/jobs/{id}/status, then read the image from GET /v1/jobs/{id}/result. Put that URL in image_url of the video request. Sume routes gemini-omni-flash-1.1 by the shape of the request, so an image_url field alone makes it an image-to-video job, with the same 3 to 10 second range and 360p to 4K resolutions as text-to-video (Sume docs: Video Router, read 2026-10-05).

  • Run the first video at 360p to check that the frame animates the way you want.
  • If the shot is a reveal, pass end_image_url as well.
  • Keep the prompt about motion and camera. The picture already says what is in the frame.

Check before you pay for the video

Open the edited image. If the text is right, go on. If it is not, edit again from the original, not from the edited result, so every pass starts from a known-good picture. Ideogram says the 4.5 model is built to make multi-turn editing possible (Ideogram on X, read 2026-10-05), but a clean pass from the source is the cheaper habit.

Use a stable Idempotency-Key for each image you intend to make, so a retry after a network error does not create a second edit, and a different body under the same key is refused with a 409 instead of being run.

Treat the two jobs as one unit in your records: store the source image, the edit prompt, the edited image URL and the video job id together. When a client asks for another change a week later, you can start from the same source and see what you did.

The same order works for any still-driven shot. Fix a product label, a date on a poster or a name on a door in the image, where the cost is one image, and only then start the clock on video seconds. If the text in the picture matters, look at it at full size before you send it on, because small type is where errors hide.

A last practical note: keep the edited image's aspect ratio equal to the aspect_ratio you send to the video job, which must be 16:9 or 9:16. If the picture has another shape, set aspect_ratio on the image edit so the two match before the video runs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume