---
title: "Create product campaign images"
method: POST
path: "/v1/recipes/product_campaign_image"
tags: ["Recipes"]
---

# Create product campaign images

`POST /v1/recipes/product_campaign_image`

## Request

- Base URL: `https://api.dev.runwayml.com`
- URL: `https://api.dev.runwayml.com/v1/recipes/product_campaign_image`
- Auth: HTTP bearer

Generate four fashion campaign images from a product image and style brief.

## Headers

- `X-Runway-Version` '2024-11-06', required

## Request body

- object
  - `version` '2026-06' | 'unsafe-latest', required: Workflow version. Use a dated version (e.g. "2026-06") to pin behavior, or "unsafe-latest" to track the newest stable version (may break without notice).
  - `image` object, required: Product image to preserve across the generated campaign. See [our docs](/assets/inputs#images) on image inputs.
    - `uri` union, required: A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.
      - string: A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.
      - string: A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.
      - string: A data URI containing encoded media, up to 5MB.
  - `prompt` string, required: Style / creative brief for the fashion campaign, e.g. "High-key fashion editorial, gorpcore-meets-blokecore-meets-Y2K".

## Response `200`

The task that was created.

- object
  - `id` string, uuid, required: The ID of the task that was created. Use this to retrieve the task later.
  - `estimatedCost` object, required: The maximum credits this task may charge. The final amount may be lower after the task completes.
    - `credits` number, required: Estimated cost of the generation in credits.

## Other responses

- `400`: The request was rejected. Inspect `error` or `issues` (when present) and retry with a corrected request.
- `429`: You have exceeded the rate limit for this endpoint.

## Changes

- **2026-10-02** `ef7e1923afaf`: 1 info
  - added the optional property `reason` to the response with the `400` status
- **2026-08-07** `73a12c23285c`: 2 info
  - added the non-success response with the status `400`
  - added the required property `estimatedCost` to the response with the `200` status
- **2026-06-17** `28f5cd401a4b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/runwayml/apis/runwayml-api/changes/v1/recipes/product_campaign_image/post.md)

---

[API](https://skmtc.dev/runwayml/apis/runwayml-api.md) - [All operations](https://skmtc.dev/runwayml/apis/runwayml-api/llms.txt) - [OpenAPI document](https://skmtc.dev/runwayml/apis/runwayml-api/revisions/28f063131307?raw)
