Ads · Ad Campaigns

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.

GEThttps://api.pozy.ai/v1/ads/tiktok-smart-plus-reviews
TikToklistTikTokSmartPlusReviews

Guide: TikTok Ads

Request

Send your API key as Authorization: Bearer pz_live_.... Read-only keys can call it. Keys with the ads resource group disabled get 403 resource_group_disabled. Authentication

Query parameters

NameTypeNotes
accountIdrequiredstring
adAccountIdrequiredstring
includeDeletedbooleanDefault false
maxAgeSecondsintegerDefault 3600600 to 86400
pageintegerDefault 1At least 1
pageSizeintegerDefault 5001 to 1000

Example

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

Response

200 on success

  • adAccountIdstring
  • includeDeletedboolean
  • maxAgeSecondsinteger
  • pageinteger
  • pageSizeinteger
  • totalPagesinteger
  • totalSmartPlusAdsinteger
  • listingobject
    • readAtstring (date-time)
    • sourcestring

      One of fresh, fallback.

    • errorobject

      Can be null.

      2 child fields
      • tiktokCodeinteger

        Can be null.

      • messagestring
  • reviewErrorobject

    Can be null.

    • tiktokCodeinteger

      Can be null.

    • messagestring
  • countsobject
    • freshinteger
    • staleinteger
    • pendinginteger
    • failedinteger
  • oldestReadAtstring (date-time)

    Can be null.

  • itemsarray of object
    • smartPlusAdIdstring
    • adGroupIdstring

      Can be null.

    • campaignIdstring

      Can be null.

    • reviewobject

      Can be null.

      7 child fields
      • reviewStatusstring

        One of approved, partially_approved, rejected, unknown.

      • rawReviewStatusstring

        Can be null.

      • rejectReasonsarray of string
      • passedLocationsarray of string
      • appealStatusstring

        Can be null.

      • appealRejectReasonsarray of string
      • rejectionsarray of object
        6 child fields
        • reasonsarray of string
        • suggestionstring

          Can be null.

        • forbiddenPlacementsarray of string
        • forbiddenAgesarray of string
        • forbiddenLocationsarray of string
        • contentobject

          Can be null.

          5 child fields
          • typestring

            Can be null.

          • textstring

            Can be null.

          • imageIdstring

            Can be null.

          • videoIdstring

            Can be null.

          • musicIdstring

            Can be null.

    • materialsarray of object
      11 child fields
      • adMaterialIdstring
      • materialTypestring

        One of spark_post, video, carousel, catalog_carousel. Can be null.

      • tiktokItemIdstring

        Can be null.

      • videoIdstring

        Can be null.

      • namestring

        Can be null.

      • operationStatusstring

        Can be null.

      • reviewStatusstring

        One of approved, partially_approved, rejected, unknown.

      • rawReviewStatusstring

        Can be null.

      • rejectReasonsarray of string
      • passedLocationsarray of string
      • rejectionsarray of object
        6 child fields
        • reasonsarray of string
        • suggestionstring

          Can be null.

        • forbiddenPlacementsarray of string
        • forbiddenAgesarray of string
        • forbiddenLocationsarray of string
        • contentobject

          Can be null.

          5 child fields
          • typestring

            Can be null.

          • textstring

            Can be null.

          • imageIdstring

            Can be null.

          • videoIdstring

            Can be null.

          • musicIdstring

            Can be null.

    • readAtstring (date-time)
  • failedSmartPlusAdsarray of object
    • smartPlusAdIdstring
    • adGroupIdstring

      Can be null.

    • campaignIdstring

      Can be null.

    • errorobject
      2 child fields
      • tiktokCodeinteger

        Can be null.

      • messagestring
    • refusedAtstring (date-time)

      Can be null.

  • incompleteboolean
  • allFreshboolean
  • pendingSmartPlusAdIdsarray of string
  • retryAfterSecondsinteger

    Can be null.

  • refreshStatestring

    One of ok, paused, refused, error.

200 response
{
  "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"
}

Errors

Errors use one shape: { error, type, code, param?, details? }. The ones you are most likely to see here:

400invalid_request_errorA parameter or body field is missing or invalid. param names it.
401authentication_errorThe API key is missing, revoked or expired.
403permission_errorThe key is scoped to other profiles or has this resource group disabled.
429rate_limit_errorToo many requests this minute. Wait for Retry-After seconds.

Every code is listed in Errors.

More in Ad Campaigns

GETList adsGETList Google Ads recommendationsPOSTApply Google Ads recommendationsPOSTDismiss Google Ads recommendationsGETList portfolio bid strategiesPOSTCreate portfolio bid strategyPATCHUpdate portfolio bid strategyGETList shared budgetsPOSTCreate a shared budgetGETList Search keywordsPOSTAdd Search ad-group keywordsPATCHPause or enable a Search keywordDELRemove a Search keywordGETList campaignsPOSTCreate a standalone campaignPUTPause or resume a campaignGETRead a campaign's ad schedule (dayparting)PUTReplace a campaign's ad schedule (dayparting)GETRead a campaign's current biddingGETGet live campaign detailsPUTUpdate a campaignDELDelete a campaignGETList campaign-level negative keywordsPUTReplace campaign-level negative keywordsPOSTPause or resume many campaignsPOSTDuplicate a campaignGETRead a Google campaign's device, location, excluded location, and language targetingPUTEdit a Google campaign's device, location, excluded location, or language targetingGETList ad setsPOSTCreate a standalone ad groupPOSTDuplicate an ad setPOSTDuplicate an adGETGet live ad-set detailsPUTUpdate an ad setDELDelete an ad setGETRead a Reddit ad group's targeting and schedulePUTPause or resume a single ad setGETGet campaign treeGETGet daily account metricsGETGet ad detailsPUTUpdate adDELCancel an adPUTPause or resume a single adGETList campaign assetsPOSTAttach campaign assetsPUTUpdate campaign assetsDELRemove campaign assetsGETList ad-group assetsPOSTAttach ad-group assetsPUTUpdate ad-group assetsDELRemove ad-group assetsGETRead the platform's review verdict for an adGETReview status of each creative in a TikTok Smart+ adGETList ads that need attentionPOSTDismiss an ads alertGETList campaign negative listsPUTReplace campaign negative listsPOSTBoost post as adGETList Performance Max asset groupsPOSTCreate a Performance Max asset groupGETGet a Performance Max asset groupPATCHUpdate a Performance Max asset groupDELRemove a Performance Max asset groupPOSTLink or unlink asset group assetsPUTReplace an asset group's listing-group treePOSTCreate standalone adGETGet campaign conversion goalsPATCHUpdate campaign conversion goals