Midjourney moodboards now take uploads: reference sets for Sume edits
Midjourney's October 1 changelog lets moodboard pages accept file uploads. To reuse a reference set in an API, store the URLs and send them as input_references.

Midjourney's October 1 alpha changelog says moodboard pages now accept direct file uploads, and that dragged images show an attach card with a style reference option. If you want the same reference set available to code, keep the image URLs in a list of your own and send them as input_references on Sume's POST /v1/images; Sume's request has no moodboard object, only the reference list.
That is the practical split: Midjourney's moodboard is a feature inside its app. A reference set for an API job is a list of public HTTPS image URLs that you version like any other config file.
What did the Midjourney changelog change?
From the Midjourney alpha changelog (read 2026-10-04), the items that touch references:
- Moodboard pages accept direct file uploads.
- Dragged images display an attach card with a style reference option.
- All the srefs in a prompt now show as a single style pill with thumbnails.
- Edits keep the base image's aspect ratio, so a stray
--arin the prompt will not stretch the result.
How many references can a Sume request carry?
| Model | References accepted | Note |
|---|---|---|
openai/gpt-image-2.5 and Sunburst | Up to 16 | Also takes mask_url |
ideogram/ideogram-v4.5 | Up to 5 | First is the edited image, up to 4 more are references |
| Most other edit-capable models | Up to 10 | Read the input_references range in the catalog |
| Text-only models | 0 | References return 400 |
How do I keep a reference set in code?
Store the set as a small JSON file next to your prompts, upload the images somewhere public over HTTPS, and let one function turn the list into the request. Localhost, private-network and non-HTTPS URLs are rejected before submission, so a file on your laptop is not a reference until it is hosted.
import json, os, requests
def edit(set_file, prompt, model="openai/gpt-image-2.5"):
urls = json.load(open(set_file))["urls"]
refs = [{"type": "image_url", "image_url": {"url": u}} for u in urls]
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={"model": model, "prompt": prompt, "input_references": refs},
timeout=90,
)
r.raise_for_status()
return r.json()
if __name__ == "__main__":
out = edit("moodboard-autumn.json", "Match the palette and grain of these images")
print(out["data"][0]["url"])Will the result match the moodboard?
Not in the way a stored Midjourney style does. A list of images is guidance to an edit or reference model, and the prompt still carries the instruction. Name what to keep (palette, grain, lens look) in the prompt and keep the set small and coherent, since a long mixed list dilutes the signal. Compare against a single-image reference before you commit to a large set.
Sume does not offer Midjourney, so there is no sref to forward; the references act as guidance for the models in the Sume catalog.
Sources
Related posts
More in Comparisons
- MiniMax H3 768p 'half the price' claim checked against Sume rows
MiniMax says H3 at 768p costs under half of mainstream 720p. On Sume's own rows H3 768p is $0.075 per second against $0.125 to $0.14 at 720p. The numbers.
- MiniMax H3 vs H3-Max limits: the MiniMax page next to Sume's catalog
MiniMax lists H3 at 4 to 15 s and H3-Max at 5 to 15 s with different resolutions. Sume's catalog states its own ranges. Side by side, with the file-size limits.
- Marey 5 s 1080p at 24 fps vs Sume catalog clips
Moonvalley's licensed-data Marey makes clips up to five seconds at 1080p and 24 fps. Marey is not on Sume; here is how its limits compare with the catalog.
- MuseTalk's 256px face region: lip-sync quality to expect
MuseTalk is MIT-licensed and real-time on a V100, but it edits a 256 by 256 face region and its page warns of jitter. A guide to when that is enough.
Written by Sume