Skip to main content

Identity is a layer that has to be learned.

Generic image models such as Nano Banana 2 and 2.1, GPT Image 2 and 2.5, Qwen Image 2, Flux 2 Dev, Flux 2 Pro, and Seedream 5.0 Pro have different strengths: world knowledge, text rendering, aesthetic defaults, cost profile. They’ve all shipped in roughly a year and the frontier keeps moving. What every one of them is missing is personal knowledge of a specific person. That’s what Phota’s identity layer adds. The identity layer composes on top of whichever base model you pick — so you choose the generic model that best fits your use case, and Phota handles identity for you. For more background, see Every Frontier Model Can Be Personalized for You. You select the base model per request with the base_model parameter. Identity preservation is applied automatically whenever a trained profile is referenced.

Supported models

See Pricing for the exact rates. If you omit base_model, requests run on Nano Banana 2.
We plan to make Nano Banana 2.1 (nb2.1) the default base model in a future release. To keep running on Nano Banana 2 after that, pass base_model: "nb2" explicitly.

Where base_model applies

  • /edit — accepts base_model. Defaults to nb2.
  • /generate — accepts base_model. Defaults to nb2.
  • /enhance — does not accept base_model. Enhancement is pinned to Nano Banana 2 at 2K.

Custom resolution (GPT Image models only)

On /edit and /generate, set custom_resolution to an exact "WIDTHxHEIGHT" string:
Both dimensions must be multiples of 16, neither may exceed 3840 pixels, and the longer edge must be at most three times the shorter edge. The pixel count must be between 655,360 and 8,294,400, inclusive. These are OpenAI’s own limits, so any size accepted here is one the model will render. "3840x2160" and "2880x2880" sit exactly on the ceiling; "3840x2176" is over it, and "4096x1376" exceeds the edge limit. Sizes above 3,686,400 pixels are reserved at the 4K rate and settle on actual usage, like every other size. Omit resolution and aspect_ratio when using custom_resolution. The custom size replaces the default "1K" tier; combining it with "2K", "4K", or any explicit aspect_ratio is rejected. Other base models reject custom_resolution with HTTP 400. The existing resolution presets remain available, including their larger sizes. Custom sizes also work with async: true and response_mode: "urls".

Quality tier (GPT Image models only)

/edit and /generate accept an optional quality parameter — "auto", "low", "medium", or "high" — when base_model is gpt-image-2, gpt-image-2.5-sunburst, or gpt-image-2.5-flare. Omitting it lands on "auto". gpt-image-2.5-sunburst and gpt-image-2.5-flare also accept "xhigh" and "max". GPT Image 2 rejects these two tiers with HTTP 400. Sending quality with any other base model returns HTTP 400. Billing is token-driven, so lower tiers produce fewer output tokens and cost less per request.

Example: pick a base model explicitly


Next steps

Pricing

Per-image and token-metered rates for every supported base model.

Profiles guide

Create and manage profiles for identity preservation.

Quickstart

Walk through the full workflow with code examples.