Meta Ads CLI video ad: upload an AI-generated MP4
Meta's Ads CLI makes a video ad from a local file with meta ads creative create --video. Download the Sume clip first, then upload; ads start paused.

With Meta's Ads CLI, a video ad creative is one command: meta ads creative create --name "Video Promo" --page-id <PAGE_ID> --video ./promo.mp4 --link-url https://example.com/new. The --video flag takes a local file, so a clip generated with Sume has to be downloaded to disk first. The CLI uploads the media file itself when it creates the creative.
The CLI facts are from Meta's Ad Creatives, Get Started and launch post pages, read 2026-09-29. Sume has no Meta connector; the download step follows Sume's Video generation docs.
What do I need to install the Ads CLI?
Meta's Get Started page lists Python 3.12 or later, a virtual environment, pip and uv, and a Meta system user access token. The package is meta-ads on PyPI, installed with pip install meta-ads, then uv sync. Authentication is a system user token with these scopes: business_management, ads_management, pages_show_list, pages_read_engagement, pages_manage_ads, catalog_management and read_insights. meta auth status checks it.
How do I get the Sume clip into a file?
Sume's video docs download a finished job from the content endpoint with your API key. In current code that endpoint answers with a redirect to the file, so add -L to curl. Ask for 9:16 when you generate if the ad is for a vertical placement; ratios per model are in Vertical 9:16 video generation.
curl -L "https://api.sume.com/v1/videos/job_123/content?index=0" \
-H "Authorization: Bearer $SUME_API_KEY" \
--output promo.mp4
meta ads creative create --name "Video Promo" \
--page-id <PAGE_ID> \
--video ./promo.mp4 \
--body "Watch our new collection" \
--title "New Arrivals" \
--link-url https://example.com/newWhat does the CLI decide from my flags?
- Every creative requires
--page-id, the Facebook Business Page acting as the ad's identity.meta ads page listfinds it. - Video formats Meta lists:
.mp4,.mov,.avi,.mkv,.wmv. - For Instagram placements add
--instagram-actor-id. - Nothing goes live on its own: Meta's launch post says resources are created in PAUSED status by default, and you activate with
meta ads ad update <AD_ID> --status ACTIVE.
| Flags you pass | Creative type |
|---|---|
--video | Video ad |
--link-url, no video | Link ad |
| Neither | Photo post on the Page |
What should I check before I activate the ad?
Run meta auth status before the first command, so an expired system user token fails early instead of halfway through an upload. After the creative exists, remember that Meta's launch post says resources are created in PAUSED status by default. The activation command, meta ads ad update <AD_ID> --status ACTIVE, is the step that lets an ad deliver.
Keep the downloaded promo.mp4 next to the command you ran. The Sume download link needs your API key, so it cannot be shared as a public link, and a local copy is the file you can re-upload if you have to create the creative again.
Does Meta accept any MP4 for every placement?
The CLI page lists file extensions, not placement specs such as ratio, length or safe zones. Check those against the placement you buy; Meta video ad specs and Reels safe zones has Meta's numbers. To upload through the Marketing API instead of the CLI, see Meta ads bulk upload for AI videos.
Sources
Related posts
More in Integrations
- Meta ads MCP server in Claude Code: the add command
Meta's docs add its ads MCP server to Claude Code with one claude mcp add line. The same session can also add Sume's hosted MCP to make the video.
- Do I need a Meta developer app for the ads MCP server?
Not always: Meta says owning an app is not a prerequisite. With your own app you choose OAuth or a user access token with seven listed permissions.
- Meta ads MCP server rules: cap what an AI agent can do
Meta's ads MCP rules deny an agent action on one ad account or catalog, such as budget increases above 20%. What the rule fields are and where Sume adds a cap.
- n8n Agents: give an agent a Sume video workflow
n8n's new Agents can use workflows and MCP servers as tools. A workflow that calls Sume keeps the API key out of the agent's hands.
Written by Sume