---
title: "Advertisement Resizer"
method: POST
path: "/v2/tool/ad-resizer"
tags: ["edit-workflow"]
---

# Advertisement Resizer

`POST /v2/tool/ad-resizer`

Reframes the source creative to the exact requested ad resolution,
regenerating the layout so text and key elements stay legible at the
target size.

Supply `platform` to keep the whole advertisement clear of that
platform's own interface. The advertisement is generated at the largest
rectangle that fits inside the platform's published safe zone for the
requested aspect ratio, placed at that rectangle's position, and the
space around it is filled in so the returned image is still exactly the
requested resolution. Omit `platform` and the advertisement fills the
whole frame.

Safe zones are published per aspect ratio, and not every platform
publishes one for every ratio. `google` and `tiktok` publish `16:9`,
`1:1`, and `9:16`; `meta` and `snapchat` publish `9:16` only. A
`platform` combined with a `resolution` that platform has no safe zone
for is rejected with a 400.

The request is processed asynchronously. Poll
`GET /v1/generations/{generation_id}` with the returned `generation_id`
until the generation is completed or failed. The completed generation
reports the exact amount billed for the request in
`usage_cost_usd_micros`.

Supply the source creative as either an `AssetIdentifier` reference
(`image_asset_identifier`) or the raw image bytes directly (`image`,
multipart requests only). Provide exactly one of the two forms;
supplying both, or neither, is rejected with a 400.

## Request body

- AdResizerRequest — Supply the source creative as either an `AssetIdentifier` reference or (multipart requests only) raw image bytes; provide exactly one of the two forms. Supplying both, or neither, is rejected with a 400.
  - `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 source creative to reframe (max size 25MB), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Multipart requests only. Provide exactly one of `image_asset_identifier` or `image`.
  - `resolution` '300x250' | '336x280' | '300x600' | '1080x1080' | '1080x1350' | '1080x1920' | '1920x1080' | '728x90' | '160x600' | '970x250' | '320x50' | '300x50' | '320x100' | '1800x900' | '2400x2400' | '1200x3500' | '2880x2880' | '2560x3200' | '3200x2560' | '2448x3264' | '3264x2448' | '2336x3504' | '3504x2336' | '2240x3584' | '3584x2240' | '2160x3840' | '3840x2160' | '1920x3840' | '3840x1920' | '1280x3840' | '3840x1280', required — Target ad resolution, formatted as `WIDTHxHEIGHT`. Must be one of the supported ad resolutions listed above; any other value is rejected with a 400. Each returned image has exactly these pixel dimensions, whether or not a `platform` was supplied.
  - `platform` 'google' | 'meta' | 'snapchat' | 'tiktok' — The ad platform whose published safe zone the advertisement must stay inside. `google` covers YouTube and Google Ads placements; `meta` covers Facebook and Instagram. When supplied, the advertisement is generated inside that platform's safe zone for the requested aspect ratio and the remaining space is filled in around it. When omitted, the advertisement fills the whole frame. Any other value is rejected with a 400.
  - `prompt` string — Optional edit instruction to apply while reframing, for example "remove the logo" or "put the price bottom-right".
  - `quality` 'very_low' | 'low' | 'medium' | 'high' | 'very_high' — The generation quality level. Higher levels may use more inference steps or additional prompt processing. `very_high` generates multiple candidates internally and returns the strongest result, so it has noticeably higher latency and cost than the other levels.
  - `num_images` integer — The number of reframed variations to generate.
  - `private` boolean — When true or omitted, the output is kept private to your account. Set to false to publish the output to the public feed. Enterprise accounts always generate privately.
  - `webhook_url` string, uri — HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a JSON POST to this URL once all images for the request have finished generating. The body mirrors the synchronous generate response: `request_id`, `created`, and a `data` array containing every generated image (`url`, `prompt`, `resolution`, `seed`, `is_image_safe`). Each delivery is signed with Ed25519 and verifiable against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS; private and loopback hosts and the cloud metadata service are rejected.

## Response `200`

Ad resize accepted for asynchronous processing.

- AdResizerResponse — Acknowledgement that the ad resize was accepted. Poll `GET /v1/generations/{generation_id}` for status and results.
  - `generation_id` string, required — URL-safe base64 ID accepted by the generation polling endpoint.

## Other responses

- `400` — Invalid input provided.
- `401` — Unauthorized.
- `402` — Insufficient credits or quota.
- `403` — Not authorized to resize an ad.
- `404` — Source asset not found.
- `422` — The prompt was rejected by safety checks.
- `429` — Too many requests.

## Changes

- **2026-09-19** `4e95197be44a` — 10 breaking, 10 info
  - removed the enum value `HIGH` of the request property `quality` (media type: multipart/form-data)
  - removed the enum value `HIGH` of the request property `quality` (media type: application/json)
  - removed the enum value `LOW` of the request property `quality` (media type: multipart/form-data)
  - removed the enum value `LOW` of the request property `quality` (media type: application/json)
  - …16 more
- **2026-09-04** `e13832ef4c18` — 2 info
  - added the new optional request property `platform` (media type: multipart/form-data)
  - added the new optional request property `platform` (media type: application/json)
- **2026-09-02** `1429d75daa36` — 2 info
  - added the media type `application/json` for the response with the status `402`
  - added the media type `application/json` for the response with the status `429`
- **2026-08-27** `3eb3216eed39` — 2 info
  - added the new `VERY_HIGH` enum value to the request property `quality` (media type: multipart/form-data)
  - added the new `VERY_HIGH` enum value to the request property `quality` (media type: application/json)
- **2026-08-22** `015774bae5bc` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/tool/ad-resizer/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/4e95197be44a?raw)
