YouTube channelBanners.insert: 6 MB JPEG or PNG limit for AI banners
YouTube's channelBanners.insert accepts a JPEG or PNG up to 6 MB (6291456 bytes). Generate a banner with Sume Images and keep the file under the cap.

YouTube's channelBanners.insert takes a JPEG or PNG up to 6,291,456 bytes (6 MiB). That is the tightest image cap among the channel-art endpoints in the discovery document, tighter than the 10 MiB for watermarks and the 50 MiB for playlist images. For an AI banner, choose JPEG and check the file size before uploading.
How do the three image caps compare?
The document lists each cap in the upload settings of its method. All three accept image/jpeg and image/png.
| Method | Max bytes | Approx. size |
|---|---|---|
| channelBanners.insert | 6291456 | 6 MiB |
| watermarks.set | 10485760 | 10 MiB |
| playlistImages.insert | 52428800 | 50 MiB |
How do I make a banner within the cap?
Banner art is wide, so use a wide aspect_ratio such as 16:9 or 21:9, both on the Sume list, and request jpeg. A photograph-like banner as JPEG is much smaller than the same image as PNG, though Sume does not promise a byte size. Measure the result and re-request at a different tier if it is over.
import json, os, urllib.request
body = {
"model": "bytedance-seed/seedream-4.5",
"prompt": "wide banner, soft gradient sky over a quiet harbor, lots of empty space on the sides",
"aspect_ratio": "21: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())Which pixel size does YouTube want?
The discovery document does not state pixel dimensions. Use YouTube's help guidance for the banner size and safe area, then compare it with what Sume returns. Keep key content centered.
What should I verify?
Test with a channel you control. The images guide covers the parameters, and the related banner guide covers layout.
Sources
Related posts
More in Integrations
- YouTube Data API containsSyntheticMedia: set it on videos.insert
YouTube Data API v3 VideoStatus has containsSyntheticMedia, a boolean for altered or synthetic media. Where to set it and how to trim a Sume clip first.
- 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.
Written by Sume