Zernio
APIFor you
Zernio
APIFor you
Platforms

TikTok Ads

Overview

Build

Create adsSpark Ads

Target

TargetingCustom Audiences

Measure

Analytics & insightsPixelsOffline conversions

Operate

Manage adsAd comments

Reference

Limits & errors
Dashboard
OverviewPlatformsAPI ReferenceResources
TikTok Ads

Ad comments

Read the comments on a TikTok ad, Spark Ads included, then reply to, hide or delete them.


Read the comments on a TikTok ad with GET /v1/ads/{adId}/comments, then reply to, hide or delete them. It covers paid video ads and Spark Ads, dark posts included.

Before you start

Comments on organic posts are read and moderated through the inbox instead.

{adId} takes the Zernio _id or TikTok's numeric platformAdId.

Read the comments

TikTok reads comments over a date window rather than all of history. since and until take a YYYY-MM-DD date, at most 30 days apart, and default to the last 30 days.

const { data: thread } = await zernio.adaccounts.getAdComments({
  path: { adId: '1790166588666881' },
  query: { since: '2026-08-15', until: '2026-09-09', limit: 50 }
});

for (const comment of thread.comments) console.log(comment.id, comment.canReply);

Response (200), trimmed:

{
  "status": "success",
  "comments": [
    {
      "id": "7412345678901234567",
      "message": "Does this come in blue?",
      "canReply": true,
      "canDelete": false,
      "canHide": true
    }
  ],
  "pagination": { "hasMore": true, "cursor": "..." },
  "meta": { "platform": "tiktok", "adId": "66f0a1b2c3d4e5f6a7b8c9d0", "platformAdId": "1790166588666881", "tiktokItemId": null }
}

The response shape matches GET /v1/inbox/comments/{postId}. Page with pagination.cursor and the same limit: the cursor carries the date window, so do not re-send the dates.

TikTok returns replies as separate comments with parentId. Nested reply fetching is not supported.

Reply to a comment

Reply to a first-level comment with POST /v1/ads/{adId}/comments/{commentId}/reply. Replies to replies are rejected.

const { data: reply } = await zernio.adaccounts.replyToAdComment({
  path: { adId: '1790166588666881', commentId: '7412345678901234567' },
  body: { text: 'Thanks, sending you the specs now.' }
});

Response (200):

{ "status": "success", "commentId": "7512345678901234567" }

commentId is the new reply. The reply is not idempotent, so do not retry an uncertain response blindly.

Hide or delete a comment

POST /v1/ads/{adId}/comments/{commentId}/hide with { "hidden": true } hides any comment. Send { "hidden": false } to make it public again.

DELETE /v1/ads/{adId}/comments/{commentId} deletes your own comment or reply. Other users' comments can be hidden instead.

curl -X POST "https://zernio.com/api/v1/ads/1790166588666881/comments/7412345678901234567/hide" \
  -H "Authorization: Bearer $ZERNIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "hidden": true }'

curl -X DELETE "https://zernio.com/api/v1/ads/1790166588666881/comments/7412345678901234567" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"

Response (200) to the hide:

{ "status": "success", "commentId": "7412345678901234567", "hidden": true }

The moderation routes take the same since and until as the listing, because TikTok looks a comment up inside a window. Pass the window you listed with when you act on a comment near its edge.

How it behaves

Each comment carries three flags:

FlagRequires
canReplyA first-level comment, comment-management permission, a video item ID and a supported identity (TT_USER or CUSTOMIZED_USER)
canDeleteTikTok's own-comment deletion capability, a video item ID and a supported identity
canHideOnly the advertiser and comment IDs, so it is true without an identity
  • The flags guide the UI and never block the listing. A direct reply or delete can resolve a missing identity or item ID and succeed after a false flag.
  • Listing works from the stored ad group alone. meta.tiktokItemId: null does not prevent it.
  • Listing filters each ad-group page to the requested ad, so a page can be empty while pagination.hasMore is true. Keep paging.
  • Before moderating, Zernio checks the comment belongs to the ad. The lookup scans at most 2,000 ad-group comments.

If it fails

ErrorCauseFix
400 with code ad_not_commentableThe ad has no ad groupCheck the ad in TikTok Ads Manager.
400 on placementplacement is Meta onlyDrop the parameter.
403 with code feature_not_availableNo supported identity, or no own-comment deletion for a deleteHide the comment instead, or check the ad's identity.
403 with code insufficient_permissionsTikTok denied ad-detail access or comment managementGrant the permission and reconnect TikTok Ads.
404 with code ad_not_foundTikTok no longer returns the ad (deleted or archived)Check the ad in TikTok Ads Manager.
404 with code resource_not_foundThe comment is not on this ad in the date windowPass the since and until you listed with, or narrow the window.
502TikTok rejected the request or was unavailableRead platformError for TikTok's code and message.

Related

  • List comments on an ad: every parameter of the listing.
  • Reply to an ad comment, hide and delete: the moderation routes.
  • TikTok inbox: comments on organic posts.
  • Pause or resume: the rest of an ad's lifecycle.
Was this page helpful?

Manage ads

Pause or resume TikTok campaigns and ads, add ads to an existing ad group, swap creatives, duplicate campaigns and list agency Business Centers.

Limits & errors

What TikTok Ads through Zernio does not support, and the errors it returns most often.

On this page

Before you startRead the commentsReply to a commentHide or delete a commentHow it behavesIf it failsRelated