Changelog
API releases and changes, newest first.
Balance endpoint and faster failure verdicts
2026-08-26- New:
GET /balancereturns the spendable balance of the wallet your credential bills, as{ currency, balance }. See Balance. - A job the rendering backend rejects (for example a safety refusal) now reaches
failedwithin a couple of minutes of the rejection instead of three to eight. Refunds and the job status contract are unchanged.
Single reference images: fix and a stricter request check
2026-08-26- Fixed: a request with exactly one reference image (
image_file_idor a singleimage_urlsentry) could be rendered without that reference on some rendering backends. The reference now reaches every backend. - New request check:
image_file_idandimage_file_idsin the same request now fail with400 ERR_INVALID_REQUESTbefore anything is charged. Previously the plural won silently and the singular was dropped. Send one or the other. See Input images.
More reference images by URL
2026-08-13image_urlsnow accepts up to 14 source-image URLs, matchingimage_file_idsand the provider's own per-request limit. It was capped at 4, which was an accident of the field's introduction rather than a provider constraint — the upload-first flow has taken 14 since it shipped.- Nothing else changes: each URL is still downloaded server-side and validated exactly like an upload, and a failure still rejects the request before any charge. Requests already sending 1–4 URLs are unaffected.
Per-account provider configuration
2026-08-08- Accounts can now be configured (by arrangement with us) to use a fixed subset of the rendering backends — for example, to disable the automatic fallback when your own pipeline already provides one.
- New pre-charge refusal: when your account's configuration cannot render the requested
resolutionfor a model, the request fails immediately with400 ERR_INVALID_REQUESTanddetails.reason = provider_policy_no_route— nothing is charged, and retrying the identical request will not succeed. Changeresolutionor contact support. See Errors.
Clearer failed-creation error values
2026-08-07- The
errorvalue"Provider returned no image."is replaced with"Generation failed. Please try again."— a retry is the remedy that works for this failure class. Historical failed creations return the new wording too. If your integration matcheserrorstrings, update it — the full current set is in Failed creations. - A refusal aimed at the source photo gets its own value (since 2026-08-05):
"The source image was rejected. Try a different photo."— previously undocumented here. - More of the model's text-refusal phrasings are now recognised as content verdicts, so those failures read as the safety-filter message instead of the no-image one.
Strict geometry validation
2026-07-15aspect_ratiois now validated against the supported list —1:1,16:9,9:16,4:3,3:4,2:3,3:2,5:4,4:5,21:9. An unsupported value is rejected with 400ERR_INVALID_REQUESTbefore any charge, instead of rendering1:1.- Omitting
aspect_ratiorenders1:1— now stated explicitly onPOST /images/generate. Set it explicitly for any non-square image. resolutionis validated the same way: one of1K,2K,4K(case-insensitive), defaulting to2Kwhen omitted. An unsupported tier is rejected with 400ERR_INVALID_REQUESTbefore any charge, instead of being served — and billed — as2K.- Breaking: the two fields
widthandheightwere never part of the geometry contract and were previously ignored; sending either one now returns 400ERR_INVALID_REQUESTbefore any charge. Output geometry isaspect_ratio+resolutiononly — if your integration sentwidth/height, replace them with those two parameters (the error message names them, and lists every supported value).
One image per request; 2K default resolution
2026-07-11- Breaking: the
nparameter is no longer supported on image endpoints. Each request produces exactly one image; a request withngreater than 1 is rejected with 400ERR_INVALID_REQUESTbefore any charge. To generate several images, send parallel requests — one per image — within your account limits. resolutionnow documents and enforces its default: omitting it generates at 2K and bills the2kvariant. The internaldefaultpricing variant is retired and no longer appears inGET /modelsvariants[].- A failed creation's
errorfield is now one of a fixed set of strings — see Failed creations.
Actionable safety-filter errors
2026-07-04- When the model's safety filter declines a prompt at generation time, the creation's
errorfield now explains what to change: specific, descriptive scene prompts pass, while abstract or meaningless phrases are declined more often. Historical failed creations return the new wording too. - A safety-filter decline is never charged — the up-front charge is refunded in full automatically. See Safety filter.
Image inputs by URL
2026-07-04- New optional
image_urlsparameter onPOST /images/generate— pass 1–4 source-image URLs directly instead of uploading first. Each URL is downloaded server-side, validated exactly like an upload (public http(s) only, 25 MiB cap, image content verification), and used as the input image(s). image_urlsis mutually exclusive withimage_file_id/image_file_ids; a request naming both fails with 400ERR_INVALID_REQUEST.- URL failures (blocked target, oversize, wrong content type, timeout) reject the request before any charge with
details.urlnaming the offending URL. See Input images.
USD pricing & per-resolution variants
2026-07-03- Pricing is now denominated in USD — every money amount on the API (
price,cost,required, wallet balances) is a USD value. - Money fields renamed:
price,cost, andrequired(the legacy ruble-suffixed names are no longer emitted). - Per-resolution (
1K/2K/4K) pricing for all image models — each resolution bills its own variant. See Models. - New top-level
currencyfield onGET /models— the authoritative denomination marker for every money amount in the response.
Public launch
2026-07-02POST /images/generate— asynchronous image generation withnano-banana-2andnano-banana-pro.POST /uploads— reference-image uploads for image-to-image workflows.GET /creations/{id}— job status and results.GET /models— model catalog with account-specific pricing.- Signed webhooks on creation completion and failure.
- Idempotent retries via
X-Idempotency-Key.