# GET /v1/projects/:projectId/ads/:platform/reviews (/docs/api/reference/ads/list-reviews)



<Endpoint method="GET" path="/v1/projects/:projectId/ads/{platform}/reviews" scope="ads:read" phase="1" />

Lists ad-approval state per platform. Apple Search Ads' Ad Approval review can take hours; Layers polls and exposes status here so partners don't have to.

For real-time notification, subscribe to the `approval.approved` and `approval.disapproved` webhooks (D40).

## Path parameters [#path-parameters]

<Parameters
  rows="[
  { name: 'projectId', type: 'string (uuid)', required: true },
  { name: 'platform', type: 'string', required: true, enum: ['meta', 'tiktok', 'apple'] },
]"
/>

## Query parameters [#query-parameters]

<Parameters
  rows="[
  { name: 'status', type: 'string', enum: ['pending_review', 'approved', 'disapproved'] },
  { name: 'since', type: 'string (ISO 8601, UTC Z)' },
  { name: 'cursor', type: 'string' },
  { name: 'limit', type: 'integer', default: '50' },
]"
/>

## Response [#response]

```json
{
  "items": [
    {
      "reviewId": "rev_01HZX9...",
      "adId": "ad_01HZX9...",
      "adsContentId": "adc_6f5d4c3b...",
      "platform": "apple",
      "status": "disapproved",
      "platformReason": "Trademark on 'Coffee'",
      "submittedAt": "2026-05-08T10:00:00Z",
      "decidedAt": "2026-05-08T14:32:11Z"
    }
  ],
  "nextCursor": null
}
```

## See also [#see-also]

* [Webhooks — `approval.approved` / `approval.disapproved`](/docs/api/operational/webhooks)
* [`POST …/creatives/:id/unlock`](/docs/api/reference/ads/unlock-creative)
