Skip to content
Sign inGet your key

REST API

An API for Meta ads.

Store URL in, ads out, then Meta’s review. 21 endpoints, 8 scopes, OpenAPI 3.1.

Xbox concept ad. An explosion frozen mid-air in a living room while a teenager walks to dinner.Utah Jazz concept ad. A brass trumpet half-buried in Wasatch powder at dawn.Denver Nuggets concept ad. A visitors’ locker room with an oxygen tank on every stool.NBA concept ad. A dying 3 pm boardroom with a real shot clock bolted over the screen, reading 00:24.Nordstrom concept ad. A muddy car tire in a black gift box with tissue paper.Milwaukee Bucks concept ad. A twelve-point buck alone at center court in a shaft of light.PacSun concept ad. A fitting room standing on the beach at sunset.Xbox concept ad. An explosion frozen mid-air in a living room while a teenager walks to dinner.Utah Jazz concept ad. A brass trumpet half-buried in Wasatch powder at dawn.Denver Nuggets concept ad. A visitors’ locker room with an oxygen tank on every stool.NBA concept ad. A dying 3 pm boardroom with a real shot clock bolted over the screen, reading 00:24.Nordstrom concept ad. A muddy car tire in a black gift box with tissue paper.Milwaukee Bucks concept ad. A twelve-point buck alone at center court in a shaft of light.PacSun concept ad. A fitting room standing on the beach at sunset.

Concepts by our creative team. Not commissioned by the brands shown.

The path, in calls

1. Add a store by URL

curl
curl -X POST https://app.greenset.ai/v1/stores \
  -H "Authorization: Bearer $GREENSET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "url": "https://mossgatecoffee.example"
  }'

2. Draw up to six ads

curl
curl -X POST https://app.greenset.ai/v1/concepts \
  -H "Authorization: Bearer $GREENSET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "url": "https://mossgatecoffee.example"
  }'

3. Dry run: checks, nothing created

curl
curl -X POST https://app.greenset.ai/v1/drafts \
  -H "Authorization: Bearer $GREENSET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "concept_id": "cpt_1a2b3c4d5e6f",
    "destination_url": "https://mossgatecoffee.example/products/house-blend",
    "daily_budget_usd": 25
  }'

Then the same draft with live: true, which can’t spend, and POST /v1/drafts/{id}/activate with the daily budget typed back. The ad goes to Meta’s review.

Every endpoint, field, error and webhook.

Keys and limits

Keys are made under Developers in the console and shown once. Scopes keep a key to what it’s for: leave activate off and it can’t start spending.

Requests a minute, per key: Free 30, trial 60, Premium 120, Agency 300.

Questions

Is there an API for Meta ads?

Yes. Meta’s Marketing API is how software manages campaigns, and since April 2026 Meta also has an Ads CLI and an Ads MCP server. Greenset’s API is a different thing: it draws the ads from a store and takes them to review.

Is Meta’s API free?

Meta’s pages we read list no fee for calling it. You pay for the ads. Greenset charges for its plans and 2% of the money that pays for your ads, and says so on the pricing section.

Do I need a Meta developer app?

Not for Greenset’s API: you need a Greenset key. Setup of your ad account, Facebook page, pixel and ad balance happens once in the console.

Can I generate a client?

Yes. The OpenAPI 3.1 document is at app.greenset.ai/v1/openapi.json.

Greenset is not affiliated with Meta. Ads go to Meta’s review, and Meta decides.

One key. Go green.

Get your key