---
title: "Reframe an image with Ideogram 3.0, by asset id or by uploaded bytes"
method: POST
path: "/v2/image/reframe/ideogram-3"
tags: ["images-reframe"]
---

# Reframe an image with Ideogram 3.0, by asset id or by uploaded bytes

`POST /v2/image/reframe/ideogram-3`

Expand an image to a new Ideogram 3.0 resolution. The source pixels
are preserved in the center and Ideogram fills the new area. Supply
exactly one source: an `AssetIdentifier` reference
(`image_asset_identifier`) or raw image bytes (`image`, multipart
requests only). Supplying both forms, or neither, is rejected.

Optional style controls are mutually exclusive. Supply at most one of
`style_preset`, `style_codes`, `style_reference_asset_identifiers`, or
raw `style_reference_images` (multipart requests only). Each style
reference transport accepts at most 10 images.

By default the request blocks until the images are ready and returns
them in `data`. Set `async` to true to return immediately, then poll
`GET /v1/generations/{generation_id}`.

## Query parameters

- `dry_run` boolean

## Request body

- ReframeImageIdeogramV3Request — Provide exactly one of `image_asset_identifier` or `image` for the source. Style controls are optional; when used, provide only one of `style_preset`, `style_codes`, `style_reference_asset_identifiers`, or `style_reference_images`.
  - `image_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `image` string, binary — The JPEG, PNG, or WEBP image to reframe (max 25MB), as raw bytes. Multipart requests only. Provide exactly one of `image_asset_identifier` or `image`.
  - `resolution` '512x1536' | '576x1408' | '576x1472' | '576x1536' | '640x1344' | '640x1408' | '640x1472' | '640x1536' | '704x1152' | '704x1216' | '704x1280' | '704x1344' | '704x1408' | '704x1472' | '736x1312' | '768x1088' | '768x1216' | '768x1280' | '768x1344' | '800x1280' | '832x960' | '832x1024' | '832x1088' | '832x1152' | '832x1216' | '832x1248' | '864x1152' | '896x960' | '896x1024' | '896x1088' | '896x1120' | '896x1152' | '960x832' | '960x896' | '960x1024' | '960x1088' | '1024x832' | '1024x896' | '1024x960' | '1024x1024' | '1088x768' | '1088x832' | '1088x896' | '1088x960' | '1120x896' | '1152x704' | '1152x832' | '1152x864' | '1152x896' | '1216x704' | '1216x768' | '1216x832' | '1248x832' | '1280x704' | '1280x768' | '1280x800' | '1312x736' | '1344x640' | '1344x704' | '1344x768' | '1408x576' | '1408x640' | '1408x704' | '1472x576' | '1472x640' | '1472x704' | '1536x512' | '1536x576' | '1536x640', required — The resolutions supported for Ideogram 3.0.
  - `num_images` integer — The number of images to generate.
  - `seed` integer — Random seed. Set for reproducible generation.
  - `rendering_speed` 'turbo' | 'default' | 'quality'
  - `style_preset` '80s_illustration' | '90s_nostalgia' | 'abstract_organic' | 'analog_nostalgia' | 'art_brut' | 'art_deco' | 'art_poster' | 'aura' | 'avant_garde' | 'bauhaus' | 'blueprint' | 'blurry_motion' | 'bright_art' | 'c4d_cartoon' | 'childrens_book' | 'collage' | 'coloring_book_i' | 'coloring_book_ii' | 'cubism' | 'dark_aura' | 'doodle' | 'double_exposure' | 'dramatic_cinema' | 'editorial' | 'emotional_minimal' | 'ethereal_party' | 'expired_film' | 'flat_art' | 'flat_vector' | 'forest_reverie' | 'geo_minimalist' | 'glass_prism' | 'golden_hour' | 'graffiti_i' | 'graffiti_ii' | 'halftone_print' | 'high_contrast' | 'hippie_era' | 'iconic' | 'japandi_fusion' | 'jazzy' | 'long_exposure' | 'magazine_editorial' | 'minimal_illustration' | 'mixed_media' | 'monochrome' | 'nightlife' | 'oil_painting' | 'old_cartoons' | 'paint_gesture' | 'pop_art' | 'retro_etching' | 'riviera_pop' | 'spotlight_80s' | 'stylized_red' | 'surreal_collage' | 'travel_poster' | 'vintage_geo' | 'vintage_poster' | 'watercolor' | 'weird' | 'woodblock_print' — A predefined style preset that applies a specific artistic style to the generated image.
  - `color_palette` union — A color palette for generation, must EITHER be specified via one of the presets (name) or explicitly via hexadecimal representations of the color with optional weights (members).
    - IdeogramColorPaletteWithPresetName — A color palette specified only via its name. Cannot be used in conjunction with members.
      - `name` 'ember' | 'fresh' | 'jungle' | 'magic' | 'melon' | 'mosaic' | 'pastel' | 'ultramarine', required — A color palette preset value.
    - ColorPaletteWithMembers — A color palette represented only via its members. Cannot be used in conjunction with preset name.
      - `members` ColorPaletteMember[], required — A list of ColorPaletteMembers that define the color palette. Each color palette member consists of a required color hex and an optional weight between 0.05 and 1.0 (inclusive). It is recommended that these weights descend from highest to lowest for the color hexes provided.
        - `color_hex` string, required — The hexadecimal representation of the color with an optional chosen weight.
        - `color_weight` number — The weight of the color in the color palette.
  - `style_codes` StyleCode[] — A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images.
  - `style_reference_asset_identifiers` AssetIdentifier[] — Existing upload or generated image assets to use as style references. Cannot be combined with a style preset, style codes, or uploaded style reference images.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `style_reference_images` string[] — JPEG, PNG, or WEBP style reference images (max 10, max 25MB each), as raw bytes. Multipart requests only. Cannot be combined with a style preset, style codes, or referenced style assets.
  - `async` boolean — Return immediately instead of waiting for reframed images.

## Response `200`

The reframed images, or an acknowledgement for an asynchronous request.

- ReframeImageIdeogramV3Response — Synchronous requests (the default) include the reframed images in `data`. Requests with `async` set to true omit `data`; poll for completion and results with `GET /v1/generations/{generation_id}`. The seed reports the value the request resolved to when the caller left it unset.
  - `generation_id` string, required — URL-safe base64 ID of the accepted generation. Accepted by the `GET /v1/generations/{generation_id}` polling endpoint.
  - `data` GeneratedImageObject[] — The reframed images, in generation order. Present only for synchronous requests (`async` omitted or false).
    - `url` string, uri, nullable — The direct link to the generated image. Empty when the image did not pass safety checks.
    - `prompt` string, required — The final prompt the image was generated from.
    - `resolution` string, required — The resolution of the generated image, formatted as "WIDTHxHEIGHT".
    - `is_image_safe` boolean, required — Whether the image passed safety checks. If false, `url` is empty.
    - `seed` integer, required — Random seed. Set for reproducible generation.
  - `seed` integer, required — Random seed. Set for reproducible generation.

## Other responses

- `400` — Invalid input provided.
- `401` — Unauthorized.
- `402` — Insufficient credits or quota.
- `404` — A referenced source or style asset was not found.
- `429` — Too many requests.
- `500` — Internal server error.
- `503` — The endpoint is temporarily unavailable.

## Changes

- **2026-09-27** `987f73fc82de` — 4 info
  - added the optional property `max_inflight_requests` to the response with the `402` status
  - added the optional property `max_inflight_requests` to the response with the `429` status
  - added the optional property `task_completion_speed` to the response with the `402` status
  - added the optional property `task_completion_speed` to the response with the `429` status
- **2026-09-19** `4e95197be44a` — 132 breaking, 134 info
  - removed the enum value `80S_ILLUSTRATION` of the request property `style_preset` (media type: multipart/form-data)
  - removed the enum value `80S_ILLUSTRATION` of the request property `style_preset` (media type: application/json)
  - removed the enum value `90S_NOSTALGIA` of the request property `style_preset` (media type: multipart/form-data)
  - removed the enum value `90S_NOSTALGIA` of the request property `style_preset` (media type: application/json)
  - …262 more
- **2026-09-17** `9d3ff2d98e27` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/image/reframe/ideogram-3/post.md)

---

[API](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0.md) · [All operations](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/llms.txt) · [OpenAPI document](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/revisions/987f73fc82de?raw)
