---
title: "Per-creative performance inside TikTok Smart+ ads"
method: GET
path: "/v1/ads/tiktok-smart-plus-materials"
tags: ["Ad Insights"]
---

# Per-creative performance inside TikTok Smart+ ads

`GET /v1/ads/tiktok-smart-plus-materials`

Breaks a Smart+ ad (or ad group) down by creative material, one row per Spark post, video or image, from TikTok's Smart+ material report. For a Spark post `tiktokItemId` is the TikTok post id. Conversion metrics are TikTok web (pixel) events. TikTok allows two dimensions per report, so rows are keyed by the Smart+ ad (`level=ad`) or by the ad group (`level=adGroup`), not both. Metrics TikTok returns empty come back as null.

## Query parameters

- `accountId` string, required
- `adAccountId` string, required
- `startDate` string, date, required
- `endDate` string, date, required
- `level` 'ad' | 'adGroup'
- `smartPlusAdIds` string
- `adGroupIds` string
- `page` integer
- `pageSize` integer

## Response `200`

Material rows

- object
  - `adAccountId` string
  - `level` 'ad' | 'adGroup'
  - `startDate` string
  - `endDate` string
  - `page` integer
  - `pageSize` integer
  - `totalRows` integer
  - `totalPages` integer
  - `rows` object[]
    - `materialId` string — TikTok main material id
    - `materialType` string, nullable — e.g. VIDEO_SPARK_ADS, VIDEO, IMAGE
    - `tiktokItemId` string, nullable — The TikTok post id when the material is a Spark post
    - `name` string, nullable — Material name or post caption
    - `smartPlusAdId` string, nullable — Set when level=ad
    - `adGroupId` string, nullable — Set when level=adGroup
    - `metrics` object
      - `spend` number, nullable
      - `impressions` number, nullable
      - `clicks` number, nullable
      - `cpc` number, nullable
      - `addToCart` number, nullable
      - `initiateCheckout` number, nullable
      - `addPaymentInfo` number, nullable
      - `purchases` number, nullable
      - `purchaseValue` number, nullable
      - `roas` number, nullable

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — The account or requested resource was not found or is not accessible. An account ID may have been disconnected and removed. Read GET /v1/accounts for current account IDs.
- `409` — The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.

## Changes

- **2026-09-25** `2c04683ce694` — 12 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/adAccountId` to the response with the `404` status
  - added the optional property `details/adAccountId` to the response with the `409` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - …8 more
- **2026-09-25** `a0d8f21b5abe` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/tiktok-smart-plus-materials/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/b2325332041a?raw)
