Snap Marketing API ai_content_source: the AI declaration on Media

Snap added an ai_content_source attribute to the Media entity in its Marketing API on August 28, 2026. What the changelog says, and how to record it.

4 min readSume
All posts

Snap's Marketing API changelog adds an ai_content_source attribute to the Media entity. The August 28, 2026 entry says the Media entity was updated to include the new AI declaration attribute ai_content_source. The changelog does not list the allowed values, so this post gives the dates and the shape of a safe integration, not a value table.

Changelog entries

Snap Marketing API changelog, read 2026-10-02
DateEntry
2026-09-11Added a section in Ad Squad on sub_request_warnings, launching September 15 (not about ai_content_source)
2026-08-28Updated the Media entity to include the new AI declaration attribute ai_content_source

Record the declaration with the asset

Because the values are not on the changelog, read them from Snap's Media entity reference before sending anything. What you can do today is store, next to each ad asset, how it was made: generated, edited from real footage, or captured. The sketch refuses to build a media payload until that is known.

ALLOWED = {"generated", "edited", "captured"}

def media_record(name, origin):
    if origin not in ALLOWED:
        raise ValueError("origin must be one of %s" % sorted(ALLOWED))
    return {"name": name, "origin": origin}

print(media_record("spring-teaser", "generated"))
# map origin -> Snap ai_content_source using the Media entity reference

Where Sume fits

Sume produces the creative; it does not call Snap. A job id from a Sume generation or edit gives you a durable record of how a file was made. Edits like video trim ($0.02 per job) or video captions ($0.20 per clip up to 60 seconds) return new MP4s, so store the origin per file you upload, not per campaign.

Pre-launch checklist

Before the first ad goes out, open the Media entity reference and note the allowed values for ai_content_source. Add a test that fails when an asset has no recorded origin. Keep the origin on the asset, not the campaign, because one campaign can mix generated and captured files. When the same file is reused across ad squads, the declaration should travel with it. Finally, log the Sume job id that produced each file, so a review question can be answered from your own records.

Limits

The changelog gives no definition of what counts as AI content for Snap, and it has a single entry for the attribute. Treat the attribute as required reading in the reference before launch. Snap's own organic-content stance is covered separately in Spotlight and wholly AI-generated videos.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume