Compute creative fatigue
Returns a deterministic creative fatigue score with its components (hook rate and CTR trajectories, frequency trend, CPM in context) and a status. Pass adId to score one ad, or omit it to score the launch aggregated at level, over the last days days. Values are computed from live daily insights on the ad platform.
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.
adId?stringOptional ad-platform ad id to score a single ad. When omitted, scores the aggregated series at the chosen level.
1 <= lengthlevel?stringInsight level; defaults to 'ad' since fatigue is a per-creative concept.
"ad""campaign""adset""ad"days?integerLookback window in days. Defaults to 30.
3 <= value <= 9030Compute creative fatigue
application/json- response
score*number|nullcomponents*status*string"insufficient data""no fatigue""early""active""exhausted"daysAnalyzed*numbersource*stringasOf?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/creative-fatigue" \ -H "Authorization: Bearer koast_sk_..."{ "score": 0, "components": { "hookRateTrajectory": 0, "ctrTrajectory": 0, "frequencyTrend": 0, "cpmInContext": 0, "property1": null, "property2": null }, "status": "insufficient data", "daysAnalyzed": 0, "source": "insights-daily", "asOf": "string", "property1": null, "property2": null}Required scope: read. CLI: koast compute-creative-fatigue, see Launches commands. Authentication, headers, errors and pagination work the same on every operation. See Conventions.
Import campaigns
Imports a campaign from the ad platform (campaignIds) into the launch, with its ad sets and ads. sourceType: existing attaches to the live campaign and keeps its platform ids; duplicate copies it as an editable draft. Pass sourceAdAccountId to import from another ad account the brand is connected to. The import runs in the background, so a large campaign may report still-running when the response returns.
Distribute creative
Places one creative (creativeId) on many ad sets at once: those in targets.adsetIds and every ad set under the campaigns in targets.campaignIds. With strategy: newAdPerTarget a new ad is created in each ad set; with replaceFirstAd the creative replaces the one on each ad set's first ad, or a new ad is created when the ad set has none.