Image to music AI: generate a track from a photo

Image to music AI uses a picture as an input for a track. On Sume, send image_url with the text prompt to the Music Router; the price stays the same.

4 min readSume
All posts

Image-to-music AI makes a music track with a picture as one of its inputs. On Sume, the picture goes with a text prompt: add a public HTTPS image_url next to the required prompt in a POST /v1/music-router/generate request. The image is optional visual conditioning, and the docs say it doesn't change the price.

The details come from Sume's Music 1.0 and Music Router docs and the Music Router schema in the Sume API reference, read on 2026-09-27. Anything described as current behavior is read from Sume's code. Every other request field is covered in Music generation API.

How do I turn an image into music with an API?

Send the prompt and the image's URL in one request, then poll the job and download the audio. The request below is the docs' image-conditioned example, sent to the Music Router.

  • POST /v1/music-router/generate creates the job. Leave model out to use the default, sume/music-auto.
  • GET /v1/jobs/{id}/status reports progress, and GET /v1/jobs/{id}/result returns the finished job.
  • The track is the result.artifacts[] entry whose type is audio, typically audio/mpeg on media.sume.com.
curl -X POST https://api.sume.com/v1/music-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: music-image-001" \
  -d '{
    "prompt": "Cinematic ambient underscore matching the mood of the reference still, instrumental only",
    "image_url": "https://example.com/moodboard.png"
  }'

What should the prompt say when I send a picture?

The docs' example keeps the prompt short and points at the still. To avoid generic musical choices, the docs recommend a full scene-specific brief, and the picture can go alongside it: the emotion, the genre, a tempo in BPM, the key, two to four instruments with texture, one named moment, and the era, then “Instrumental, no vocals.”

For a photo of a rainy city street at night, that could read: “Moody, rain-soaked synthwave, 92 BPM, F minor. Warm analog pads, gated snare, a lonely saxophone line. A slow start; the drums enter at 0:15 and the sax takes the melody at 0:30. 1980s production, wide and wet. A 1-minute track. Instrumental, no vocals.” More briefs are in AI music prompt examples.

What does the image change, and what doesn't it?

The image is an input, not a setting: it doesn't replace the prompt, set the length, or add to the bill.

From Music 1.0, Music Router, the Sume API reference, and API pricing, read 2026-09-27. The catalog flags are read from Sume's code.
QuestionAnswer
Is the image required?No. prompt is required, 1–5,000 characters; image_url is optional.
Which image URLs work?Public HTTPS URLs. Send null only to clear an image on a client that reuses request objects.
Does it change the price?No. The docs say the price doesn't vary with image conditioning; API pricing lists music generation at $0.125 per audio generation, plus a 5.5% agent fee by default.
Does it set the length?No. There is no duration field; duration and duration_seconds are rejected. Ask for a length in the prompt.
Which models accept it?The catalog reports capabilities.image_conditioning for each model. In current code it is true for sume/music-auto, lyria-3.5, and lyria-3-pro.
What comes back?A Sume-hosted audio artifact. Raw provider URLs are not public outputs.

Where can the image come from?

Any image at a public HTTPS URL, such as your own site or storage bucket. For music meant for a video already on Sume, video frames (POST /v1/video-frames) returns exact stills at the seconds you name as durable media.sume.com images, from clips up to 300 seconds, and the call is unbilled. Generate music for a video with AI walks through that case.

What can't image-to-music do on Sume?

  • Promise a mood match. The docs call the brief's details creative directions, not guaranteed output settings, and say to verify the generated audio.
  • Take more than one picture: image_url is a single URL.
  • Take lyrics as an input: the request has no lyrics field. For background music, end the prompt with “Instrumental, no vocals.”
  • Use a negative prompt. A non-empty negative_prompt returns HTTP 400 with negative_prompt_unsupported; write exclusions into the prompt instead.

Sources

Related posts

More in Models

All Models posts

Written by Sume