> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Creative reviews

> Review the queue of buyer-submitted creatives and approve or reject the pending ones.

When your creative gate is set to review (`creativeApproval: manual` in
[AI Business Rules](/sell/ai-business-rules)), each creative a buyer submits to your storefront lands
in your creative review queue as a `pending` row. A person inspects it and records a decision:
`approved` or `rejected`. With `creativeApproval: auto`, creatives are approved on arrival and never
enter the queue.

Buyers submit creatives with AdCP `sync_creatives`. While a review is pending, the buyer sees the
creative as `pending_review` on your storefront; your decision is what their side shows next.

## Find what's waiting

* In the app: **Approvals & operations**, the creatives queue. Ask Semi "What's waiting on me?" or
  call `open_approvals`.
* REST: `GET /api/v2/storefront/creative-reviews?status=pending` (`status` is `pending`, the default,
  `approved`, `rejected` or `revoked`).

Each row carries:

| Field                        | Notes                                                              |
| ---------------------------- | ------------------------------------------------------------------ |
| `approvalId`                 | The id you decide with.                                            |
| `creativeId`, `creativeName` | The buyer's creative.                                              |
| `buyerCustomerName`          | Who submitted it.                                                  |
| `previewUrl`                 | The creative's preview, when the buyer sent one; otherwise `null`. |
| `submittedAt`                | When it arrived.                                                   |
| `status`                     | `pending`, `approved`, `rejected` or `revoked`.                    |
| `verdict`                    | The advisory verdict once evaluated, or `null`.                    |
| `assigneeName`, `workItem`   | Who the review is assigned to, when approval routing assigns it.   |

## Get an advisory evaluation

`POST /api/v2/storefront/creative-reviews/{creativeId}/evaluate` checks the creative against your
Creative policy and returns the advisory verdict (**Clearly on policy**, **Needs a look** or **Clearly
against an explicit rule**), a recommendation and each check with its result. It's advice: it never
approves or rejects, and a fresh evaluation never changes the review's status.

## Decide

| MCP                                                                  | REST                                                           |
| -------------------------------------------------------------------- | -------------------------------------------------------------- |
| `decide_creative_review` (`approvalId`, `decision`, `reviewerNotes`) | `POST /api/v2/storefront/creative-reviews/{creativeId}/decide` |

```json decide_creative_review theme={null}
{
  "approvalId": "…",
  "decision": "rejected",
  "reviewerNotes": "The end card needs the age gate our Creative policy requires. Please resubmit with it."
}
```

`decide_creative_review` always asks the person to confirm before it acts. On a rejection, the notes
become the reason the buyer sees, so say what to fix. The result has the review's new `status` and
`reviewedAt`.

Creatives and media buys are decided with separate tools. Passing a media buy's approval to
`decide_creative_review` is refused ("This is not a creative review. Decide media buys with
decide\_media\_buy\_approval."), and the other way round.

## Who reviews

Approval routing can assign creative reviews to specific people: read it with
`GET /api/v2/storefront/approval-routing`, change it with
`PUT /api/v2/storefront/approval-routing/CREATIVE_REVIEW`, and reassign one review with
`PUT /api/v2/storefront/approval-routing/work-items/{workItemId}/assignee`. If nobody eligible can approve, reviews stay
held; they are never approved automatically.

## Not available yet

* A sandboxed live preview of the running creative, headless observation of what a tag does, and
  placement-aware provider previews.
* Content digests on review rows, and reusing an approval when the identical creative appears on a
  later media buy.
* Revoking an approved creative from the queue.

## Related

* [Approvals & reviews](/sell/approvals)
* [AI Business Rules](/sell/ai-business-rules)
* [Creatives (buyer side)](/buy/creatives)
