Meta Ads CLI
by Ads UploaderLaunch Meta Ads with Claude Code
Run your Ads Uploader workflow from your terminal with our Meta Ads CLI. Your AI agent reads creatives, writes copy, builds the spec, and pushes through Meta's API. Validation, retries, and edge cases all handled seamlessly.
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
- Pick a default account once with ads account act_xxx, switch as fast as you switch directories
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
Every launch starts with a dry run. ads create:preview shows exactly what would be created - campaign, ad sets, ads, budgets, status - without touching Meta's API. 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
- No API calls, no charges, no risk
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.
- Drop SKILL.md into .claude/commands and the /ads command appears
- Each command is single-purpose, so the agent stays deterministic
- Spec files give the agent a reviewable plan before any spend
- Works alongside your MCP setup for analysis-to-execution loops
Meta Ads CLI vs. Ads Uploader CLI
On April 29, 2026, Meta released meta-ads, a free official command-line wrapper for the Marketing API. It exposes the API one object at a time.
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
- •Generic errors, no retry logic
- 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