Reels cover photo size: 9:16 JPEG, 8 MB, and how to make one

Meta's Instagram Graph API says a Reels cover is a JPEG up to 8 MB, 9:16 recommended, and cover_url beats thumb_offset. How to make one with Sume.

4 min readSume
All posts

A Reels cover photo should be a 9:16 JPEG no larger than 8 MB in sRGB. Those are the values on Meta's Instagram Graph API page for publishing a Reel: cover_url points at the image, and if you also send thumb_offset (a frame time in the video), cover_url wins.

Sume does not publish to Instagram, so the job here is producing the file: pull a frame from your finished video, or generate a still at 9:16, then hand the URL to your own publishing code. Values below are from Meta's page as read on 2026-09-29.

What are Instagram's cover image limits?

The Graph API reference for POST /<IG_ID>/media lists the cover as a JPEG, 8 MB maximum, sRGB, with 9:16 as the recommended ratio. It offers two ways to choose the cover: cover_url (an image you supply) or thumb_offset (milliseconds into the video).

If both are sent, the page says cover_url takes precedence. The same page lists share_to_feed for whether the Reel also appears in the grid.

Reels cover values on Meta's page (read 2026-09-29)
FieldValue
FormatJPEG
Maximum size8 MB
Color spacesRGB
Recommended ratio9:16
Precedencecover_url over thumb_offset

How do I get a 9:16 still out of my video with Sume?

POST /v1/video-frames extracts stills at times you choose. Send at[] with 1–24 instants (each below the clip duration) and get back durable image URLs in frames[]. The default format is jpeg. If you omit max_edge, frames keep the source size, so a 1080x1920 clip gives 1080x1920 stills. The source may be up to 300 seconds.

Sume's docs do not state a color profile or file-size guarantee for these stills, so check the 8 MB and sRGB rules on the result before you upload.

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: reels-cover-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/reel.mp4",
    "at": [0.5, 2, 4]
  }'

What if I want a designed cover instead of a frame?

Generate one with the image API. openai/gpt-image-2.5 accepts image_size as custom pixels: both edges multiples of 16, longest edge 3840 or less, ratio no more than 3:1, and 655,360–8,294,400 pixels. 1080x1920 is not a multiple of 16 on the short side, so use 1088x1920, or 1024x1792, both close to 9:16, and crop or scale in your pipeline if you need exactly 9:16.

Alternatively set aspect_ratio: "9:16" on models whose catalog lists it; check GET /v1/images/models for the model you pick.

Keep faces and text away from the edges, since app UI can cover part of the frame.

What are the limits of this answer?

Sume does not upload a cover or set cover_url for you. The 8 MB and sRGB requirements are Meta's, not something Sume checks.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume