Zernio
APIFor you
Zernio
APIFor you
API Reference

Campaigns and Ads

Overview

Get campaign treeGETGet daily account metricsGET

Campaigns

List campaignsGETCreate a standalone campaignPOSTGet live campaign detailsGETUpdate a campaignPUTDuplicate a campaignPOSTDelete a campaignDELETEPause or resume a campaignPUTPause or resume many campaignsPOSTList campaign assetsGETAttach campaign assetsPOSTUpdate campaign assetsPUTRemove campaign assetsDELETERead a Google campaign's device, location, excluded location, and language targetingGETEdit a Google campaign's device, location, excluded location, or language targetingPUTRead a campaign's ad schedule (dayparting)GETReplace a campaign's ad schedule (dayparting)PUTGet campaign conversion goalsGETUpdate campaign conversion goalsPATCH

Asset Groups

List Performance Max asset groupsGETCreate a Performance Max asset groupPOSTGet a Performance Max asset groupGETUpdate a Performance Max asset groupPATCHRemove a Performance Max asset groupDELETELink or unlink asset group assetsPOSTReplace an asset group's listing-group treePUT

Ad Sets

List ad setsGETCreate a standalone ad groupPOSTGet live ad-set detailsGETUpdate an ad setPUTDuplicate an ad setPOSTDelete an ad setDELETEPause or resume a single ad setPUTList ad-group assetsGETAttach ad-group assetsPOSTUpdate ad-group assetsPUTRemove ad-group assetsDELETE

Ads

List adsGETGet ad detailsGETCreate standalone adPOSTBoost post as adPOSTUpdate adPUTDuplicate an adPOSTCancel an adDELETEPause or resume a single adPUT

Keywords

List Search keywordsGETAdd Search ad-group keywordsPOSTPause or enable a Search keywordPATCHRemove a Search keywordDELETEList campaign-level negative keywordsGETReplace campaign-level negative keywordsPUTList campaign negative listsGETReplace campaign negative listsPUT

Bidding

Read a campaign's current biddingGETList portfolio bid strategiesGETCreate portfolio bid strategyPOSTUpdate portfolio bid strategyPATCH

Recommendations

List Google Ads recommendationsGETApply Google Ads recommendationsPOSTDismiss Google Ads recommendationsPOST

Other

Create a shared budgetPOSTRead the platform's review verdict for an adGETReview status of each creative in a TikTok Smart+ adGETList shared budgetsGETReview status of every TikTok Smart+ ad of an advertiserGET
Dashboard
OverviewPlatformsAPI ReferenceResources
Campaigns and Ads

Review status of every TikTok Smart+ ad of an advertiser

Returns the review verdict of every Upgraded Smart+ ad of one TikTok advertiser, with each creative's verdict, in one paginated read. Use it to refresh reviews periodically: one call (plus its pages) per advertiser per refresh, instead of GET /v1/ads/{adId}/tiktok-smart-plus-review per ad.

Zernio lists the advertiser's Smart+ ads with /smart_plus/ad/get/ (deleted ones only with includeDeleted=true; the listing is cached for 5 minutes) and reads /smart_plus/ad/review_info/ for up to 100 Smart+ ads per call, across ad groups, one call after another. A full refresh of N Smart+ ads costs about ceil(N / 100) listing calls and ceil(N / 100) review calls on TikTok. Each review is cached for 10 minutes per connection, advertiser and Smart+ ad, shared with the single-ad read, so cached reviews are served without calling TikTok and readAt can be up to 10 minutes old.

TikTok's review endpoint has a strict quota of its own. When it is over quota (or Zernio is holding review reads for this advertiser and connection after an overage), Zernio stops calling TikTok and answers 200 with the reviews it has: incomplete: true, the Smart+ ads still to read in pendingSmartPlusAdIds, and retryAfterSeconds (also in the Retry-After header). Every Smart+ ad of the page is in items, failedSmartPlusAds or pendingSmartPlusAdIds. Wait retryAfterSeconds and read the same page again: only the pending ads reach TikTok.

A Smart+ ad whose review TikTok refuses on its own (for example one deleted on TikTok since the listing was cached) is returned in failedSmartPlusAds with TikTok's error, and the rest of the page is still read. Zernio finds it by splitting the refused batch in halves, at most 16 extra TikTok calls per page; ads still unresolved after that come back in failedSmartPlusAds with the batch error. A refusal of a single ad is remembered for 10 minutes. When both halves of a refused batch are refused with the same TikTok error (for example a permission error), the whole request fails with that error instead.

Items are sorted by adGroupId, then smartPlusAdId, so pages are stable. Read the pages of one advertiser one after another, not in parallel: parallel pages spend the review quota at the same time and come back incomplete.


PlatformsTikTok
GET
/v1/ads/tiktok-smart-plus-reviews

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Query Parameters

accountId*string

A tiktok or tiktokads account ID

adAccountId*string

TikTok advertiser ID

includeDeleted?boolean

Also return Smart+ ads deleted on TikTok (listed with primary_status: STATUS_ALL).

Defaultfalse
page?integer
Range1 <= value
Default1
pageSize?integer
Range1 <= value <= 1000
Default500

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adcampaigns.listTikTokSmartPlusReviews({  query: {    accountId: 'account_abc123',    adAccountId: 'adaccount_abc123',  },});console.log(data);
{  "adAccountId": "string",  "includeDeleted": true,  "page": 0,  "pageSize": 0,  "totalPages": 0,  "totalSmartPlusAds": 0,  "items": [    {      "smartPlusAdId": "string",      "adGroupId": "string",      "campaignId": "string",      "review": {        "reviewStatus": "approved",        "rawReviewStatus": "string",        "rejectReasons": [          "string"        ],        "passedLocations": [          "string"        ],        "appealStatus": "string",        "appealRejectReasons": [          "string"        ],        "rejections": [          {            "reasons": [              "string"            ],            "suggestion": "string",            "forbiddenPlacements": [              "string"            ],            "forbiddenAges": [              "string"            ],            "forbiddenLocations": [              "string"            ],            "content": {              "type": "string",              "text": "string",              "imageId": "string",              "videoId": "string",              "musicId": "string"            }          }        ]      },      "materials": [        {          "adMaterialId": "string",          "materialType": "spark_post",          "tiktokItemId": "string",          "videoId": "string",          "name": "string",          "operationStatus": "string",          "reviewStatus": "approved",          "rawReviewStatus": "string",          "rejectReasons": [            "string"          ],          "passedLocations": [            "string"          ],          "rejections": [            {              "reasons": [                "string"              ],              "suggestion": "string",              "forbiddenPlacements": [                "string"              ],              "forbiddenAges": [                "string"              ],              "forbiddenLocations": [                "string"              ],              "content": {                "type": "string",                "text": "string",                "imageId": "string",                "videoId": "string",                "musicId": "string"              }            }          ]        }      ],      "readAt": "2019-08-24T14:15:22Z"    }  ],  "failedSmartPlusAds": [    {      "smartPlusAdId": "string",      "adGroupId": "string",      "campaignId": "string",      "error": {        "tiktokCode": 0,        "message": "string"      }    }  ],  "incomplete": true,  "pendingSmartPlusAdIds": [    "string"  ],  "retryAfterSeconds": 0}
Was this page helpful?

List shared budgets

Lists a Google Ads account's shared budgets and how many campaigns draw from each. Lists the Google Ads customer's shared campaign budgets (`campaign_budget.explicitly_shared` = true, not removed), with how many campaigns use each. Move a campaign onto one with `sharedBudgetId` on PUT /v1/ads/campaigns/{campaignId}. Google only; other platforms return 501.

Creative library

Lists the creatives saved in a Meta ad account so you can reuse one in a new ad. Lists the ad account's creative library (Meta's `/act_X/adcreatives`), rows returned verbatim. The default projection covers id, name, status, object type, thumbnail, object_story_spec / asset_feed_spec and url_tags; `fields` is a raw-passthrough override. Any creative id here is reusable on the create endpoints via `existingCreativeId`.