NodaroAccount
Nodaro Docs
DocumentationNode ReferenceModelsTemplatesAI Agents (MCP)DevelopersSelf-hostingResearchCompare
Image

Describe to Picker

Analyze a photo with a vision model and fill the Person, Styling, Framing, Lens and Camera / Film Stock pickers you connect with valid catalog choices.

The Describe to Picker node analyzes a photo and fills the picker nodes you connect to it. A vision model looks at the main subject and the scene. It returns choices that exist in each picker's catalog, such as the person's age and hair, the makeup, the shot size or the lens. One run fills every connected picker.

When to use it

  • Turn a reference portrait into a full casting brief: connect Person, Styling and Framing, then feed them into Generate Image or Generate Video.
  • Set up a recurring character, with its styling and its lens look, from a single photo.
  • Match the camera of a reference image: detect its shot size, angle, lens and film stock.

Quick start

Add the node

Press Tab on the canvas and choose Image › Understand › Describe to Picker.

Connect the photo

Drag from an image node, such as Upload Image, to the Image input.

Connect the pickers to fill

Drag from the Picker JSON output to the Picker JSON input of each picker you want filled. The settings panel lists them under Analyzing:.

Run it and apply the result

Click Run on the node. Each picker receives its own part of the result. By default, each picker applies its part at once.

imagepicker jsonpicker jsonpicker jsonelementselementslookUpload ImageReference portraitDescribe to PickerGemini 3.8 FlashPersonStylingFramingGenerate Image
One photo fills the Person, Styling and Framing pickers, which then shape a new image.

Inputs

InputAcceptsWhat it does
ImageImage nodes, such as Upload Image and Generate ImageThe photo to analyze. Required.

The output, Picker JSON, is structured data with one part for each connected picker. Only picker nodes can read it: it does not connect to text inputs.

What it fills

The node analyzes exactly the pickers wired to its output, and no others. There is no picker setting to choose: the wiring is the choice.

PickerWhat it detects
PersonTraits such as type, age, ethnicity, build, hair, eyes and skin
StylingStyling choices from the picker's catalog, such as makeup, eyewear and jewelry
FramingShot size, angle and composition
LensThe lens
Camera / Film StockThe camera or the film format

Every value is a real choice from the picker's own catalog, so a picker never receives a value it does not know. A trait that is not visible in the photo is left out.

How pickers apply the result

Each picker decides how to use its part of the result, with two settings in its settings panel.

When image JSON is injected chooses how new values merge with the picker's current choices:

ModeWhat it does
Full override (clear undetected)The default. Writes every detected value and clears every value that was not detected. Use it when the photo should fully define the picker.
Overwrite detected (keep rest)Writes only the detected values and keeps your other choices.
Fill empty onlyWrites a detected value only where the field is empty. It never overwrites a choice you made.

Auto-apply on change is on by default. When it is on, every new result is applied at once, with the chosen mode. A choice you change by hand stays until the next run. Until then, the picker shows an Update from injected button that applies the result again. When it is off, the picker shows Update from injected after a new run or a change by hand. Otherwise it shows Up to date. Every run counts as a new result, even when it returns the same values.

In every mode, only the picker's choices change. The picker's label, its pre and post text and its layout stay as they are.

Settings

SettingWhat it does
Analyzing:Read only. The connected pickers that the next run will fill. Change it by wiring or unwiring pickers.
AI ModelThe vision model. The default is Gemini 3.8 Flash, a fast vision model that reads the prompt cheaply. For the most thorough read, choose Claude Opus 5.5: it filled the most traits per image in the Vision Model Bake-off. The list offers only vision models that can return this structured result reliably, including GPT-6.1 Terra and Kimi K3.1 Pro. GPT-5.2 and Gemini 4 Carbon are not offered, because neither holds its answer to this result reliably. Claude Fable 5 is offered too, and a read on it is one of the node's most expensive.
Reasoning EffortHow much the model reasons before it answers, on models that support it. The default is Auto (model default), which sends no effort. Claude Opus 5.5 is the one exception: it runs at High unless you choose another level, and it offers no Auto. In our tests, Very high and Max made reads slower without better answers.
Advanced modeGemini and Claude models. Runs the model directly with its maker, so that Temperature, Max Tokens and the full range of reasoning depth take effect. The call is then charged at the rate of the maker's own service. Claude Opus 5.5 at High already runs there, so Advanced mode does not change its price.
Extra guidance (optional)Your own instructions for the analysis, up to 2,000 characters, for example focus on the foreground subject.

Credits

A run is one vision call, however many pickers you connect. The call is charged for the tokens it actually used, at the selected model's rate. The tokens are the analysis prompt, the photo and the answer. The analysis prompt lists the catalog of every connected picker, so each connected picker makes the prompt longer. The full rules are in How LLM calls are charged.

  • Before the run, the Run button shows an estimate (≈ and a number) of a typical read on the selected model. The estimate grows with the number of connected pickers.

  • The model sets the rate. The default, Gemini 3.8 Flash, is one of the cheapest models. Claude Sonnet 5.5 and Claude Opus 5 cost more. Claude Opus 5.5, Claude Fable 5 and Gemini 4 Argon are the most expensive.

  • Some calls run directly with the maker. This happens in Advanced mode, and when a Claude model has any reasoning effort, because Claude's effort takes effect only there. The call is then charged at the rate of the maker's own service. Claude Opus 5.5 runs at High by default, so every read of Claude Opus 5.5 started from the editor runs there. Gemini 4 Argon always runs on Google's own service.

  • A hold comes first. When the run starts, Nodaro holds enough credits for the longest answer the model may write. A balance below the hold is refused before anything runs. After the call, the run is charged what it used.

  • When Claude is unavailable. When a Claude model cannot answer because its service is down or busy on Nodaro's side, the same analysis runs once on Gemini 3.8 Flash. The run is charged what both reads used: the Claude attempt, if its maker billed it, plus the Gemini 3.8 Flash read at its own rate. If Gemini 3.8 Flash fails too, the run fails and is charged only for any billed usage.

  • A content refusal. When the model declines the photo on content grounds, the run fails with the content-policy message. It is not sent to another model. The refusal is charged when the model's maker billed it, and refunded when it did not.

  • An empty read. When the analysis finds no trait for any connected picker, the run fails with the message "We couldn't read anything in this photo — try a clearer photo of one person". The message then says whether you were charged. When the model's maker billed the read, it adds "You were charged N credits for the model's attempt". When the maker did not bill it, it adds "You weren't charged", and the credits are refunded.

  • Other failures. A failure that the model's maker billed, such as an answer cut off at the limit or an answer that never matched the catalogs, is charged for that usage, and the error says how much. A failure that was not billed is refunded.

Troubleshooting

The run is refused with a message to connect a picker node. Nothing that the node can fill is wired to its output. Connect at least one Person, Styling, Framing, Lens or Camera / Film Stock picker.

A picker did not change after the run. Auto-apply on change may be off on that picker. Click Update from injected on the picker, or turn on Auto-apply on change.

The run fails with "We couldn't read anything in this photo". The model found no trait for any connected picker. The message says whether the attempt was charged. Try a clearer photo of one person.

The node described the wrong person. When a photo has several people or a busy background, add Extra guidance (optional), such as describe the woman in the red coat.

Tips

  • Fill several pickers in one run. Person, Styling and Framing together turn one photo into a casting, look and shot brief, in one call to the model.
  • Protect your own choices. Use Fill empty only when you have chosen a few defining traits by hand and want the photo to fill in the rest.
  • Refresh without losing extras. Use Overwrite detected (keep rest) to update what the photo shows and keep the choices you added by hand.
  • Recast from scratch. Use Full override (clear undetected) for a clean, photo-driven version of the picker.

From the API

POST /v1/describe-to-picker runs the same analysis from code. It answers in the same request with { jobId, pickerJson, gaps }. pickerJson gives each picker its detected values, as { "<picker>": { "<dimension>": "<id>" } }, with a list of ids where a dimension takes several picks.

FieldWhat it does
imageUrlRequired. A public http or https link to the photo.
targetPickersRequired. The pickers to fill, such as person, styling, framing, lens and camera-format.
instructionsExtra guidance (optional), up to 2,000 characters.
llmModelThe vision model. The default is gemini-3.8-flash.
reasoningEffortnone, low, medium, high, xhigh or max. Left out, the model runs at its own default, except claude-opus-5.5, which runs at high. none on claude-opus-5.5 runs without effort, on the default service instead of Anthropic's own service.
advancedMode, temperature, maxTokensAdvanced mode and its controls, on Gemini and Claude models. Claude models ignore Temperature.

Stream the answer. Send Accept: text/event-stream to receive the answer as server-sent events, so that a client can show each trait as soon as the model has written it. An error found before the stream opens, such as an invalid request or too few credits, is still a plain HTTP response with the usual JSON error body. The stream answers 200, and each event is one data: line with a JSON object, { "type", "data" }:

typedataMeaning
field{ "field": "<picker>.<dimension>", "value" }One detected trait, sent once, as soon as the model has written it. It is provisional: done can still correct it.
done{ jobId, pickerJson, gaps }The same answer as the JSON response. It is final.
error{ "code": "llm_error", "message" }The analysis failed after the stream opened. It is charged for any usage the model's maker billed, and the message says how much. Otherwise it is refunded.
  • The stream ends after done or error. Ignore comment lines, such as : keepalive.
  • With a Claude model run with a reasoning effort (Claude Opus 5.5 has High by default), or in Advanced mode, traits can arrive as field events. Other runs send only done, including the default model, Gemini 3.8 Flash, and a run that fell back to it.
  • A field event never carries a value that the rules for people under 20 could remove. Such values arrive only in done.
  • One request is one analysis, charged the same way as without a stream. It is charged for what it used when done arrives. On error, it is charged for any usage the model's maker billed, and refunded otherwise. If the client disconnects, the analysis still finishes and is charged.

See Run a single node.

Frequently asked questions

Which pickers can Describe to Picker fill?

Person, Styling, Framing, Lens and Camera / Film Stock. It fills exactly the ones you connect to its output, in one analysis.

How many credits does Describe to Picker cost?

A run is one vision call, charged for the tokens it used at the selected model's rate. The default, Gemini 3.8 Flash, is one of the cheapest models, and Claude Opus 5.5 and Claude Fable 5 are among the most expensive. Each connected picker makes the prompt longer, so it adds a little to the price. The Run button shows an estimate before you run.

Will it overwrite choices I made by hand?

That depends on each picker's When image JSON is injected setting. Fill empty only never overwrites your choices. Overwrite detected keeps everything that was not detected. Full override, the default, also clears everything that was not detected.

Why did nothing change on my picker?

Each picker has an Auto-apply on change setting. It is on by default and applies the values of every run at once. When it is off, click Update from injected on the picker to apply the new values, or turn Auto-apply on change back on.

Which AI model should I use for Describe to Picker?

The default, Gemini 3.8 Flash, is fast and costs the least. For the most thorough read, choose Claude Opus 5.5, which runs at High effort by default. It filled the most traits per image in our Vision Model Bake-off, and it is one of the node's most expensive models. Very high and Max made reads slower, not better.

What is the difference between Describe to Picker and Describe Image?

Describe Image writes free text. Describe to Picker returns structured choices that exist in each picker's catalog, so the pickers can apply them directly.

Last updated on

On this page