# POST /v1/projects/:projectId/ads/:platform/content-refresh (/docs/api/reference/ads/content-refresh)



<Endpoint method="POST" path="/v1/projects/:projectId/ads/{platform}/content-refresh" scope="ads:write:creative" phase="1" />

Runs the content-refresh workflow on a layer. The workflow:

1. Evaluates running ads, scoring each via the optimizer's `disableUnderperformingAdsActivity` (with guardrails: min 3-day age, min $5 spend, never disables `TOP_PERFORMER`/`HEALTHY`, never empties an adset).
2. Disables the underperformers it found (subject to `creative` axis bucket-mode).
3. Picks new top-scored creatives from [`ads-content`](/docs/api/reference/metrics/ads-content) and pushes them.

## Body [#body]

<Parameters
  title="Body"
  rows="[
  { name: 'layerId', type: 'string', required: true },
  { name: 'maxNewCreatives', type: 'integer', default: '3', description: 'Cap on how many fresh creatives to push per adset.' },
]"
/>

## Response [#response]

`202 { jobId, runId, kind: "content_refresh" }`. Long-running (5–10 minutes typical).

## See also [#see-also]

* [`POST …/disable-underperforming`](/docs/api/reference/ads/disable-underperformers)
* [`POST …/optimizer/run`](/docs/api/reference/ads/optimizer-run)
