List ad launches
https://api.norreach.app/v1/ad-launchesThe ad launches Nora built from the workspace's plans, newest first: network, status (ready = waiting for a person's yes), budget in minor units, schedule, how many ad sets and ads publishing creates, and the plan it came from. Filter by status and network. There is no operation that makes, generates or searches ads — new ads come from a plan (POST /briefs), and Nora builds the launch.
curl -X GET "https://api.norreach.app/v1/ad-launches" \
-H "Authorization: Bearer $NORREACH_API_KEY"{
"object": "list",
"data": [
{
"id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"object": "ad_launch",
"name": "Nurses in Stockholm — lead ads",
"network": "meta",
"network_name": "Meta",
"status": "ready",
"plan_id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"ad_account_id": "7d8e9f0a-1b2c-4d3e-8f4a-5b6c7d8e9f0a",
"objective": "leads",
"landing_url": "https://example-care.norreach.dev/nurses",
"budget": {
"daily_per_ad_set": {
"amount_minor": 15000,
"currency": "SEK"
},
"daily_cap": {
"amount_minor": 50000,
"currency": "SEK"
},
"campaign": null
},
"ad_sets": 3,
"ads": 6,
"schedule": {
"mode": "range",
"start": "2026-11-10",
"end": "2026-11-24"
},
"published_at": null,
"problem": null,
"created_at": "2026-11-04T09:12:33.120Z",
"updated_at": "2026-11-04T10:02:11.000Z"
}
],
"has_more": false,
"next_cursor": null
}Authorizations
Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope ads:read. API keys and scopes
Query parameters
Page size (1–200, default 50).
The next_cursor of the previous page.
draftgeneratingreadypublishingpublishedfailedmeta, tiktok, reddit or chatgpt.
metatiktokredditchatgptResponse
200application/json— List ad launches
Show child attributesHide child attributes
An id (UUID).
metatiktokredditchatgptdraft → generating → ready → publishing → published (or failed). Only ready waits for a person's yes.
draftgeneratingreadypublishingpublishedfailedThe plan whose cards Nora built this launch from.
Show child attributesHide child attributes
Per ad set (ad group) per day. Editable with PATCH while draft, ready or failed.
The most the whole launch may spend per day (set by the plan). A budget above it is refused.
A campaign-level budget, on networks that use one.
How many ad sets (ad groups) publishing creates.
How many ads publishing creates.
When the ads run once switched on.
Show child attributesHide child attributes
continuous = runs until switched off; range = between start and end.
continuousrangeYYYY-MM-DD (range only).
YYYY-MM-DD, or null for no end date.
A plain sentence when something went wrong (details are in the app).
Errors
Errors are application/problem+json with a stable code.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request couldn't be read. |
| 400 | unknown_field | The request has a field this operation doesn't know. |
| 400 | invalid_cursor | That cursor doesn't belong to this list. |
| 401 | unauthorized | A valid API key is required. |
| 403 | insufficient_scope | This API key doesn't have the scope this operation needs. |
| 403 | feature_not_enabled | The API isn't switched on for this workspace. |
| 429 | rate_limited | Too many requests. Slow down and try again. |
| 500 | server_error | Something went wrong on our side. |
| 503 | unavailable | The API isn't available right now. Try again shortly. |