AI Product Ad (Reference Photo)
A 9:16 paid-social product ad for stores with large catalogues, built for AI reference images: send one product photo and Renderly generates every scene around the real product - an AI video hook of the product in use, an AI hero shot, an AI close-up and an AI lifestyle photo - each one keeping the product's shape, colour and logo. 1080x1920, 21 seconds at 30fps, five scenes cut on the beat of a warm music bed: hook, hero with name and price, three numbered features, lifestyle, and an end card with logo, offer and CTA button. The design is neutral cream and ink with an editorial serif, so it suits a product of any colour and any category, and all copy sits inside the TikTok and Reels safe zones. Sixteen fields swap per render: four AI media slots (hook_clip, hero_image, detail_image, lifestyle_image - send a video or image value with a prompt and referenceImages, or plain URLs) and twelve text and image fields (headline, product_name, price, feature_1, feature_2, feature_3, lifestyle_text, logo, store_name, offer, cta, url). Use a dark logo on a transparent background, and fill every text field. With all four AI slots it costs about 9.5 credits per product.
- Aspect ratio
- 9:16 · Vertical
- Duration
- ~21s
- Category
- Ecommerce
Try it with your own copy
Edit a field and the frame re-renders in your browser. No account, no credits - previews are free because they cost a browser paint, not a render.
What you can customize
This template exposes 16 dynamic fields you can swap per video - edit them in the editor or pass them to the API to batch-render variations at scale. The monospace name is the exact key to send in replacements.
Hook Clip
urlhook_cliphttps://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hook.mp4
Store Name
textstore_nameMossling
~58 characters max · 1 line
Headline
textheadlineMealtime, minus the mess.
~31 characters max · 2 lines
Hero Image
urlhero_imagehttps://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hero.jpg
Product Name
textproduct_nameThe Catch-All Silicone Bib
~40 characters max · 2 lines
Price
textprice$18
~20 characters max · 1 line
Detail Image
urldetail_imagehttps://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/detail.jpg
Feature 1
textfeature_1Deep pocket catches every bite
~31 characters max · 1 line
Feature 2
textfeature_2Soft, food-grade silicone
~31 characters max · 1 line
Feature 3
textfeature_3Wipes clean in seconds
~31 characters max · 1 line
Lifestyle Image
urllifestyle_imagehttps://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/lifestyle.jpg
Lifestyle Text
textlifestyle_textMade for real mealtimes.
~37 characters max · 2 lines
Logo
urllogohttps://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/logo.png
Offer
textoffer20% off your first order
~32 characters max · 2 lines
Cta
textctaShop now
~22 characters max · 1 line
Url
texturlmossling.co
~56 characters max · 1 line
Render it from the API
Copy either call below. Both already carry this template's ID and its real variable keys - swap the values for your own.
1. Preview it — free
Same body as a render. Costs no credits, creates no job. Returns a public URL that plays the video in a browser, plus a list of problems with your payload — a mistyped key is otherwise ignored in silence.
curl -X POST https://renderly.video/api/v1/previews \
-H "Authorization: Bearer $RENDERLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "ai-product-ad-9x16",
"replacements": {
"hook_clip": "https://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hook.mp4",
"store_name": "Mossling",
"headline": "Mealtime, minus the mess.",
"hero_image": "https://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hero.jpg",
"product_name": "The Catch-All Silicone Bib",
"price": "$18"
}
}'2. Render it
Change one word in the URL. Keep templateId — it is what links your call to this template, so later improvements reach you automatically.
curl -X POST https://renderly.video/api/v1/renders \
-H "Authorization: Bearer $RENDERLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "ai-product-ad-9x16",
"replacements": {
"hook_clip": "https://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hook.mp4",
"store_name": "Mossling",
"headline": "Mealtime, minus the mess.",
"hero_image": "https://renderly-video.s3.ap-east-1.amazonaws.com/templates/ai-product-ad-9x16/hero.jpg",
"product_name": "The Catch-All Silicone Bib",
"price": "$18"
}
}'The body above shows 6 of 16 variables. Send any subset — every key you leave out renders its authored default. Read the full contract, with character limits, from GET /api/v1/templates/ai-product-ad-9x16/variables. See the previewing guide, the rendering guide, or the OpenAPI spec.
Frequently asked questions
How do I customize the AI Product Ad (Reference Photo) template?
Open the template in the Renderly editor and replace its 16 customizable fields (such as Hook Clip) with your own text, images, or video. Every change previews instantly before you render.
How much does it cost to render this template?
Rendering is credit-based - 1 credit equals 1 minute of 1080p video. You only pay when you export, and credits never expire on the pay-as-you-go plan.
Can I generate this video at scale via the API?
Yes. POST this template's ID and a replacements object to /api/v1/renders - one call per row of data, 16 fields swappable per video. Send the same body to /api/v1/previews first to check it for free. No-code integrations like Zapier work the same way.
More Ecommerce templates

Black Friday / Flash Sale Countdown
A 19-second vertical flash-sale spot (1080x1920, 9:16) cut to the beat of its own 126 BPM track. Five scenes hit on the music: the sale name slams in, the discount drops with a burst of debris, the product photo gets a camera punch and a LIMITED STOCK sticker, a clock dial frames the deadline, and the promo code and SHOP NOW button land with confetti. Yellow and black grounds flip on the beat, a few medium sound effects mark the big moments, and the text holds still once it lands, so every value stays readable. A header carries the sale name and store name through every scene. Twelve fields swap per render: sale_name, store_name, discount_value, discount_scope, deadline_label, time_remaining, urgency_line, promo_code, cta_label, cta_detail, terms_note and product_image, so Friday's offer, Saturday's deadline and Sunday's last chance come from one template.

Dealership Sales Event
A 9:16 showroom offer card for auto dealer groups - five hard-cut frames in the order a buyer on the forecourt needs them: the event, the offer, the rate, the deadline, the address. Pure black, pure white and deal red trade grounds frame to frame, and a full-bleed rail at y=1704 carries the dates and kicker on every single frame, so any one frame hands over both the deal and its expiry. 22 seconds at 1080×1920, 30fps, set in Archivo Black, Geist and JetBrains Mono. Thirteen dynamic fields split across two axes: the store axis (dealer_name, dealer_address, dealer_phone) and the campaign axis (event_name, event_kicker, event_dates, event_hook, offer_value, offer_label, finance_rate, finance_terms, disclaimer, hero_image) - a forty-store group on one manufacturer programme is forty renders off one spreadsheet row each, with no layout moving between them.

Price Drop Alert
Price Drop Alert is a square e-commerce lifecycle card that fires off a price-change webhook matched against browse history — the "the thing you were watching just got cheaper" moment, rendered one card per watcher straight off the product feed. 27 seconds, 1:1 (1080×1080), 30fps, four scenes on a bone → ink → bone → forest ground rhythm: the personalised alert, the product on the one dark frame in the piece (price deliberately withheld), the payoff — old price struck in signal red beside the new price at 176px on a single shared baseline, with the saving in a forest band bled to the bottom edge — and a receipt row plus CTA pill. Eleven dynamic fields swap per render: customer_first_name, brand_name, product_image, product_name, product_detail, product_price_was, product_price, message_line, status_note, cta_label and cta_url; the minimum viable set is five (product_image, product_name, product_price, cta_label, cta_url), everything else has a documented fallback. Type is Instrument Serif / Geist / JetBrains Mono, and it is a direct sibling of the Abandoned Cart Nudge template, sharing its palette, 84px measure and ten-field product-feed contract.