Get metrics
Returns performance totals for the launch at level (campaign, ad set or ad) for datePreset (default today): spend, impressions, reach, clicks, link CTR, CPM, frequency, CPC, results, cost per result, hook rate and ROAS. Pass id to scope to one entity. Values are live reads from the ad platform; a null metric means it is unknown, not zero.
bearerAuthAuthorizationBearer <token>An organization API key (koast_sk_…) with the API surface enabled, or an OAuth access token issued by Koast (koast_at_…) whose audience covers this API. REST access requires an active Agency plan.
brandId*integerThe brand the request acts on. Every brand-scoped resource lives under its brand.
launchId*stringThe campaign launch (batch) id.
level*stringWhich level to pull metrics at.
"campaign""adset""ad"datePreset?stringReporting date preset. If omitted, defaults to today. Use last_7d / last_28d / last_30d / last_90d / this_month / last_month as needed. Every last_Nd preset ENDS YESTERDAY and does not include today, so a campaign that only started yesterday reads as zero under last_7d, use today or yesterday to see it, and say which window a number came from. For "lifetime" / "all time" / "since launch", use maximum, NOT "lifetime" (it is not an accepted value). Arbitrary start/end date ranges are not supported by the backend.
"today""yesterday""this_week_sun_today""last_7d""last_14d""last_28d""last_30d""last_90d""this_month""last_month""maximum"id?stringOptional entity id to scope to. Omit for all entities at this level.
1 <= lengthGet metrics
application/json- response
level*stringcampaigns*array<>campaignLaunchId?stringThe launch these rows belong to, echoed back so a second read can be scoped to the same launch without guessing.
isExample*booleandatePreset*stringdataAvailability?string"NO_LIVE_ENTITIES""OUT_OF_WINDOW""AVAILABLE"dateRange?windowCap?asOf?stringISO time of the live provider read behind this response. Set on MCP and API responses, which may be served from the short metrics cache.
[key: string]?unknowncurl -X GET "https://example.com/v1/brands/0/launches/string/metrics?level=campaign" \ -H "Authorization: Bearer koast_sk_..."{ "level": "campaign", "campaigns": [ { "internalId": "string", "name": "string", "isMock": true, "metaCampaignId": "string", "metaAdsetId": "string", "metaAdId": "string", "campaignId": "string", "adsetId": "string", "adId": "string", "entityId": "string", "actionType": "string", "displayStatus": "LIVE", "providerStatus": "string", "spend": 0, "impressions": 0, "reach": 0, "clicks": 0, "ctr": 0, "cpm": 0, "frequency": 0, "costPerClick": 0, "results": 0, "costPerResult": 0, "hookRate": 0, "purchaseRoas": 0, "property1": null, "property2": null } ], "campaignLaunchId": "string", "isExample": true, "datePreset": "string", "dataAvailability": "NO_LIVE_ENTITIES", "dateRange": { "start": "string", "end": "string", "property1": null, "property2": null }, "windowCap": { "requested": "string", "maxDays": 0, "property1": null, "property2": null }, "asOf": "string", "property1": null, "property2": null}Required scope: read. CLI: koast get-metrics, see Launches commands. Authentication, headers, errors and pagination work the same on every operation. See Conventions.
Get daily insights
Returns daily insights for the launch, one row per day summed across every entity at level: spend, impressions, clicks, reach, frequency, hook and hold rate, results, CPA, CTR (all clicks) and CPM. The window is the last days days, or startDate to endDate when both are given. reach is null when more than one entity is summed. Values are live reads from the ad platform.
Remove items from campaign tree
Removes 1-200 campaign, ad set or ad nodes from the launch, together with their children. Only the Koast tree changes: anything already published keeps running on the ad platform. Ids not found in the launch are returned in notFound. Cannot be undone.