Skip to main content
POST
Edit an image with a prompt (Magic Edit)
Soumets une image source et un prompt décrivant l’édition. L’appel renvoie 202 Accepted avec un id de job ; interroge GET /images/edits/{id} pour le résultat. L’objet image prend exactement un parmi image_id, url, ou base64 + mime_type.

Exemple : édition avec masque à partir d’une URL

Fournis la source par url, ajoute un mask d’inpaint (sa présence sélectionne le mode PRO), et réutilise un modèle style. Le mask est une image encodée en base64 marquant la région à éditer.
Envoie exactement un mode de source dans image. Omets mask pour une édition uniquement textuelle (SIMPLE). resolution s’applique uniquement à nano_banana_pro ; omets-le pour les autres engines. num_images (1–4) vaut 1 par défaut.

Autorisations

Authorization
string
header
requis

Organization API key as a bearer token: Authorization: Bearer samsa_sk_....

Corps

application/json

POST /images/edits body (ADR §8, §10) — Magic Edit.

Supply a prompt and a source image; optionally a mask (auto-selects PRO mode), trained models you own (including your own private models) or shared within your organization (style_id/object_ids/person_ids/ setting_ids, color_palette_id — any of these forces the nano_banana_pro engine, mirroring the app), and an engine (a public-safe alias of the internal edit model). num_images defaults to 1.

image
PublicImageEditSource · object
requis

The source image: exactly one of image_id, url, or base64+mime_type.

prompt
string
requis

Text prompt describing the edit. Runs the same validation as the app (rejects empty / malformed / policy-violating prompts with a 422).

Minimum string length: 1
Exemple:

"Replace the sky with a dramatic sunset"

mask
PublicImageEditMask · object | null

Optional inpaint mask. When present, the edit runs in PRO (mask-based) mode — supported only by the nano_banana_pro and gemini engines (or when trained models force nano_banana_pro).

engine
string | null

Edit engine — one of nano_banana_pro (default), gemini, or kontext. Omit to use the default. Unknown engines return 422.

Exemple:

"nano_banana_pro"

style_id

A style model NAME or its UUID id (from list_models), resolved within your visible set — a model you own (including your own private models) or a non-private one shared with your organization. A name matching more than one visible model is rejected — pass the id. Forces the nano_banana_pro engine.

object_ids
(string<uuid> | string)[]

object models to compose in — each a model NAME or its UUID id (from list_models), resolved within your visible set (a model you own, including private, or a non-private one your organization shares). A name matching more than one visible model is rejected — pass the id.

person_ids
(string<uuid> | string)[]

person models to compose in — each a model NAME or its UUID id (from list_models), resolved within your visible set (a model you own, including private, or a non-private one your organization shares). A name matching more than one visible model is rejected — pass the id.

setting_ids
(string<uuid> | string)[]

setting models to compose in — each a model NAME or its UUID id (from list_models), resolved within your visible set (a model you own, including private, or a non-private one your organization shares). A name matching more than one visible model is rejected — pass the id. Maps to internal scenes.

color_palette_id

A color palette NAME or its UUID id, resolved within your visible set — a palette you created (including private ones) or a non-private palette shared with your organization. A name matching more than one visible palette is rejected — pass the id. Forces the nano_banana_pro engine.

resolution
string | null

Output resolution — 1K, 2K, or 4K. Only the nano_banana_pro engine supports it (credits scale 1K:1x, 2K:2x, 4K:4x; omitted = 1K); omit for the other engines.

Exemple:

"1K"

num_images
integer
défaut:1

Number of edited images to generate (1-4). Defaults to 1; each output is billed.

Plage requise: 1 <= x <= 4
Exemple:

1

output_format
enum<string>
défaut:png

Encoding of the returned images. v1 supports png only.

Options disponibles:
png
Exemple:

"png"

webhook_url
string | null

Optional https webhook notified once on terminal status (signed per the webhook signature scheme; see the webhooks docs).

Exemple:

"https://example.com/webhooks/samsa"

Réponse

Successful Response

202 body for POST /images/edits (ADR §7.1).

id
string<uuid>
requis

The image-edit job id — poll GET /images/edits/{id}.

status
enum<string>
requis

Initial status: always pending at submit.

Options disponibles:
pending,
processing,
completed,
failed,
cancelled
Exemple:

"pending"

estimated_credits
integer
requis

Credits this job is expected to cost (base 5 x num_images x resolution multiplier for nano_banana_pro).

Exemple:

5