Docs
Ads

Get an ad launch

GEThttps://api.norreach.app/v1/ad-launches/{id}

One ad launch: its status, budget (minor units), daily cap, schedule, landing page, what publishing creates and, when something went wrong, a plain sentence about it (the details are in the app).

ads:readOperation id: get_ad_launch
GET/ad-launches/{id}
curl -X GET "https://api.norreach.app/v1/ad-launches/{id}" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
Get an ad launch
{
  "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"
}

Authorizations

Authorizationstringheaderrequired

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

Path parameters

idstring (uuid)pathrequired

An id (UUID).

Response

200application/json— Get an ad launch

idstring (uuid)required

An id (UUID).

object"ad_launch"required
namestringrequired
networkenumrequired
One of:metatiktokredditchatgpt
network_namestringrequired
statusenumrequired

draft → generating → ready → publishing → published (or failed). Only ready waits for a person's yes.

One of:draftgeneratingreadypublishingpublishedfailed
plan_idstring (uuid) | nullrequired

The plan whose cards Nora built this launch from.

ad_account_idstring (uuid) | nullrequired
objectivestring | nullrequired
landing_urlstring | nullrequired
budgetobjectrequired
Show child attributes
budget.daily_per_ad_setobject | nullrequired

Per ad set (ad group) per day. Editable with PATCH while draft, ready or failed.

budget.daily_capobject | nullrequired

The most the whole launch may spend per day (set by the plan). A budget above it is refused.

budget.campaignobject | nullrequired

A campaign-level budget, on networks that use one.

ad_setsintegerrequired

How many ad sets (ad groups) publishing creates.

adsintegerrequired

How many ads publishing creates.

scheduleobjectrequired

When the ads run once switched on.

Show child attributes
schedule.modeenumrequired

continuous = runs until switched off; range = between start and end.

One of:continuousrange
schedule.startstring | nullrequired

YYYY-MM-DD (range only).

schedule.endstring | nullrequired

YYYY-MM-DD, or null for no end date.

published_atstring | nullrequired
problemstring | nullrequired

A plain sentence when something went wrong (details are in the app).

created_atstring | nullrequired
updated_atstring | nullrequired

Errors

Errors are application/problem+json with a stable code.

StatusCodeMeaning
400bad_requestThe request couldn't be read.
400unknown_fieldThe request has a field this operation doesn't know.
401unauthorizedA valid API key is required.
403insufficient_scopeThis API key doesn't have the scope this operation needs.
403feature_not_enabledThe API isn't switched on for this workspace.
404not_foundThat doesn't exist.
429rate_limitedToo many requests. Slow down and try again.
500server_errorSomething went wrong on our side.
503unavailableThe API isn't available right now. Try again shortly.