Ads Uploader CLI
for Meta adsBulk-Launch Meta Ads From Your Terminal or AI Agent
The Ads Uploader CLI lets you, or an AI agent like Claude Code or Codex, bulk-launch Meta ads from the terminal across every ad account you manage. Point it at an ad you already run and the new batch copies its settings, audience and placements, in whatever campaign and ad set structure you need. Each launch is a spec you preview before anything is created. It works alongside Meta's official CLI: Meta's creates one object per command, ours runs the whole launch.
Browse, upload, preview, and launch from the command line
Hand it to Claude Code, Cursor, or Codex with a single skill file
Your presets, accounts, and Meta API connection carry over
Install Once, Authenticate Once
Install globally with npm, run ads login to authenticate through your browser, and pick a default ad account. Your existing Ads Uploader account and Facebook connection do all the heavy lifting.
- One npm install. Works anywhere Node 18+ runs.
- Log in and authenticate in your browser
- No environment variables to store, no tokens to securely share with teammates
- Set a default with ads account act_xxx, or pass --account on each launch to work across client accounts
Browse Your Account Without Leaving the Shell
The same campaign, ad set, and ad picker you use in the web app, but as commands. Find the ad you want to copy settings from, confirm a preset ID, or scan ad performance without opening Ads Manager.
- ads campaigns lists active campaigns in your default account
- Drill in with ads campaign, ads adset, and ads ad
- Shows headlines, body copy, CTA, destination URL, and parent ad set
- Copy any ad ID straight into a copyFromAd spec field
Upload Folders, Not Files One by One
Point the CLI at a folder of creatives and the entire batch goes straight to Meta's media library. Variant grouping by filename suffix works exactly like it does in the web app.
- ads upload ./my-creatives uploads an entire directory
- 1:1, 4:5, 9:16, and 16:9 variants auto-grouped by filename
- Returns a batch ID you reference in your spec file
- Works with mounted Google Drive, Dropbox, and OneDrive folders
One Spec File. Reusable. Diffable.
Instead of clicking through configuration screens, you describe the launch in a JSON spec file. Reference a saved preset or copy from any existing ad, then layer in headlines, primary text, naming patterns, and overrides.
- Reference a saved preset by ID, the same one you built in the web app
- Or copyFromAd to mirror an existing ad's full configuration
- Override text, URLs, naming patterns, and creative enhancements
- Save it to git, diff it next week, hand it to a teammate
Preview Before You Spend
Start every launch with a dry run. ads create:preview shows exactly what would be created - campaign, ad sets, ads, budgets, status - without creating anything in Meta. Catch config mistakes before they cost you anything.
- Dry-run output matches what the live run will create
- Validates your spec against the same engine the web app uses
- Surfaces missing fields, bad references, or invalid combinations
- Nothing is created in Meta, so nothing spends
Watch Ads Go Live in Real Time
ads create runs the launch as a background job and streams progress back to your terminal. The same execution pipeline that powers the web app - rate limiting, retries, validation, and creative variations all handled.
- One command publishes the entire batch to Meta
- Live progress for every ad set and ad as it's created
- Resume with ads jobs JOB_ID --follow if you disconnect
- Launch active by default, or use --status PAUSED for a safety net
Hand the Whole Workflow to an AI Agent
The CLI ships with a skill file you drop into Claude Code, Cursor, or any agent that can run shell commands. The agent reads creatives, writes copy, builds the spec, previews, and launches - you stay in the loop on the command line.
- Copy SKILL.md into .claude/skills/ads and the /ads skill appears
- Each command is single-purpose, so the agent stays deterministic
- Spec files give the agent a reviewable plan before any spend
- Pairs with the Ads Uploader MCP when you'd rather chat alongside the web app
Web, MCP, and CLI. One Circuit.
The terminal never boxes you in. Saved builds carry a launch between surfaces: start one in the web app, patch it from a chat with Claude or ChatGPT over the Ads Uploader MCP, then finish it here with one command. The same build reference opens everywhere.
- Saved builds and presets are shared across every surface
- Fork a build for a variant without touching the original
- Prefer chatting alongside the web app? That's the Ads Uploader MCP
- Start anywhere, finish anywhere, nothing is locked in
Upload media, apply a preset, start the build
Meta's Official CLI vs. Ads Uploader CLI
On April 29, 2026, Meta released meta-ads, a free official command-line wrapper for the Marketing API. It creates one object per command and has no batch command, so bulk launches mean shell loops. The Ads Uploader CLI complements it: Meta's for reporting and one-off edits, ours for bulk launches across your ad accounts. Our Meta Ads CLI guide covers Meta's tool in full.
Authentication Workflow
- •Build a custom Meta app
- •Provision a system user
- •Assign your assets
- •Generate a 7-scope access token
- •Paste the token into .env
- •Share securely with teammates
- Run ads login
- Authenticate in your browser
- Each teammate logs in themselves
Edge Case Logic
- •Format quirks left to you to handle
- •No aspect-ratio variation grouping
- •Raw API toggles for creative enhancements
- •Edge cases surface in production
- •No documented retry or pacing layer
- All ad formats natively supported
- Aspect-ratio variations auto-grouped
- Per-objective creative-enhancement control
- Production-tested at scale
- Retries and readable errors built in
Inherited Ad Configurations
- •Define every campaign field
- •Define every ad set field
- •Define every creative field
- •Re-specify every launch from scratch
- Reference any existing ad
- Inherit targeting and placements
- Inherit catalogs and pixels
- Override only what's changed
Launching ads is all we do. We've designed our tooling to be the best at it, shaped by millions of dollars in ad spend on our own brands and businesses.

Chris Pollard Founder of Ads Uploader
Different ways to interface with Meta's API are exciting, but the API's edge cases still bite. Format coverage, retry logic, valid configs, inheritance from existing ads - we've spent years encoding all of it into the Ads Uploader workflow. Marketers launch ads faster with us than they would stitching API calls themselves.
A CLI is the right interface for an AI agent the same way a visual UI is for clicks. Same marketers, different contexts - that's why I built ours. Meta releasing their own is welcome validation.
Same Ads Uploader Workflow. Now Driven By You and Your Agent.
One spec file, one command, ads in your account.
Start 7-Day Free TrialFree 7-day trial
•No credit card required
•Cancel anytime