Meta placement to aspect ratio map: three Sume renders cover it

Meta recommends 9:16 for Stories and Reels, 1:1 and 4:5 for Feed, 16:9 for in-stream. Submit Sume jobs at 9:16, 1:1 and 16:9; crop 4:5 only if needed.

4 min readSume
All posts

Meta's aspect-ratio page maps Stories, Status and Reels to 9:16, Feed to 1:1 and 4:5, in-stream video to 16:9 and Audience Network to 9:16. Three Sume video jobs, one each at 9:16, 1:1 and 16:9 on a model that lists all three, cover every placement except native 4:5.

The map from Meta's page

Meta recommends 9:16 so a vertical video captures the whole screen in Stories, Status and Reels. For Feed placements, both 1:1 and 4:5 are supported for images and videos. For in-stream video, horizontal 16:9. For Meta Audience Network placements, vertical 9:16.

The page also describes an aspect ratios view in Ads Manager. If you do not supply all four variations, Meta fills the gaps with padding, media expansion, cropping and AI options, and it tells you to upload your own variations when possible for the most control.

Meta placements and the Sume job that serves each (read 2026-10-05)
PlacementMeta recommendsSume aspect_ratioRoute
Stories, Status, Reels9:169:16Native render
Feed1:1 and 4:51:1 (4:5 by crop of 3:4)Native or crop
In-stream video16:916:9Native render
Audience Network9:169:16Reuse the vertical

Submit three jobs

The prompt and the model stay identical, and only aspect_ratio changes. Each job reserves its own price at the list rate times 1.25, so three shapes cost three jobs. Use a model that the catalog says lists all three ratios (see the filter post) and give each submit a distinct Idempotency-Key so a retry cannot double-charge.

import json, os, urllib.request

def submit(ratio):
    body = json.dumps({
        "model": "seedance-2",
        "prompt": "A ceramic mug on a wooden table, slow push in",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": ratio,
    }).encode()
    req = urllib.request.Request(
        "https://api.sume.com/v1/videos", data=body,
        headers={
            "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
            "Content-Type": "application/json",
            "Idempotency-Key": "mug-" + ratio.replace(":", "x"),
        })
    with urllib.request.urlopen(req) as r:
        return json.load(r)

for ratio in ("9:16", "1:1", "16:9"):
    job = submit(ratio)
    print(ratio, job["id"], job["status"])

Then poll and upload

Each submit returns 202 with an id, a polling_url and a status. Poll GET /v1/videos/{job_id} until the status is completed, then read unsigned_urls. Upload the three files to Ads Manager, one per ratio, and look at each in the aspect ratios view before publishing.

When 4:5 matters

If Facebook Feed is your priority, Meta lists 4:5 for single-image ads to Facebook Feed. For video, a 1:1 render is accepted in Feed. Only add a 4:5 crop when you want to fill more of the phone screen, and follow the 3:4 route in the crop post.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume