reference_images attached it edits/composes from them (put a product on a model, restyle a photo, keep a face consistent); without references it generates purely from text.
Routing
The defaultmodel: "auto" routes by whether references are attached:
- With
reference_images→nano-banana-2(reference-driven editing/composition). - Without →
gpt-image-2(text-to-image).
model explicitly, with one hard rule: nano-banana-2 requires at least one reference image — it is an edit model and a ref-less request to it is rejected with a 400.
Arguments
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | yes | — | What to generate, or the edit to apply to the references. |
reference_images | array of strings (URLs) | no | — | Up to 14 publicly fetchable image URLs. Attaching any requires owns_references: true. |
owns_references | boolean | with refs | — | Likeness-consent attestation, identical to make_video: required true when references are attached, otherwise 400 with no debit; persisted on the run with a timestamp as an audit trail. |
model | string | no | "auto" | One of auto, nano-banana-2, gpt-image-2. |
aspect_ratio | string | no | "9:16" | One of 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9. |
resolution | string | no | "1k" | One of 1k, 2k, 4k. Higher resolutions cost more — see pricing. |
count | number | no | 1 | Number of images to generate, 1–4 — all are variations of the same prompt. For distinct scenes or outfits, submit one run per prompt. Cost is per image. |
enhance_prompt | boolean | no | false | Rewrite a rough prompt via a prompt-writing model before generation (+3 credits); both prompts are stored and searchable. Same semantics as make_video. |
influencer | string | no | — | Slug of a saved influencer. The server attaches its portrait + character sheet as references and prepends its appearance description to your prompt, keeping the same character across generations. An unknown slug → 400, no debit. |
Example — text-to-image
Example — reference-driven edit
Response
202 with run_id and credits_charged; poll GET /api/v1/runs/{run_id}. On completed, output is an array of durable image URLs — one per count. On failed, credits are refunded instantly.