BRUT DOCS getbrut.app ↗

OpenAI

OpenAI provides GPT Image 2 and the GPT Image 2.5 pair (Flare and Sunburst) for images, and GPT text models for planning.

Get a key

Create a key at platform.openai.com/api-keys and paste it into ⚙ Settings → OpenAI.

Like Gemini, image generation needs a billing-enabled account — a first-call 429 means billing, not a rate limit.

Models

GPT Image 2 stays first in the menu and the default for new nodes (and for the Director's proof sheet) for now. Without an OpenAI key, both 2.5 models also run through OpenRouter: the aspect ratio and the full quality menu come through, the size stays at about 1K, and masks need the OpenAI key.

What GPT Image 2 and 2.5 cost

GPT Image 2 is token-billed, so the real price depends on size × quality × aspect ratio. Brut ships a measured square-baseline table (from under a cent at 1K low up to ~$0.71 at 4K high) and shows the estimate before any paid run. GPT Image 2.5 Flare and Sunburst bill at the same token rates ($8/M image input, $30/M image output, per OpenAI's model pages) but the quality tiers are shifted: 2.5 max bills exactly what GPT Image 2 bills at high (1K $0.21 · 2K $0.43 · 4K $0.71), 2.5 high bills about GPT Image 2's medium (1K $0.054), and low / medium / xhigh sit around them (1K: $0.007 / $0.015 / $0.095). Same output for less, or better output for the same money, your pick. Flare and Sunburst bill identically at every tier, so Brut ships the same fully measured table for both. Things to know:

Text / planning models

The reasoning dial (GPT-5.6 and GPT-6)

GPT-5.6 and GPT-6 models can think before answering, and Brut exposes the dial: none · low · medium · high · xhigh (leave it on default to let OpenAI pick). Higher settings give deeper answers and cost more — reasoning tokens are billed as output tokens, so an xhigh answer can spend several times the tokens of the visible text. The dial appears on the Text → Text node, on the Director (and the legacy crew agents), and — for Marcel's brain lane — in ⚙ Settings; always only when the selected model actually supports it. Changing it re-plans, like any input change.

Marcel on GPT-5.6 and GPT-6 Sol / Luna. With your own OpenAI key, Marcel runs these models with reasoning set to none, because OpenAI only lets them act on the canvas at that setting; Settings shows it fixed. Through OpenRouter the dial stays free. Text → Text and the Director keep the full dial. GPT-5.5 and GPT-5.4 Mini have no dial.

Inpainting with a mask

OpenAI takes an Inpaint mask as its native mask input. The mask steers where the change goes, but it doesn't lock the rest: GPT Image 2 and 2.5 redraw the whole image, so the area outside the mask comes back close to the original, not pixel-identical. OpenAI's image guide says so: "Masking with GPT Image is entirely prompt-based. The model uses the mask as guidance, but may not follow its exact shape with complete precision." When the rest must stay pixel-exact, stack the result over the original in a Layers node and mask it to the region you changed.

Edits can lose a few edge pixels. An edit can lose up to 15 pixels at its edges so its size matches what OpenAI renders; nothing is stretched.

The output is the input's size. The result comes back at your input's size with a mask, or at the input's shape at the size you pick (1K / 2K / 4K).

Notes