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.

The YouTube Data API v3 has a boolean containsSyntheticMedia on the VideoStatus resource. The discovery document describes it as indicating whether the video contains altered or synthetic media. When you upload an AI-generated clip through videos.insert, set it in the status part of the request body so the declaration travels with the upload instead of being added later in Studio.
Where is the field?
It lives in VideoStatus, next to the other status properties such as privacy. Writing status in the request means you must list status among the parts of the call. The document states no behavior beyond the description, so what YouTube shows viewers is a matter for its help pages.
| Item | Detail |
|---|---|
| Field | status.containsSyntheticMedia (boolean) |
| Description | Altered or synthetic media indicator |
| Upload size cap | 274877906944 bytes (256 GiB) |
| Discovery revision | 20261001 |
What should I trim before upload?
The upload cap is enormous, so size is not the constraint for AI clips. Length and format are. Cut a generated video to the length you want with POST /v1/video-trim, using start plus end or duration, and download the resulting MP4. For vertical output, add output with width 1080 and height 1920 on the exact path.
import json, os, urllib.request
body = {
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"start": 0,
"duration": 45,
"output": {
"width": 1080,
"height": 1920,
"fps": 30
}
}
req = urllib.request.Request(
"https://api.sume.com/v1/video-trim",
data=json.dumps(body).encode(),
headers={
"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": "yt-short-001",
},
method="POST",
)
print(urllib.request.urlopen(req).read().decode())Is declaring synthetic media optional?
The field is optional in the schema. Whether it is required for your content is a policy question, and the policy is YouTube's. Treat the flag as an honest declaration, and set it whenever the video is AI-made or realistically altered.
What should I check?
Read the discovery document at release time and YouTube's policy page. The video trim guide covers Sume's cut.
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