One store's published videos
const url = 'https://data.creatorain.com/partner/v1/locations/store_123/content?limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://data.creatorain.com/partner/v1/locations/store_123/content?limit=50' \ --header 'Authorization: Bearer <token>'Videos filmed at this store that are LIVE on a platform, newest first. Approved but unpublished work is not listed: a merchant’s dashboard counts what is on the internet.
metrics is null until the video’s numbers have first been read from the public post,
which is deliberate: {"views": 0} would be a claim that a video got no views, and null
says nobody counted. Once it has been read, metrics is an object and any single number
the platform does not publish is null, never 0. metrics_measured_at gives the time
each number was read, and is null beside a number that was never read.
EITHER CREDENTIAL: the partner key or that store’s own token.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”YOUR id for the store, as you sent it to POST /locations.
Example
store_123Query Parameters
Section titled “Query Parameters”The next_cursor from the previous page, sent back UNCHANGED. Omit it for the first page.
It is opaque: do not build one yourself. It names a POSITION in the sort order rather than
a count of rows to skip, which is why a page stays stable when a booking is touched between
two requests. A cursor we did not issue is refused with 400 validation_error, rather than
silently treated as the first page, so a broken client fails loudly instead of looping over
page one for ever.
Rows per page. Default 50, maximum 200. A larger value is CLAMPED to 200 rather than refused, so you never have to guess the ceiling.
Responses
Section titled “Responses”A page of published videos.
object
One published video filmed at the store.
object
RFC 3339 with the store’s offset.
Whether the store’s own account is a co-author of the post, read from the post’s
co-author list when the video’s numbers are read. false when we could not tell,
which includes every TikTok post (that feed has no co-author list) and any post not
yet read.
Whether the creator allowed the brand to reuse this content, as she chose it when she
signed her agreement. true allowed; false declined, so the video is for her own
post only; null when no choice was recorded (agreements signed before the option
existed).
object
NULL until the video’s numbers have first been read from the public post. After that it is an object, and a number the platform does not publish is null, never 0 (for example Instagram shares and saves).
object
Plays.
When each number in metrics was read. Null exactly when metrics is null.
object
Example
{ "items": [ { "post_url": "https://www.instagram.com/reel/abc123/", "platform": "instagram", "published_at": "2026-09-12T17:00:00-07:00", "timezone": "America/Los_Angeles", "metrics_measured_at": { "views": "2026-11-09T02:00:00Z", "likes": "2026-11-09T02:00:00Z", "comments": "2026-11-09T02:00:00Z", "shares": null, "saves": null } } ]}validation_error. field names the offending parameter.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}unauthorized. A missing, malformed, unknown or revoked key; or an invalid, expired or
wrong-store dashboard token. One answer for every case on purpose: the holder of a bad
credential learns nothing from the difference.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}location_not_found. No store of this key carries that partner_location_id.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}rate_limited. Over this key’s requests-per-minute ceiling.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}