AI moodboard from one reference image via API: four variations a call

Make a moodboard from a single reference: the n parameter returns up to 4 images per call on 17 Sume rows; Grok Imagine returns 1. Cost per board and a script.

5 min readSume
All posts

To build a moodboard from one reference image with the Sume image API, send the reference in input_references, describe the variation you want, and set n to 4. Every catalog row that takes references allows n up to 4 except Grok Imagine, which returns one image per call, read 2026-10-03. A four-image board costs four times the per-image price: $0.10 on Qwen Image or $0.15 on Flux 2 Pro.

Moodboards want range, not repeats, so vary the prompt across calls (palette, time of day, camera distance) rather than asking for the same thing eight times. Sume takes no seed, so each call is a fresh draw.

Cost of a board

Sixteen-image board (4 calls of n=4) at list price, read 2026-10-03.
ModelPer image16 images
Qwen Image$0.025$0.40
Flux 2 Pro$0.0375$0.60
Seedream 4.5$0.05$0.80
Nano Banana 2$0.10$1.60

Four directions from one photo

The loop sends the same reference with four prompts, n: 4 each, and collects the URLs. A call that is still running after the 30-second wait returns 202 with a job envelope instead of 200, so check the status code before reading data; see Jobs and results.

import os
import requests

headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
ref = {"type": "image_url", "image_url": {"url": "https://example.com/reference.jpg"}}
directions = ["warm golden hour palette", "cool blue night palette", "close-up details and textures", "wide empty landscape"]
urls = []
for d in directions:
    r = requests.post("https://api.sume.com/v1/images", headers=headers, timeout=60, json={
        "model": "qwen/qwen-image", "prompt": "moodboard frame, same subject and style as the reference, " + d,
        "input_references": [ref], "n": 4, "aspect_ratio": "1:1",
    })
    r.raise_for_status()
    if r.status_code == 200:
        urls += [i["url"] for i in r.json()["data"]]
print(len(urls), "images")

Assemble the sheet

Download the URLs and tile them with Pillow, as in the contact sheet recipe. Keep the prompt next to each tile so you can reproduce the ones you like.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume