Samples

Daily sampling matrix by product

Day-by-day sampling for every product at once: one row per product, one column per day, and a Requested / Approved / Shipped count in each cell. The same matrix the portal's Sample funnel tab renders, from the same query layer.

Days are the shop's own calendar days, not UTC — a request made at 9pm in the shop's timezone belongs to that day. Set x-shop-id to a single shop; all or a comma-separated list is rejected, because two shops in different regions do not share a day axis.

requested and shipped are TikTok's own daily counts — the numbers Seller Center and the portal's Sample requests and Samples shipped cards show — whenever Seller Center data covers the window. They include samples TikTok's sample-request list never shows, so they can be higher than a per-request export. approved counts every TikTok sample application on its own and equals the portal's Samples approved card. stage_sources says which source served each stage.

requested counts requests MADE that day; approved and shipped count the approvals and shipments that HAPPENED that day, whatever day the request was made — so a product can show approvals on a day it received no requests, and the columns are not a funnel of one another.

start_date and end_date are required; a window longer than 92 days keeps its most recent 92 days (clamped_to_days says so, and date_range echoes what was served). Pagination is over PRODUCTS; totals always covers every in-scope product, not just the page.

requested is dated by TikTok's own request time, so history from before the shop joined lands on its real days. Approvals, and shipments counted from applications, recorded during a shop's first CRM sync are excluded, so onboarding day does not read as a spike of real activity.

post/samples/daily-by-product

Request body

start_datestring date required

First day of the window (inclusive).

end_datestring date required

Last day of the window (inclusive).

product_idsstring[] nullable

Restrict the matrix to these products. Omit for every product with sampling activity in the window.

pageinteger

Page over PRODUCTS (rows), not days.

page_sizeinteger

Response

Successful Response

datesstring[] required

The day axis, YYYY-MM-DD, oldest first, in the shop's own timezone. Every per-day array aligns with it.

totalsobject required

Per-day totals across EVERY in-scope product (not just this page), keyed by stage.

clamped_to_daysinteger nullable

Set to 92 when a longer window was clamped to its last 92 days; null otherwise.

Changes

Changed in 2 of the 28 revisions of this API.2

Of the 28 revisions, 1 has no diff computed.