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.

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.
| Field | Value |
|---|---|
| Format | JPEG |
| Maximum size | 8 MB |
| Color space | sRGB |
| Recommended ratio | 9:16 |
| Precedence | cover_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
- Roofing video ads with AI: make them from your job photos
Roofing video ads can be made with AI from your own job photos: animate a finished roof, add a voice-over and your phone number. What not to fake, and costs.
- School promotional video with AI: show the real campus
A school promotional video should show the real campus and programs. Use AI for motion, voice and text on your own photos, not a generated campus. Steps, costs.
- Seedance 2.5 multi-shot prompt: timestamps, shots and one example
Write a Seedance 2.5 prompt with several connected shots in one clip: the vendor's prompt formula, a timestamped structure, and a ready POST /v1/videos request.
- AI video generator using a reference video: Seedance 2.5 setup, cost
Send a reference clip to seedance-2.5 as a video_url input reference to borrow motion or camera work. The vendor limits and how it changes the estimate.
Written by Sume