# Review status of every TikTok Smart+ ad of an advertiser

Returns the review status of every TikTok Smart+ ad of an advertiser, one page at a time. Works with TikTok Ads.

```http
GET https://api.pozy.ai/v1/ads/tiktok-smart-plus-reviews
```

- Area: Ads / Ad Campaigns
- Auth: Authorization: Bearer pz_live_...

## Query parameters

- `accountId` (string, required)
- `adAccountId` (string, required)
- `includeDeleted` (boolean)
- `maxAgeSeconds` (integer)
- `page` (integer)
- `pageSize` (integer)

## Example request

```bash
curl -X GET "https://api.pozy.ai/v1/ads/tiktok-smart-plus-reviews?accountId=696e0b682d0a31188e7a2ba9&adAccountId=666219aad7bab67ace411e4f" \
  -H "Authorization: Bearer $POZY_API_KEY"
```

```ts
const res = await fetch("https://api.pozy.ai/v1/ads/tiktok-smart-plus-reviews?accountId=696e0b682d0a31188e7a2ba9&adAccountId=666219aad7bab67ace411e4f", {
  headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);
```

```python
import os
import requests

resp = requests.get(
    "https://api.pozy.ai/v1/ads/tiktok-smart-plus-reviews",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    params={
        "accountId": "696e0b682d0a31188e7a2ba9",
        "adAccountId": "666219aad7bab67ace411e4f",
    },
    timeout=30,
)
resp.raise_for_status()
print(resp.json())
```

## Response 200

- `adAccountId`, string
- `includeDeleted`, boolean
- `maxAgeSeconds`, integer
- `page`, integer
- `pageSize`, integer
- `totalPages`, integer
- `totalSmartPlusAds`, integer
- `listing`, object
  - `readAt`, string (date-time)
  - `source`, string: One of `fresh`, `fallback`
  - `error`, object: Can be null
    - `tiktokCode`, integer: Can be null
    - `message`, string
- `reviewError`, object: Can be null
  - `tiktokCode`, integer: Can be null
  - `message`, string
- `counts`, object
  - `fresh`, integer
  - `stale`, integer
  - `pending`, integer
  - `failed`, integer
- `oldestReadAt`, string (date-time): Can be null
- `items`, array of object
  - `smartPlusAdId`, string
  - `adGroupId`, string: Can be null
  - `campaignId`, string: Can be null
  - `review`, object: Can be null
    - `reviewStatus`, string: One of `approved`, `partially_approved`, `rejected`, `unknown`
    - `rawReviewStatus`, string: Can be null
    - `rejectReasons`, array of string
    - `passedLocations`, array of string
    - `appealStatus`, string: Can be null
    - `appealRejectReasons`, array of string
    - `rejections`, array of object
      - `reasons`, array of string
      - `suggestion`, string: Can be null
      - `forbiddenPlacements`, array of string
      - `forbiddenAges`, array of string
      - `forbiddenLocations`, array of string
      - `content`, object: Can be null
        - `type`, string: Can be null
        - `text`, string: Can be null
        - `imageId`, string: Can be null
        - `videoId`, string: Can be null
        - `musicId`, string: Can be null
  - `materials`, array of object
    - `adMaterialId`, string
    - `materialType`, string: One of `spark_post`, `video`, `carousel`, `catalog_carousel`. Can be null
    - `tiktokItemId`, string: Can be null
    - `videoId`, string: Can be null
    - `name`, string: Can be null
    - `operationStatus`, string: Can be null
    - `reviewStatus`, string: One of `approved`, `partially_approved`, `rejected`, `unknown`
    - `rawReviewStatus`, string: Can be null
    - `rejectReasons`, array of string
    - `passedLocations`, array of string
    - `rejections`, array of object
      - `reasons`, array of string
      - `suggestion`, string: Can be null
      - `forbiddenPlacements`, array of string
      - `forbiddenAges`, array of string
      - `forbiddenLocations`, array of string
      - `content`, object: Can be null
        - `type`, string: Can be null
        - `text`, string: Can be null
        - `imageId`, string: Can be null
        - `videoId`, string: Can be null
        - `musicId`, string: Can be null
  - `readAt`, string (date-time)
- `failedSmartPlusAds`, array of object
  - `smartPlusAdId`, string
  - `adGroupId`, string: Can be null
  - `campaignId`, string: Can be null
  - `error`, object
    - `tiktokCode`, integer: Can be null
    - `message`, string
  - `refusedAt`, string (date-time): Can be null
- `incomplete`, boolean
- `allFresh`, boolean
- `pendingSmartPlusAdIds`, array of string
- `retryAfterSeconds`, integer: Can be null
- `refreshState`, string: One of `ok`, `paused`, `refused`, `error`

```json
{
  "adAccountId": "666219aad7bab67ace411e4f",
  "includeDeleted": true,
  "maxAgeSeconds": 1,
  "page": 1,
  "pageSize": 1,
  "totalPages": 42,
  "totalSmartPlusAds": 42,
  "listing": {
    "readAt": "2026-10-02T09:00:00.000Z",
    "source": "fresh",
    "error": {
      "tiktokCode": 1,
      "message": "Hello from Pozy"
    }
  },
  "reviewError": {
    "tiktokCode": 1,
    "message": "Hello from Pozy"
  },
  "counts": {
    "fresh": 1,
    "stale": 1,
    "pending": 1,
    "failed": 1
  },
  "oldestReadAt": "2026-10-02T09:00:00.000Z",
  "items": [
    {
      "smartPlusAdId": "6e8904b1093cf559921b85fe",
      "adGroupId": "6ad180be375f36f2c328e52b",
      "campaignId": "65a3737dd8b11ea61f199e6e",
      "review": {
        "reviewStatus": "approved",
        "rawReviewStatus": "active",
        "rejectReasons": [
          "string"
        ],
        "passedLocations": [
          "string"
        ],
        "appealStatus": "active",
        "appealRejectReasons": [
          "string"
        ],
        "rejections": [
          {
            "reasons": [
              "string"
            ],
            "suggestion": "string",
            "forbiddenPlacements": [
              "string"
            ],
            "forbiddenAges": [
              "string"
            ],
            "forbiddenLocations": [
              "string"
            ],
            "content": {
              "type": "string",
              "text": "Hello from Pozy",
              "imageId": "6d4f8076f189e3caf170dc65",
              "videoId": "65fd297a0da74ab358dd11e9",
              "musicId": "6f984cc4c4966c468da0cfd5"
            }
          }
        ]
      },
      "materials": [
        {
          "adMaterialId": "6dbb84467421295a1ae43473",
          "materialType": "spark_post",
          "tiktokItemId": "6194c6395799073f3c47a197",
          "videoId": "65fd297a0da74ab358dd11e9",
          "name": "Acme",
          "operationStatus": "active",
          "reviewStatus": "approved",
          "rawReviewStatus": "active",
          "rejectReasons": [
            "string"
          ],
          "passedLocations": [
            "string"
          ],
          "rejections": [
            {
              "reasons": [
                "string"
              ],
              "suggestion": "string",
              "forbiddenPlacements": [
                "string"
              ],
              "forbiddenAges": [
                "string"
              ],
              "forbiddenLocations": [
                "string"
              ],
              "content": {
                "type": "string",
                "text": "Hello from Pozy",
                "imageId": "6d4f8076f189e3caf170dc65",
                "videoId": "65fd297a0da74ab358dd11e9",
                "musicId": "6f984cc4c4966c468da0cfd5"
              }
            }
          ]
        }
      ],
      "readAt": "2026-10-02T09:00:00.000Z"
    }
  ],
  "failedSmartPlusAds": [
    {
      "smartPlusAdId": "6e8904b1093cf559921b85fe",
      "adGroupId": "6ad180be375f36f2c328e52b",
      "campaignId": "65a3737dd8b11ea61f199e6e",
      "error": {
        "tiktokCode": 1,
        "message": "Hello from Pozy"
      },
      "refusedAt": "2026-10-02T09:00:00.000Z"
    }
  ],
  "incomplete": true,
  "allFresh": true,
  "pendingSmartPlusAdIds": [
    "string"
  ],
  "retryAfterSeconds": 1,
  "refreshState": "ok"
}
```
