AI disclosure API fields: TikTok, Instagram, YouTube and Snap
The four field names that mark a video as AI-made: TikTok is_aigc, Instagram is_ai_generated, YouTube containsSyntheticMedia, Snap ai_content_source.

Four platforms, four different names for the same idea. TikTok uses a boolean is_aigc in post_info. Instagram uses a boolean is_ai_generated on the media container. YouTube uses status.containsSyntheticMedia in the upload body. Snap added an ai_content_source attribute to its Media entity for ad creative. If you publish one Sume-made video to several places, keep one internal field and map it per platform.
Side by side
| Platform | Field | Where | Type or note |
|---|---|---|---|
| TikTok | is_aigc | post_info, Direct Post | Bool; true labels the video as AI generated |
is_ai_generated | Media container, Content Publishing API | Optional boolean; set true to self-disclose AI use | |
| YouTube | status.containsSyntheticMedia | videos.insert body | Declares synthetic media |
| Snap | ai_content_source | Media entity, Marketing API | Added to the Media entity per the Snap Ads API changelog; values not listed there |
One internal flag, four payloads
Store a single ai_made value (true, false or unknown) with each asset and refuse to publish while it is unknown. The mapper below turns that into the three boolean-shaped fields. Snap's attribute is left out on purpose, because the changelog does not say what values it takes.
def disclosure(ai_made):
if ai_made is None:
raise ValueError("ai_made must be decided before publishing")
return {
"tiktok": {"is_aigc": ai_made},
"instagram": {"is_ai_generated": ai_made},
"youtube": {"status": {"containsSyntheticMedia": ai_made}},
}
print(disclosure(True))
Where Sume comes in
Sume generates and edits the file; it does not publish to these platforms or set these fields. The record that a clip came from a Sume model is yours to keep, and the job id in each result is a convenient key for it. Edits such as trim keep the same question open: a trimmed AI clip is still an AI clip.
Operational notes
Add the mapping to the step that already builds each platform's request, not to a separate service, so the flag cannot drift from the upload it describes. Write the value you sent into your own publishing log together with the platform response and the Sume job id. When a platform later changes how it treats the field, the log tells you which published videos are affected without re-deriving it from memory.
Limits
The fields declare; they do not define. Each platform has its own policy on what must be labeled, and this table says nothing about that. Two of the four pages are API references that give one-line descriptions, so read each platform's policy before you decide what ai_made should be for a mixed edit of real and generated footage.
Sources
Related posts
More in Comparisons
- AI video cost per minute: Veo 3.1 vs the Sume catalog
One minute of generated footage costs $4.80 to $24 on Veo 3.1 at list prices and $0.75 to $15 on the Sume video catalog. Per-second rates, dated 2026-10-01.
- AI/ML API vs Sume: OpenAI-style base URL or media jobs
AI/ML API gives an OpenAI-compatible base URL across text, image, video and music. Sume is media jobs, and its agent endpoint is async, not choices[].
- Alibaba Wan 3.0 on OpenRouter vs Sume: id, seed and aspect ratios
OpenRouter lists alibaba/wan-3.0 with seed and 2 to 30 seconds. Sume lists wan-3.0 with the same range, no seed, and its own billing. What to change.
- Amazon Ads Agent creative tools vs Sume for off-Amazon video
Amazon's unBoxed 2026 Ads Agent now makes TV-quality video from product pages. What it covers, and how Sume fills the TikTok, Meta and Shopify side.
Written by Sume