YouTube watermarks.set: 10 MB JPEG or PNG for channel branding
The YouTube Data API watermarks.set method uploads a JPEG or PNG up to 10 MB as a channel watermark. Generate a transparent PNG logo mark with Sume Images.

YouTube's watermarks.set method uploads a watermark image for a channel: JPEG or PNG, up to 10,485,760 bytes (10 MiB), with a channelId parameter and an InvideoBranding body that carries timing. For a logo mark with a clear background, make a PNG; on Sume, openai/gpt-image-2.5 supports background: "transparent".
What does watermarks.set accept?
The discovery document lists the method as POST, with simple and resumable upload paths and accepted types image/jpeg, image/png and a generic binary type. The branding body has timing, with offsetMs and durationMs in milliseconds; the position field is present in the schema but marked deprecated.
| Item | Detail |
|---|---|
| Method | POST youtube/v3/watermarks/set |
| Upload max | 10485760 bytes |
| Accepted types | image/jpeg, image/png |
| Body | InvideoBranding (timing; position deprecated) |
| Timing fields | offsetMs, durationMs |
How do I make the mark on Sume?
Request a simple mark on a transparent background, 1:1, in PNG. Sume documents background with transparent for ChatGPT Image 2.5. Review the result on a light and a dark frame before you upload it, since a thin mark can disappear on busy footage.
import json, os, urllib.request
body = {
"model": "openai/gpt-image-2.5",
"prompt": "simple flat leaf icon, single color, centered, no text",
"aspect_ratio": "1:1",
"output_format": "png",
"background": "transparent"
}
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 are the practical limits?
- Keep the file well under the 10 MiB cap; a simple icon is far smaller.
- Do not put text in the mark unless you have checked how it renders at small sizes.
- You choose when it appears with timing, so decide whether it should run for the whole video.
- Verify the other fields in the live document.
What else matters?
The watermark is channel branding, not an AI disclosure. See the images guide for Sume's parameters.
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