Demand Gen Shorts 9:16 full-bleed image ads: make the stills
Google's September Demand Gen drop adds 9:16 full-bleed image ads in Shorts. Make a test set of vertical stills with the Sume Image API and review them first.

If you want to test the new Shorts image ads, make a set of vertical 9:16 stills rather than a video. Google's September Demand Gen update describes 9:16 full-bleed image ads in Shorts that take a viewer to the landing page with a single tap. The Sume Image API accepts aspect_ratio: "9:16" and can return several images per request (the API ceiling is ten, and each model's ceiling is lower), so one call gives you a test set to review.
What did Google announce?
The post does not state pixel sizes for the Shorts image ads. Check the Google Ads asset specs for the exact size before you export.
| Item | What the post says |
|---|---|
| Shorts image ads | "9:16 full-bleed image ads" with a single tap to the landing page |
| YouTube ads | A Business Agent lets viewers use conversational AI next to video ads with product feeds |
| Gmail | Image creatives: Google reports +40% conversions at the same ROI (Google internal data, February 2026) |
How do I generate a vertical test set?
Send one request with n (1 to 10 in the API; read the model's own range in the catalog), aspect_ratio: "9:16", and your product photo in input_references. Read the model's supported_parameters first, because a model accepts only the ratios and tiers its catalog lists. Failed generations are not billed.
Keep text out of the picture. A full-bleed image has no space for small print, and image models can garble letters. Put the offer in the ad copy and on the landing page, where you can edit it.
{
"model": "google/nano-banana-2.1",
"prompt": "Full-bleed vertical product photo of this sneaker on a city step at dusk, subject in the lower two thirds, empty sky above. No text.",
"input_references": [{ "type": "image_url", "image_url": { "url": "https://cdn.example.com/sneaker.jpg" } }],
"aspect_ratio": "9:16",
"resolution": "2K",
"n": 4
}How do I pick which ones to run?
Compare each still with your original photo at full size. Reject any where the shoe, logo or colour has drifted. Then give the survivors to the ad platform as separate assets so it can show you which one earns clicks.
The landing page should carry the same product and the same mood as the image, because the tap goes straight there. If you need a moving version of the winner, animate that single still with the video API afterwards. That order spends video credits only on a picture that already works.
What should I check on each still?
Check the images as a shopper would see them on a phone.
- The product is in focus and not cut off.
- Any text is away from the edges.
- The crop is the same ratio for all stills.
- The still is not a copy of a competitor's image.
Sources
Related posts
More in Use cases
- Google Play preview video: check the YouTube URL in Python
Google Play wants a plain YouTube URL: public or unlisted, embeddable, ads off, no timecode. A short Python check, plus how to make the MP4 with Sume first.
- Griffin-Lite waitlist: six checks before planning a live avatar launch
Tavus Griffin-Lite is a research preview with no customer date or price on its page. Six checks before you plan around it, and what to ship on Sume meanwhile.
- Headline card above an app screen recording: compose stack, $0.36
Timeline compose stack puts a headline image over a video for $0.02 per job. Three headline variants over one app recording cost $0.36 with the images.
- Hide jump cuts with alternating punch-ins: one crop copy, N slots
One $0.02 video-filter crop makes a 1.25x punched-in copy. Alternate wide and punched slots at each pause cut for $0.02 total, not $0.02 per cut.
Written by Sume