# ad.review.rejected

The platform rejected an ad Zernio already tracked; `review.reasons` carries its reason when it gives one.

### When it fires

Fires within one sync cycle of the platform's decision, not instantly; on Meta the review poll usually reports sooner. Each outcome is delivered at most once per ad per 24 hours.

### When it does not fire

Ads seen for the first time by a sync never fire it, including history loaded at connect.

### Platform notes

Covers every ad network Zernio syncs. Pinterest, LinkedIn and Reddit send their own reasons, X sends none, and most other networks return a generic message.

### Payload notes

`review.raw` is the platform's own status string. Show `review.reasons` rather than branching on it. `adObject.adId` is the Zernio ad id. Deduplicate on the event `id`.




**Payload for `ad.review.rejected`:**

- **id** (required) `string`: Stable webhook event ID: the dedupe key, also sent as the X-Zernio-Event-Id header and identical on every retry and redelivery.
- **profiles**: `WebhookProfiles` - See schema definition
- **test** `boolean`: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
- **event** (required) `string`: No description - one of: ad.review.approved, ad.review.rejected
- **account** (required): `WebhookAdsAccount` - See schema definition
- **adObject** (required) `object`: 
  - **level** (required) `string`: Always `AD`. - one of: AD
  - **platformId** (required) `string`: Platform-native ad ID.
  - **platformAdAccountId** (required) `string`: Platform-native ad account ID.
  - **adId** (required) `string`: Zernio ad ID, usable with GET /v1/ads/{adId}.
  - **name** (required) `string`: No description
- **review** (required) `object`: 
  - **status** (required) `string`: No description - one of: approved, rejected
  - **raw** (required) `string`: Platform-native status string, forwarded verbatim (Meta `ACTIVE` / `DISAPPROVED`, TikTok `DISABLE`, ...).
  - **reasons** (required) `array[object]`: Why the platform rejected the ad, when it says. Always empty on `approved`. Pinterest, LinkedIn and Reddit send their own reasons, X sends none, and most other networks only return a generic message.
    - **message** (required) `string`: No description
- **timestamp** (required) `string` (date-time): UTC time at which Zernio generated this event.