---
title: Product Ad
description: The Product Ad Recipe generates cinematic product ad videos from reference images of your product, optional style references, and creative direction.
---

The **Product Ad** Recipe turns reference images of your product into a polished, cinematic product ad video. Provide one or more product photos, optional style references, and creative direction, and the Recipe returns ad-ready motion you can drop into paid and organic channels.

# How it works

Submit one or more product images, then guide the result with optional style references, `productInfo`, and a `userConcept` describing the creative direction. The Recipe analyzes the product, builds a storyboard, and renders a short video. It returns a task you wait on for the finished output.

# Inputs

| Input | Required | Description |
| --- | --- | --- |
| `version` | Yes | Workflow version. Pin to `2026-07` (current public version) or `2026-06`. Use `unsafe-latest` to track the newest stable version. |
| `productImages` | Yes | One to ten reference images of the product as `{ uri }` objects, ideally from multiple angles. The first image is used as the primary product reference. |
| `styleImages` | No | Up to four style reference images (`{ uri }`) defining lighting, palette, and mood. Treated as a moodboard when multiple are provided. |
| `productInfo` | No | Product description and specifications to inform creative direction (max 2500 characters). |
| `userConcept` | No | Creative direction — brand voice, scene specifics, lighting, camera motion, and narrative (max 3500 characters). |
| `ratio` | No | Output aspect ratio: `1280:720`, `720:1280`, `960:960`, `834:1112`, `1920:1080`, `1080:1920`, `1440:1440`, or `1248:1664`. |
| `duration` | No | Output length in seconds (4–15). Defaults to 10. |
| `audio` | No | Whether to generate audio. Defaults to `false`. |

`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.productAd({
  version: '2026-07',
  productImages: [
    { uri: 'https://example.com/product-front.jpg' },
    { uri: 'https://example.com/product-side.jpg' },
  ],
  productInfo: 'Organic cold-pressed juice, 12oz glass bottle',
  userConcept: 'Bright, refreshing summer campaign with slow dolly moves',
  duration: 10,
}).waitForTaskOutput();

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

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

```
client = RunwayML()

task = client.recipes.product_ad(
  version='2026-07',
  product_images=[
    {'uri': 'https://example.com/product-front.jpg'},
    {'uri': 'https://example.com/product-side.jpg'},
  ],
  product_info='Organic cold-pressed juice, 12oz glass bottle',
  user_concept='Bright, refreshing summer campaign with slow dolly moves',
  duration=10,
).wait_for_task_output()

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

  </TabItem>
  <TabItem label="cURL">
    ```sh
    curl -X POST https://api.dev.runwayml.com/v1/recipes/product_ad \
      -d '{
        "version": "2026-07",
        "productImages": [
          { "uri": "https://example.com/product-front.jpg" },
          { "uri": "https://example.com/product-side.jpg" }
        ],
        "productInfo": "Organic cold-pressed juice, 12oz glass bottle",
        "userConcept": "Bright, refreshing summer campaign with slow dolly moves",
        "duration": 10
      }' \
      -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 video URL — see [Using the API](/guides/using-the-api).

# Tips for best results

* **Show the product from multiple angles.** Supply reference images of the product from multiple angles — front, back, and sides — so the model can depict it accurately and consistently throughout the video.
* Use high-resolution product photos with the product clearly isolated from its background.
* Keep the product centered and unobstructed; avoid busy backgrounds in the reference.
* Use `userConcept` to describe the scene and direction — let the product images define what the product looks like.
* See [Reference media guidelines](/recipes/reference-media) for more.

# Reference

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

# Related

* [Product Campaign Image](/recipes/product-campaign-image) — still campaign images instead of video
* [Product UGC](/recipes/product-ugc) — influencer-style promo videos
