Meta Marketing API: GenAI features vs an uploaded Sume file
Meta's Ad Creative Generative AI Terms cover GenAI features reached through the Marketing API. A script that only uploads a rendered file is a different step.

Meta's Ad Creative Generative AI Terms apply when you use Meta's GenAI product features through the Self-Serve Ad Interfaces or the Marketing API. A script that renders a video with Sume and uploads the finished file is two steps, and only a call to a Meta GenAI feature is the one the page describes. Log the two steps separately in your pipeline so you can say which was which.
What does the page say about scope? (read 2026-10-09)
| Question | What the page says |
|---|---|
| Which features | Meta GenAI features made available through the Self-Serve Ad Interfaces or the Marketing API |
| Outside those interfaces | The Meta AIs Terms of Service apply instead |
| Output | Do not misrepresent it as human-generated or alter or remove watermarks or content-authenticating metadata |
| Merge | Folded into the Self-Serve Ad Terms effective October 30, 2026 |
How should the pipeline be shaped?
Keep a render stage and an upload stage. The render stage calls Sume: trim with video_trim or assemble with Timeline 1.0, then probe the output with video_inspect. The upload stage hands the final MP4 URL to Meta. If you add a call to a Meta GenAI feature, make it a third stage with its own log line.
What should each stage record?
- Render: Sume job ID, tool name, output URL, and the probe's duration, size and codecs.
- Upload: the Meta creative ID that the file became, and the time.
- GenAI call, if any: which Meta feature, which Input file, and the output's creative ID.
- A flag for any output you handled that came from Meta's generative features, so no later step strips what the page says not to alter.
Does a re-encode matter?
The page names watermarks and content-authenticating metadata that may be generated with Output. Sume's docs do not describe that data, so treat any Meta GenAI output as untouchable: do not run it through a trim or filter. See what a trim or re-encode does to provenance marks. This is a production note, not legal advice.
Document the boundary in your repository, in a short README next to the pipeline code. A new team member should be able to see at a glance which function calls Sume, which uploads to Meta, and which, if any, calls a Meta generative feature. It makes terms updates easier to review.
Sources
Related posts
More in Developers
- Move an OpenRouter-style video client to Sume: the 400s to expect
Sume /v1/videos matches the OpenRouter video shape, but size, provider.options and seed return 400. The differences table and a Python asyncio polling client.
- MiniMax H3 disk space: 108 GB for SGLang, 19.5 GiB for INT8
How much disk does MiniMax H3 need? 108 GB for the SGLang route, 61.73 GiB BF16 safetensors, 19.53 GiB INT8. Why the numbers differ and what to budget.
- MiniMax H3 on SGLang: the FSDP corruption warning and what to use
MiniMax's H3 guide warns that FSDP inference has reported data corruption; use TP plus Ulysses. The serve flags, the cross-node rule, one service per variant.
- Music job timed out? Retry with the same key: one $0.125, not two
A Sume music submit that times out can be retried with the same Idempotency-Key and returns the original job. Without a key, a blind retry is a second $0.125.
Written by Sume