---
title: "Rebuild an advertisement in another language"
method: POST
path: "/v2/tool/ad-localizer"
tags: ["edit-workflow"]
---

# Rebuild an advertisement in another language

`POST /v2/tool/ad-localizer`

Rebuilds the source advertisement for one target language. Layout,
logos, brand type, and the product are preserved; the visible marketing
copy is what changes.

Without `exact_copy` the copy is translated. Supply `exact_copy` to
place wording that has already been approved, character for character,
instead of translating it.

The output keeps the source advertisement's own shape and is generated
at a frame derived from it, so neither the shape nor the size is asked
for.

One request localizes into one language. Localize into several languages
by submitting one request per language.

The request is processed asynchronously. Poll
`GET /v1/generations/{generation_id}` with the returned `generation_id`
until the generation is completed or failed.

Supply the source advertisement 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

- AdLocalizerRequest — Supply the source advertisement 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 advertisement to localize (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`.
  - `language` 'ar' | 'cs' | 'da' | 'de' | 'en' | 'es' | 'fi' | 'fr' | 'fr-ca' | 'hu' | 'it' | 'ja' | 'nl' | 'no' | 'pl' | 'pt' | 'sv', required — The target language the copy is rebuilt in. Arabic is rendered right-to-left.
  - `exact_copy` string — Pre-approved wording, one `original => replacement` mapping per line. Each mapping names the text element showing `original` and sets it to `replacement`, placed character for character rather than translated. Any text element not listed is left as it is in the source. When omitted, all visible marketing copy is translated.
  - `prompt` string — Optional additional direction for the localization, for example "keep the badge in English". It takes priority over the preservation rules for anything it explicitly asks to change.
  - `quality` 'LOW' | 'MEDIUM' | 'HIGH' — The quality tier for the image edit. Higher tiers may improve detail and take longer to complete.
  - `seed` integer — Random seed. Set for reproducible generation.
  - `num_images` integer — Number of localized variations to create for this language.
  - `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 localization accepted for asynchronous processing.

- AdLocalizerResponse — Acknowledgement that the workflow was accepted.
  - `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` — This account or mini app is not authorized to use Ad Localizer.
- `404` — An input asset was not found or is not readable.
- `422` — The instruction did not pass prompt safety checks.
- `429` — Too many requests.

## Changes

- **2026-09-18** `cb077a6ff580` — 1 info
  - endpoint added

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