Palettes and moodboards
Save your own colour palettes and moodboards once, then steer every Generate Image run with your colours, your description and your style reference images.
A palette is your own set of colours, and a moodboard is your own set of reference images with a description. You save them once, then steer any Generate Image run with one. They work like the built-in colour looks and styles, but with your colours and your images.
You create palettes and moodboards through the REST API, the SDK, the CLI or an AI assistant over MCP. The editor has no screen to create or edit them. They work on every edition.
What each one holds
| A palette | A moodboard | |
|---|---|---|
| What it holds | A name, 2 to 12 colours as #RRGGBB, and an optional note of up to 500 characters | A name, an optional description of up to 1,000 characters, and 1 to 12 image links, each with an optional caption |
| How a run uses it | direction.colorLook: "palette:<id>" | direction.style: "moodboard:<id>" |
| What the run gets | Every colour in the prompt, by an everyday name and its hex code | The description in the prompt, and the images as style references |
Both belong to you only. Another person's id answers 404, the same as an id that does not exist.
How a palette steers an image
A run names each colour of the palette in the prompt, in your order, as color palette: <name> <hex>, …. Each colour gets its nearest everyday name, because a model follows a named colour more reliably, and its exact hex code. The palette's note is for you and is not added to the prompt.
The words go where a built-in colour look would go, in the style section at the end of the prompt. When a prompt is over the model's limit, these words are removed first. Your own prompt and your references are never cut.
How a moodboard steers an image
A moodboard adds its description to the prompt as you wrote it. A moodboard with no description sends only its images.
The images go to the model as reference images. Each image comes with a short line that tells the model to take the colours, light, texture and mood from it, and not its subject or layout. Its caption is added when it has one.
- Your own references come first. Images you send yourself, and a connected character, keep their places. The moodboard's images fill only the reference seats left after them.
- Never more than the model takes. Each model accepts a set number of reference images. The images that do not fit, in your moodboard's order, are not sent. A model that takes no reference images gets none, but the description still goes in.
- Aspect ratio Auto keeps the shape of the first image the run sends. When you send no image of your own, that is the moodboard's first image.
The warning when images are not sent
When some images do not fit, the run goes ahead and the answer carries a warning with the code moodboard_images_not_sent. The message says how many images were not sent and why. The job keeps the same warning. For example:
5 of the 12 images of moodboard "Nordic calm" were not sent as style references: the model (nano-banana-pro) takes at most 8 reference images, and your own references come first.Limits
- Image links, not copies. Each image is a public
httporhttpslink of up to 2,048 characters, and a caption is up to 200 characters. A link to a private network is refused. An image you delete, or one that your plan's media retention removes, is gone from the moodboard too. - Generate Image only. A video request that names a palette or a moodboard answers
400. - Not with a preset in the same request. A call that applies a preset (
presetId) cannot use a palette or a moodboard, and answers400. This includes a preset saved with one in its direction. - The latest version is used. A run records the ids, not a copy. Change a palette and the next run uses the new colours. Delete it, and a run that still names it answers
404. - Errors come before any charge. A malformed id answers
400, and an id that is not yours or no longer exists answers404. A built-in id that is unknown is skipped, but your own palette or moodboard is never ignored in silence.
What it costs
Saving, listing and changing palettes and moodboards is free. A moodboard's images are references, so a run is priced like any run with that many references. A text-to-image model with references runs on its image-to-image version, and a model priced per reference image counts them. The price checked before the run counts only the images that are actually sent.
In a workflow
A Generate Image node whose direction names a palette or a moodboard is resolved each time the workflow runs, including app runs, schedules and webhooks. Such a node is written into the workflow from code or by an AI assistant.
- The Final view shows a note where the palette or the moodboard will go, because its words are added when the run starts.
- Run the workflow, not the node. The node's own run button refuses such a node, with nothing sent or charged. The message ends with "Run the workflow to use it — nothing was charged."
- In a published app, a palette or a moodboard saved in the workflow is looked up among the creator's. One that a person who runs the app supplies is looked up among their own, so they can never name the creator's other palettes or moodboards.
- A palette or moodboard that cannot be found fails that node before anything is made or charged.
Create and use them from code
GET, POST, PATCH and DELETE on /v1/palettes and /v1/moodboards list, create, change and delete them. OAuth apps need assets:read to read and assets:write to write. Writes are limited to 30 requests a minute. Then pass the id in the direction of POST /v1/generate-image. See Your own palettes and moodboards.
client.palettes and client.moodboards manage them. On nodes.run("generate-image", …), pass direction: { colorLook: paletteDirectionId(id), style: moodboardDirectionId(id) }. The answer types the warnings. See Pickers, presets and prompts and Run nodes.
nodaro palettes and nodaro moodboards list, create, change and delete them. See Commands.
An AI assistant uses list_palettes, save_palette, list_moodboards and save_moodboard. The generate_image tool takes palette_id and moodboard_id, and passes the warning on. There is no delete tool over MCP. See the MCP Image tools.
Frequently asked questions
What is the difference between a palette and a moodboard?
A palette is a named set of 2 to 12 colours, which a run names in the prompt. A moodboard is a description and 1 to 12 image links, which a run adds to the prompt and sends as style references.
How do I create a palette or a moodboard?
Through the REST API, the SDK, the CLI, or an AI assistant connected over MCP. The editor has no screen to create them.
Do moodboard images cost extra?
The images are sent as references, so a run is priced like any run with that many references. The price checked before the run counts only the images that are actually sent.
What happens when a moodboard has more images than the model takes?
Your own references come first, and the moodboard's images fill the seats that are left. The images that do not fit are not sent, and the answer carries a warning that says how many.
Can someone else use my palette?
No. Palettes and moodboards belong to you. Another person's id answers 404, the same as an id that does not exist. A published app can use its creator's moodboard when the moodboard is saved in the workflow.
Related
Generate Image
Reference roles
Creative controls
Nodes
Image
Last updated on
Reference roles
Give each reference a role such as face, outfit, background or style, lock a subject's identity when you need it, and mention references by name in the prompt.
Creative controls
Pickers set camera, lighting, mood, style, subjects and motion without rewriting prompts. See how they work, how to combine them and where to connect them.