Story-format ads are the highest-engagement placement on Meta in 2026, but most text-to-image tools still default to square output. The result: you generate, crop to 9:16, lose the headline, retype it in Figma, export. Repeat for every variant.
This guide uses the same image creative API as the LinkedIn ad guide, but with the Story format selected. The output is a 1080×1920 PNG with the headline and CTA rendered as HTML/CSS over the AI visual — pre-sized, no crop step.
Step by step
- 01
Pick the Story format
Pass `format: "1080x1920"` in the request body. This is one of the three first-class formats supported by the API (square 1080×1080, landscape 1200×628, vertical 1080×1920). The art director composes specifically for vertical: hero element top half, headline middle, CTA bottom-safe.
- 02
Keep the headline short
Story ads autoplay for 5–8 seconds. Long headlines get cut off by the bottom safe-zone (where the CTA sticker lives). 5–7 words for the headline, 2–4 for the CTA — that is what the layout is sized for.
- 03
POST and upload
Same endpoint as any other image format. Round-trip is similar to other image formats (typical 2–3 min). The PNG drops straight into Meta Ads Manager as a Story creative or into Reels.
Example prompts
Copy, click, tweak — the CTA opens the terminal with the prompt pre-loaded.
Instagram Story for a habit-tracking iOS app called Stride. Headline: "Build streaks that stick". CTA: "Get on the App Store". Style: warm gradient, App Store mock framed top half. Try →Instagram Story 1080x1920 for a webinar "Async product reviews that actually work" on 18 June. Headline: "Stop the meeting marathon". CTA: "Save your seat". Style: bold sans-serif, deep purple background. Try →Instagram Story for a sustainable sneaker brand. Headline: "70% recycled. 100% wearable." CTA: "Shop the Drop". Style: editorial fashion shot, neutral palette. Try →API call
Standard REST. Bearer token, JSON body, URL response. Works in any HTTP client, n8n, Make, Zapier, or MCP agent.
curl -X POST https://api.42rows.com/v1/image-creative \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Instagram Story for a habit-tracking app, headline Build streaks that stick",
"format": "1080x1920"
}'Pricing
Pay-per-call, no subscription. Subscription plans are on the roadmap — they will not change pay-per-call rates.
FAQ
Is the format pre-cropped from a square or natively 1080×1920?
Native. The art director composes specifically for the 9:16 aspect ratio. The Imagen call uses `aspectRatio: "9:16"` directly, not a centre-crop of a 1:1 generation.
Where does the headline land relative to the safe zones?
The HTML/CSS overlay sits inside the central content area, above the bottom 250px reserved for the system CTA sticker on Instagram. If you upload the same PNG to Reels (no sticker), the layout still reads — the safe-zone padding is a visual buffer, not a cutoff.
Can I pass a brand colour and logo?
Brand colour by hex in the prompt is honoured. Logo upload is roadmap — for now, type the brand name into the prompt and the art director will treat it as the wordmark.
Does Reels count as a separate format?
No. Reels and Story share the 1080×1920 aspect. Same PNG works for both placements. TikTok also accepts 1080×1920 if you want cross-platform.
How is this different from cropping a square in Photoshop?
A square cropped to 9:16 loses 33% of the canvas and forces the headline outside the safe area. A native 9:16 generation has the visual and headline composed inside the vertical canvas from the start.
Ship it
Use the first example prompt as a starter — the button opens the public terminal with it pre-filled.