Changelog

API releases and changes, newest first.

Strict geometry validation

2026-07-15
  • aspect_ratio is 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 400 ERR_INVALID_REQUEST before any charge, instead of rendering 1:1.
  • Omitting aspect_ratio renders 1:1 — now stated explicitly on POST /images/generate. Set it explicitly for any non-square image.
  • resolution is validated the same way: one of 1K, 2K, 4K (case-insensitive), defaulting to 2K when omitted. An unsupported tier is rejected with 400 ERR_INVALID_REQUEST before any charge, instead of being served — and billed — as 2K.
  • Breaking: the two fields width and height were never part of the geometry contract and were previously ignored; sending either one now returns 400 ERR_INVALID_REQUEST before any charge. Output geometry is aspect_ratio + resolution only — if your integration sent width/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 n parameter is no longer supported on image endpoints. Each request produces exactly one image; a request with n greater than 1 is rejected with 400 ERR_INVALID_REQUEST before any charge. To generate several images, send parallel requests — one per image — within your account limits.
  • resolution now documents and enforces its default: omitting it generates at 2K and bills the 2k variant. The internal default pricing variant is retired and no longer appears in GET /models variants[].
  • A failed creation's error field is now one of four fixed 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 error field 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_urls parameter on POST /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_urls is mutually exclusive with image_file_id / image_file_ids; a request naming both fails with 400 ERR_INVALID_REQUEST.
  • URL failures (blocked target, oversize, wrong content type, timeout) reject the request before any charge with details.url naming 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, and required (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 currency field on GET /models — the authoritative denomination marker for every money amount in the response.

Public launch

2026-07-02