---
title: Ad Localization
description: The Ad Localization Recipe localizes an existing ad image for a target language — preserving visual creative and layout while adapting on-screen messaging.
---

The **Ad Localization** Recipe localizes an existing ad image for a target language. Provide a reference ad and a `targetLanguage` code — the Recipe returns a localized version that keeps the visual creative and layout while adapting on-screen text.

# How it works

Provide a `referenceImage` of the ad to localize and a `targetLanguage` ISO-style code (for example `ja` for Japanese or `es` for Spanish). The Recipe returns a task you wait on for the localized output image.

# Inputs

| Input | Required | Description |
| --- | --- | --- |
| `version` | Yes | Workflow version. Use a dated version like `2026-06` to pin behavior, or `unsafe-latest` to track the newest stable version. |
| `referenceImage` | Yes | Reference ad image to localize, as `{ uri }`. |
| `targetLanguage` | Yes | Target language code — for example `ja`, `es`, `zh`, `zh-Hant`, `fr`, `de`, `ko`, `pt`, `ar`, and others supported by the Recipe. |

`uri` accepts an HTTPS URL, a Runway upload URI, or a [data URI](/assets/inputs#images).

# Example

<Tabs syncKey="language">
  <TabItem label="Node">
    <Code code={codeSample`
    import RunwayML from '@runwayml/sdk';

```
const client = new RunwayML();

const task = await client.recipes.adLocalization({
  version: '2026-06',
  referenceImage: { uri: 'https://example.com/source-ad.jpg' },
  targetLanguage: 'ja',
}).waitForTaskOutput();

console.log(task);
`.trim()} lang="ts" />
```

  </TabItem>
  <TabItem label="Python">
    <Code code={codeSample`
    from runwayml import RunwayML

```
client = RunwayML()

task = client.recipes.ad_localization(
  version='2026-06',
  reference_image={'uri': 'https://example.com/source-ad.jpg'},
  target_language='ja',
).wait_for_task_output()

print(task)
`.trim()} lang="python" />
```

  </TabItem>
  <TabItem label="cURL">
    ```sh
    curl -X POST https://api.dev.runwayml.com/v1/recipes/ad_localization \
      -d '{
        "version": "2026-06",
        "referenceImage": { "uri": "https://example.com/source-ad.jpg" },
        "targetLanguage": "ja"
      }' \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $RUNWAYML_API_SECRET" \
      -H "X-Runway-Version: 2024-11-06"
    ```
  </TabItem>
</Tabs>

The SDK examples wait for the finished output. With cURL, poll `GET /v1/tasks/{id}` for status and the output image URL — see [Using the API](/guides/using-the-api).

# Tips for best results

* Use a high-resolution source ad with readable on-screen text.
* Pick the `targetLanguage` that matches the market you are localizing for — codes are ISO-style (for example `ja`, not `Japanese`).
* Source ads with clear typography and contrast localize more reliably than heavily stylized layouts.
* See [Reference media guidelines](/recipes/reference-media) for image input guidance.

# Reference

<LinkCard
title="Ad Localization API Reference"
description="See the full request and response schema in the interactive explorer."
href="/api#tag/Recipes/paths/~1v1~1recipes~1ad_localization/post"
/>

# Related

* [Marketing Stock Image](/recipes/marketing-stock-image) — on-brand stock imagery
* [Product Campaign Image](/recipes/product-campaign-image) — campaign visuals from a product photo
