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

# Creative approval

> Understand the two approval gates a creative goes through after a media buy is forwarded, and how to check status and respond to rejections

After a buyer maps a creative to a placement and the media buy is forwarded to a
publisher, the publisher may need to review it before it goes live. There are two
separate gates a creative can move through, and each surfaces its own status on
`get_campaign`.

## The two approval gates

### 1. Storefront operator review

When a publisher has configured their storefront for manual creative review
(`creativeApproval: manual`), each submitted creative lands in the publisher's
queue. Their operations team reviews it and records a decision.

The review status is returned as `storefrontReviewStatus` on each creative entry:

| `storefrontReviewStatus` | What it means                                              |
| ------------------------ | ---------------------------------------------------------- |
| `pending`                | Creative is in the publisher's review queue                |
| `approved`               | Publisher accepted the creative                            |
| `rejected`               | Publisher declined the creative                            |
| `revoked`                | A previously-approved creative was pulled by the publisher |

When `storefrontReviewStatus` is `null`, the publisher runs automatic creative
review (`creativeApproval: auto`) and there is no manual gate.

### 2. Source system review

After a creative passes operator review (or when the storefront uses automatic
review), the platform syncs it to the publisher's ad server. The ad server may
then accept or reject it independently. The result appears per-agent on
`sourceSyncStatus[]`.

An empty `sourceSyncStatus[]` means the creative has not yet been synced to any
source.

## Checking approval status

Call `get_campaign` and read `mediaBuys[].creatives[]` on the relevant media buy.
Both review gates appear side by side on each creative entry:

```json theme={null}
{
  "mediaBuys": [
    {
      "mediaBuyId": "mb_abc123",
      "creatives": [
        {
          "creativeId": "cr_xyz456",
          "name": "Summer Spot 30s",
          "storefrontReviewStatus": "approved",
          "sourceSyncStatus": [
            {
              "agentId": "42",
              "approvalStatus": "approved",
              "rejectionReason": null
            }
          ]
        }
      ]
    }
  ]
}
```

A creative must clear both gates before it is eligible to serve: the publisher must
approve it (or skip the queue via auto-review), and the ad server must accept it.

## What to do if a creative is rejected

### Storefront rejection (`storefrontReviewStatus: "rejected"`)

The publisher's operations team declined the creative. Check the reviewer note
that was returned in the webhook callback or is visible in the publisher's review
queue. Fix the creative, re-upload it as a new manifest, and re-map it to the
campaign.

<Note>
  Remapping a creative to a new placement does not re-submit it for storefront
  review. If a revised creative needs approval, re-upload it as a new manifest
  and map the new one.
</Note>

### Source system rejection (`sourceSyncStatus[].approvalStatus` indicates rejection)

The publisher's ad server declined the creative after operator review. Read
`sourceSyncStatus[].rejectionReason` for the reason the source returned. Fix the
creative based on that feedback, re-upload, and re-map.

A creative can be approved by the storefront operator but still fail at the source
if the ad server applies its own rules (format constraints, brand safety filters,
or trafficking restrictions). Treat a source rejection as its own distinct
problem, separate from the operator review decision.

## Related

* [Bring your own creative](/v2/buyer/creatives/bring-your-own-creative) -- upload
  a finished asset and route it to a campaign
* [Creative tasks](/v2/buyer/creatives/tasks/index) -- manifest task reference
* [Creative reviews (seller)](/v2/storefront/creative-reviews/overview) -- how
  publisher operators work the review queue
