YouTube playlistImages API: 50 MB cover images from an AI image
YouTube's playlistImages insert and update accept a JPEG or PNG up to 50 MB (52428800 bytes). Make a cover with Sume Images; the spec gives no pixel size.

The YouTube Data API v3 has a playlistImages resource with insert, update, list and delete methods. Insert and update accept JPEG or PNG uploads up to 52,428,800 bytes (50 MiB). The discovery document does not state required pixel dimensions, so check YouTube's help page for the cover size before you generate one.
What does the resource look like?
The PlaylistImage schema has id, kind (the fixed string youtube#playlistImages) and a snippet. The id identifies the playlist and image type. Uploads can use simple or resumable protocols.
| Method | HTTP | Upload |
|---|---|---|
| insert | POST youtube/v3/playlistImages | JPEG or PNG, 50 MiB max |
| update | PUT youtube/v3/playlistImages | JPEG or PNG, 50 MiB max |
| list | GET youtube/v3/playlistImages | none |
| delete | DELETE youtube/v3/playlistImages | none |
How do I make a cover?
Generate the image at a ratio that suits a playlist tile, usually landscape, with aspect_ratio 16:9 and output_format jpeg. Because the document gives no pixel rule, confirm the recommended size in YouTube's own guidance and compare it with the dimensions Sume returns.
import json, os, urllib.request
body = {
"model": "bytedance-seed/seedream-4.5",
"prompt": "cover art for a cooking playlist, overhead table with fresh vegetables, bright and clean",
"aspect_ratio": "16:9",
"output_format": "jpeg"
}
req = urllib.request.Request(
"https://api.sume.com/v1/images",
data=json.dumps(body).encode(),
headers={
"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
print(urllib.request.urlopen(req).read().decode())What about AI disclosure?
A playlist image is not a video, so containsSyntheticMedia on VideoStatus does not apply here. Whether YouTube expects a label on AI-made artwork is a question for its policy pages.
What should I check?
Test the call on a playlist you own. The images guide lists Sume's side.
Sources
Related posts
More in Integrations
- Zapier Next Gen nested loops multiply paid Sume submits
Next Gen Zaps allow nested loops. Two nested loops of 20 and 5 items are 100 paid Sume jobs: how to count, pace and pause before the first submit.
- Storage by Zapier 32-character keys: remember a Sume job id
Storage by Zapier keys are limited to 32 characters and 500 keys, and idle keys vanish after 2 months. Key by your row id, store the Sume job id as the value.
- Zed MCP: which agents use your Sume server (Panel, ACP, terminal)
Zed's own Agent uses context_servers directly, external agents get them over ACP, and terminal CLIs read their own config. Where the Sume MCP entry goes.
- Zoho Flow webhook trigger 100 per minute vs Sume bulk-run bursts
Zoho Flow handles 100 executions a minute on a webhook trigger. A 100-item Sume bulk run can arrive faster, so absorb the burst and dedupe on run_id.
Written by Sume