Skip to main content

Overview

Batch mode lets you upload multiple ads in a single session. Instead of running the upload chain manually for each ad, you define all ads in a JSON configuration file and Meta Ads Kit processes them sequentially.

When to Use Batch Mode

  • Launching a new campaign with 5+ ad variants
  • Testing multiple image + copy combinations
  • Refreshing creatives across an entire ad set
  • Migrating ads from another platform

Batch Configuration File

Location

Format

batch-upload.json

Required Fields

Ad Definition Object

Asset Feed Spec Format

Each ad references an asset_feed_spec JSON file generated by the ad-copy-generator skill:
notes-app.json
You typically generate these files using the ad-copy-generator skill rather than writing them manually.

Running a Batch Upload

Natural Language

Processing Flow

For each ad in the batch:
  1. Validate - Check copy length, image dimensions, file exists
  2. Upload Image - POST to /adimages endpoint, get hash
  3. Create Creative - POST to /adcreatives with asset_feed_spec
  4. Create Ad - POST to /ads in PAUSED status
  5. Log Result - Save to {ad-name}.upload.json

Progress Output

Validation Rules

Before uploading, Meta Ads Kit validates each ad:

Copy Validation

  • Max 40 characters (soft limit)
  • Hard stop at 50 characters
  • Error if truncation would occur on mobile

Image Validation

Images with >20% text overlay may be rejected by Meta’s ad review. The upload will succeed, but delivery will be limited.

Valid CTA Types

Error Handling

If any ad fails validation or upload, the batch pauses:

Retry from Failure Point

Meta Ads Kit tracks which ads completed successfully. When you fix the error and re-run, it skips already-uploaded ads:

Dry Run Mode

Test your batch configuration without hitting the API:
Output shows:
  • Validation results for each ad
  • Exact JSON payloads that would be sent
  • Estimated creative/ad names
  • No API calls made, no IDs returned

Advanced: Multiple Images per Ad

You can test multiple images with the same copy by providing an array of image paths:
Meta’s algorithm will test all image × copy combinations and find the winners. 3 images × 3 headlines × 3 bodies = 27 combinations tested automatically.

Output Files

After batch upload completes, Meta Ads Kit saves results:

upload.json Format

notes-app.upload.json
These IDs are also appended to workspace/brand/assets.md for tracking:
assets.md

Performance Considerations

Rate Limits

Meta’s Marketing API uses score-based rate limiting. Batch uploads consume more of your rate limit budget.
Recommended batch sizes:
  • Small account: 5-10 ads per batch
  • Medium account: 10-20 ads per batch
  • Large account: 20-50 ads per batch
If you hit rate limits (error 294), Meta Ads Kit automatically retries with exponential backoff:

Sequential vs Parallel

Batch mode processes ads sequentially by default to avoid rate limits. For large batches (50+), you can enable parallel upload:
batch-upload.json
Parallel upload increases speed but also increases rate limit consumption. Only use for accounts with high API limits.

Example Workflow

Step 1: Generate Copy

Outputs:

Step 2: Create Batch Config

batch-upload.json

Step 3: Dry Run

Review validation results, fix any errors.

Step 4: Upload

All 5 ads created in PAUSED status.

Step 5: Review & Activate

Open Ads Manager, review each ad, activate the ones you want to run.

Next Steps

Graph API

Direct API usage and rate limits

OpenClaw Integration

Natural language ad management