Meta ads bulk upload: push AI videos to your ad account
Bulk upload videos to Meta Ads by API: POST each file_url to the ad account's advideos edge, wait for status ready, then use the video_id in ads.

To bulk upload videos to Meta Ads by API, send one POST /act_{ad_account_id}/advideos request per video to Meta's Marketing API, either with a file_url that Meta fetches or with the file itself as source. Each call returns a video ID. Wait until the video's status is ready, then use that ID as video_id in your ad creatives. Graph API batch requests can group up to 50 of these calls.
The Meta details come from its Ad Videos reference, Video Status and Batch Requests pages, read on 2026-09-28. This post covers the Marketing API route, not the Ads Manager screens. Sume has no Meta Ads connector: the steps below are plain HTTPS calls from your own script, and the Sume side comes from Format runs.
How do I upload a video to a Meta ad account by API?
Posting to the ad account's advideos edge creates a video in that account's library. The parameters that matter for a bulk upload:
| Parameter or code | What it means |
|---|---|
file_url | A URL Meta downloads the video from |
source | The video itself, encoded as form data |
upload_phase | start, transfer, finish or cancel, used during a chunked upload |
name | The name of the video in the library |
title | The name of the video being uploaded; under 255 characters |
Error 389 | Unable to fetch video file from URL |
Error 352 | The video file is in a format Meta doesn't support |
curl -X POST "https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/advideos" \
-F "file_url=https://media.sume.com/artifacts/..." \
-F "name=hook-variant-01" \
-F "access_token=$META_ACCESS_TOKEN"How do I get the video upload status?
Meta processes each video after upload. Its Video API docs read the status with GET /{video-id}?fields=status. Wait for video_status to be ready before you build a creative; processing means it isn't ready yet, and error means processing failed. The Video Status object also carries processing_progress, a percentage from 0 to 100.
How do I upload many videos at once?
Loop over your files and call advideos once per video, or group the calls in Graph API batch requests:
- A batch holds at most 50 requests, and each call inside it counts separately toward rate limits.
- A large batch can time out and return partial results: successful requests answer
200, the rest come backnull, and you can retry those. - Meta's Ad Videos reference lists error
80004for too many calls to one ad account: wait a bit and try again. - Keep your Meta access token and your Sume API key on a server, never in browser code. Sume's docs say browser and mobile clients should call your backend, which attaches the key.
Can file_url point at a Sume video?
It can point at a Format run's files. Sume's docs describe them as durable media.sume.com HTTPS URLs that do not expire and are public to anyone holding the URL, so fetching them needs no Sume key. A bulk run takes 1 to 100 items at a concurrency of 1 to 16, and each finished child lists its files in artifacts, so each URL can go to Meta once that child completes.
Don't hand Meta a GET /v1/videos/{jobId}/content URL: it needs your Sume API key, and in current code it answers with a 302 redirect to the file. Pass the file URL the redirect points to instead; Download a generated video from the Sume API shows how. Whether Meta accepts a given file for a placement depends on its ad specs, covered in Meta video ad specs.
How do I use the uploaded video in an ad?
In the creative's video data, video_id takes the ID of a video in the ad account's video library, and image_url can set a thumbnail, which Meta saves into the ad account's image library (Ad Creative Video Data). Making the ad variants themselves is covered in UGC-style video ads for products at scale.
Sources
- Meta Marketing API: Ad Videos (read 2026-09-28)
- Meta Graph API: Video Status (read 2026-09-28)
- Meta Reels Publishing API (read 2026-09-28)
- Meta Graph API: Batch Requests (read 2026-09-28)
- Meta Marketing API: Ad Creative Video Data (read 2026-09-28)
- Meta Video API: Publishing (read 2026-09-28)
- Format runs
- Bulk runs
- Video generation
- Authentication
Related posts
More in Integrations
- Microsoft Agent Framework MCP: connect an agent to Sume
Connect a Microsoft Agent Framework agent to Sume's hosted MCP server with MCPStreamableHTTPTool, a key header, allowed_tools, and approval_mode.
- n8n Google Sheets Trigger: start a video from each new row
n8n's Google Sheets Trigger polls a sheet and fires on added or updated rows. Key each row's video run on a row id so an edit doesn't bill twice.
- n8n human in the loop: approve each AI video before posting
In n8n, a Send and Wait for Response step pauses the workflow until a person approves or declines. Put it after the video is made and before it is posted.
- n8n MCP Server Trigger: give Claude a video tool
n8n's MCP Server Trigger makes a workflow an MCP server with its own URL. How to connect Claude and attach a tool that generates a video over HTTPS.
Written by Sume