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.

4 min readSume
All posts

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

Vendor pages, read 2026-10-02
PlatformFieldWhereType or note
TikTokis_aigcpost_info, Direct PostBool; true labels the video as AI generated
Instagramis_ai_generatedMedia container, Content Publishing APIOptional boolean; set true to self-disclose AI use
YouTubestatus.containsSyntheticMediavideos.insert bodyDeclares synthetic media
Snapai_content_sourceMedia entity, Marketing APIAdded 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

All Comparisons posts

Written by Sume