# Creative Library (/docs/paid-media/creative-library)



The Creative Library is the central repository for all ad creatives in
your project. URL:
`/project/{projectId}/paid-media/creative-library`.

## Card view [#card-view]

Each creative card shows:

* Thumbnail / preview.
* Source: 🤖 generated, 📤 uploaded, 👥 UGC.
* Organic score (0–10 with decay arrow).
* Override status (📌 included / 🚫 excluded).
* Safety flag if any.
* Spend lifetime + 30d.
* ROAS lifetime + 30d.
* Currently running on N ad sets.

## Filters [#filters]

* Source pool: generated / UGC / manual.
* Score range.
* Status: approved / pending / archived.
* Override status.
* Date range.

## Search [#search]

Search by hook text, caption, tag.

## Approve [#approve]

Review and approve creatives before they enter ad rotation. Click any
creative → **Approve**.

## Override [#override]

Click the overflow menu → **Set override**:

* **Include** — always eligible regardless of score.
* **Exclude** — never eligible.
* **Auto** — score-driven (default).

## Upload [#upload]

Click **Upload creative**. Drop a file. Layers:

* Detects format (image / video / carousel).
* Generates a hook + caption (or you provide).
* Creates an `ad_creatives` row (source type `media_upload`) and an
  `ads_content` row tagged with `scoring_pool = 'manual'`. Manual pool
  candidates are ranked by recency, not by organic score.

## Detail panel [#detail-panel]

Click any creative for the full detail view:

* Performance breakdown by ad set.
* Score history chart.
* Generation provenance (which prompt / inputs).
* Audit log.

## Archive [#archive]

Click → **Archive**. Removes from active selection. Metrics are retained
for historical reporting.

## Bulk actions [#bulk-actions]

Select multiple → bulk approve / bulk override / bulk archive.

## Attach to ad set [#attach-to-ad-set]

Select a creative → **Attach to ad set** → pick the destination. The
ad set's pool is updated; the optimizer's next cycle picks it up.
