Marketing Stock Image
The Marketing Stock Image recipe generates polished marketing stock images from a text brief. Describe the subject, audience, channel, and mood you need — and optionally supply a brand logo to guide the look — and it returns campaign-ready imagery without a photoshoot.
How it works
Section titled “How it works”Provide a prompt describing the marketing image you want, and optionally a brand logo as referenceImage to steer the result. The recipe generates one or more finished marketing stock images and returns a task id you poll for the output.
By default, the recipe returns 4 images at high quality. Use outputCount to request fewer variations (1–4), and quality (low, medium, or high) to trade off speed and cost against fidelity.
Inputs
Section titled “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. |
prompt | Yes | Marketing image brief. Describe the subject, audience, channel, desired mood, setting, and any constraints (max 3500 characters). |
referenceImage | No | Optional brand logo image to guide the result, as { uri }. |
outputCount | No | Number of images to generate, from 1 to 4. Defaults to 4. Each additional image adds credits at the selected quality tier; prompt processing is a fixed cost per call. |
quality | No | Generation quality: low, medium, or high. Defaults to high. Lower values are faster and cheaper — see Expected latency below. |
uri accepts an HTTPS URL, a Runway upload URI, or a data URI.
Expected latency
Section titled “Expected latency”With outputCount set to 1, typical end-to-end task times look like this:
quality | Typical time |
|---|---|
low | ~40–45 seconds |
medium | ~65–75 seconds |
high | ~3 minutes |
Times vary with prompt complexity and system load. Higher outputCount values increase total task time because the recipe generates each image separately.
Example
Section titled “Example”import RunwayML from '@runwayml/sdk';
const client = new RunwayML();
const task = await client.recipes.marketingStockImage({ version: '2026-06', prompt: 'Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left', referenceImage: { uri: 'https://example.com/brand-logo.png' },});
console.log(task);from runwayml import RunwayML
client = RunwayML()
task = client.recipes.marketing_stock_image( version='2026-06', prompt='Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left', reference_image={'uri': 'https://example.com/brand-logo.png'},)
print(task)curl -X POST https://api.dev.runwayml.com/v1/recipes/marketing_stock_image \ -d '{ "version": "2026-06", "prompt": "Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left", "referenceImage": { "uri": "https://example.com/brand-logo.png" } }' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $RUNWAYML_API_SECRET" \ -H "X-Runway-Version: 2024-11-06"The recipe returns a task id. Poll GET /v1/tasks/{id} for status and the output image URLs — see Using the API for the task workflow.
Single image example
Section titled “Single image example”When you only need one option — or want a faster, lower-cost generation — set outputCount to 1 and choose a lower quality:
import RunwayML from '@runwayml/sdk';
const client = new RunwayML();
const task = await client.recipes.marketingStockImage({ version: '2026-06', prompt: 'Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left', referenceImage: { uri: 'https://example.com/brand-logo.png' }, outputCount: 1, quality: 'medium',});
console.log(task);from runwayml import RunwayML
client = RunwayML()
task = client.recipes.marketing_stock_image( version='2026-06', prompt='Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left', reference_image={'uri': 'https://example.com/brand-logo.png'}, output_count=1, quality='medium',)
print(task)curl -X POST https://api.dev.runwayml.com/v1/recipes/marketing_stock_image \ -d '{ "version": "2026-06", "prompt": "Premium lifestyle photo for a sustainable travel backpack campaign, urban morning commute, natural copy space on the left", "referenceImage": { "uri": "https://example.com/brand-logo.png" }, "outputCount": 1, "quality": "medium" }' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $RUNWAYML_API_SECRET" \ -H "X-Runway-Version: 2024-11-06"Tips for best results
Section titled “Tips for best results”- Be specific in the brief — name the subject, audience, channel, mood, and setting, and call out any composition needs like copy space.
- Supply a brand logo as
referenceImagewhen you need the output to align with your brand. - Omit
outputCountandqualityfor the default set of four high-quality variations; lower either when you want faster iterations or lower cost per call. - Generate a few variations and curate, the same way you’d select from a stock library.
- See Reference media guidelines for more.
Reference
Section titled “Reference”Related
Section titled “Related”- Product Campaign Image — product-focused campaign visuals
- Product Ad — product shot videos