Introduction

The Win & Scale REST API. Read one Meta ad account's warehouse and history, launch ads paused, and with the approval grant put them live.

The Win & Scale API reads one Meta ad account's warehouse and history, launches ads paused, and, with the approval grant, puts them live. All requests go to:

https://winandscale.com/api/v1

A key reaches the one workspace it was minted in, and a workspace is one Meta ad account, so there is no account id in any path.

Quick start

Mint a key in Settings → API keys, then:

Read the workspace
curl https://winandscale.com/api/v1/workspace \
  -H "Authorization: Bearer rsk_your_key"
Check the evidence before you read any report
curl "https://winandscale.com/api/v1/evidence-health?window=90d" \
  -H "Authorization: Bearer rsk_your_key"

One payload, two surfaces

Every operation runs exactly one product tool and returns that tool's own result. Where the MCP server serves the same tool, the operation's x-mcp-tool names it, so the two surfaces never disagree. Adding a research source and refreshing one are REST and dashboard only, so those two operations carry no x-mcp-tool.

  • Requests are snake_case: query parameters and JSON bodies, such as daily_budget and next_test_id.
  • Responses are the tool's payload as-is, so field names are camelCase.
  • Budgets are in the account currency's major units. 50 means 50.00.
  • No CORS headers. Keys are server-side secrets, and browser use is not supported.

Conventions

  • Request ids. Every response carries X-Request-Id. It echoes yours when you send a sane one (letters, digits, ., _, -, up to 128 characters) and is otherwise generated. Errors repeat it as request_id. See Errors.
  • Errors are { error: { code, message } }. Branch on code.
  • Retries are safe on the creates that take an Idempotency-Key. See Idempotency.
  • Rate limits are advertised on every response. See Rate limits.

The OpenAPI document is at https://winandscale.com/openapi.json.

Resource groups

GroupWhat it holds
reportsThe warehouse (daily, as of the last sync) and the history (lifetime totals per ad). Numbers, not verdicts.
accountThe connected ad account, its sync, its quota, its strategy and the thresholds reports judge against.
launchesLaunch ads PAUSED, then activate, pause, retarget or rebuild them. Lead forms and launch presets. Everything that changes spend needs the approval grant.
creativesThe creative library and its Values on the house taxonomy.
taxonomyThe Dimensions and this workspace's Values.
briefsBriefs and strategist notes shown to the operator.
testsCommitted Tests with frozen intent, append-only Observations and a final Conclusion, plus learnings.
swipesOther people's ads, saved for reference. Never launchable.
researchCustomer language in, personas and angles out, every line traceable to a quote.

Each endpoint page has an interactive playground.

What is MCP-only

Ten tools have no REST endpoint, each for a stated reason:

  • Model-backed authoring: meta_draft_messaging and meta_transcribe_creative.
  • Ranked recommendations written for a model: meta_suggest_next, meta_get_history_winners and meta_get_cross_analysis. The numbers under them are in GET /api/v1/ads, /history, /evidence-health, /strategy-rollup and /performance-cube.
  • Live reads of a third-party system: meta_get_breakdowns, meta_get_audience_breakdown and meta_search_ad_library. The first two spend the account's hourly Meta quota.
  • The session's workspace: meta_list_workspaces and meta_switch_workspace. A key is pinned to its workspace, and GET /api/v1/workspace answers the question.

Adding or refreshing a research source is the opposite case: it is REST and dashboard only.

On this page