Content
Search, list, and aggregate content (posts, videos, images) across the platforms Zelf tracks. Supports rich filtering by metrics, platform, language, date window, and creator, plus optional brand context.
List Content
/api/v1/content/content.listReturns a paginated list of content. Every request must scope what it covers: supply at least one of creator_id, creator_username, search, brand_id, or external_id, otherwise the request is rejected with VALIDATION_ERROR. By default results are ordered by posted_at descending (most recently posted first); override with order_by.
Every response echoes the effective defaults in applied_filters (the resolved date window, page, page_size, and brand_id), so an empty results set can be explained.
Dates
Every request covers a time window. Four parameters define it.
| Parameter | Type | Defines |
|---|---|---|
posted_after | timestamp | Start of the window |
posted_within_hours | integer, 1 to 8760 | Start of the window, counted back from the current time |
posted_within_days | integer, 1 to 365 | Start of the window, counted back from the current time |
posted_before | timestamp | End of the window |
A request with no date parameter covers the last 7 days. applied_filters reports this as posted_within_days: 7.
Three parameters define the start of the window, so a request may carry more than one. Such a request is valid. The API applies the first parameter present in this order and ignores the rest:
posted_afterposted_within_hoursposted_within_days
applied_filters contains only the parameter that was applied, so it identifies the window that produced a response.
posted_before defines the end of the window and combines with any of the three. On its own it covers the 366 days before it. With posted_within_hours or posted_within_days the window is counted back from posted_before instead of from the current time, so posted_before=2026-09-01T00:00:00Z with posted_within_hours=24 covers 2026-08-31T00:00:00Z to 2026-09-01T00:00:00Z.
Two limits apply to every window. posted_after and posted_before may be at most 366 days apart, and a longer period is read as consecutive requests. Content posted before 2025-01-01 is not available.
A value outside the ranges in the table returns VALIDATION_ERROR. Such values are rejected, not clamped: posted_within_days=400 is an error rather than 365.
Results are paginated: page defaults to 1 and page_size to 30, which is also the maximum (larger values are reduced to 30). item_count is the number of rows in the returned page, not the size of the whole match set, and next is non-null while further pages remain. For the total number of matching posts, call content.statistics with the same query and read post_count.
When brand_id is omitted, the brand-specific fields (brand_id, is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are returned as null, and the brand-only filters and sorts return BRAND_ID_REQUIRED. Supply brand_id (one or more values, comma-separated) to populate those fields and enable the brand-only filters. Each row's id is the value to use for content.details and for the comments.list content_id.
Examples
- Full-text search over the last 7 days (brand fields null):
GET /api/v1/content/?search=running+shoes - Brand content over an explicit window:
GET /api/v1/content/?brand_id=brd_123&posted_after=2026-01-01T00:00:00Z&posted_before=2026-06-30T23:59:59Z - Most-viewed first: add
&order_by=view_count. Sort direction is inverted, so a bare key sorts descending and a-prefix ascending.
Parameters
searchType: stringFull-text search across the caption, transcript, summary, and hashtags.
Syntax
- Multiple words are combined with AND:
nike running matches content containing both nike and running.
OR (case-insensitive) matches either side: nike OR adidas.
NOT (case-insensitive) excludes a term: running NOT marathon matches running but not marathon.
- Wrap a phrase in double quotes to match the words in order:
"summer collection".
- Negate a phrase with
NOT: NOT "out of stock".
- Group with parentheses to combine operators:
(nike OR adidas) running.
ONEAR/n (case-insensitive) matches terms within n words of each other, in order: apple ONEAR/2 watch matches apple watch and apple smart watch, but not watch ... apple. It binds more tightly than AND and OR, so apple ONEAR/2 watch AND cheap is interpreted as (apple near watch) AND cheap.
Examples
nike running - contains both terms.
nike OR adidas - contains either brand.
"summer sale" NOT clearance - the exact phrase, without clearance.
(running OR cycling) NOT "beginner guide" - either sport, excluding the phrase.
apple ONEAR/2 watch - apple within two words before watch.
searchType: stringFull-text search across the caption, transcript, summary, and hashtags.
Syntax
- Multiple words are combined with AND:
nike runningmatches content containing bothnikeandrunning. OR(case-insensitive) matches either side:nike OR adidas.NOT(case-insensitive) excludes a term:running NOT marathonmatchesrunningbut notmarathon.- Wrap a phrase in double quotes to match the words in order:
"summer collection". - Negate a phrase with
NOT:NOT "out of stock". - Group with parentheses to combine operators:
(nike OR adidas) running. ONEAR/n(case-insensitive) matches terms withinnwords of each other, in order:apple ONEAR/2 watchmatchesapple watchandapple smart watch, but notwatch ... apple. It binds more tightly thanANDandOR, soapple ONEAR/2 watch AND cheapis interpreted as(apple near watch) AND cheap.
Examples
nike running- contains both terms.nike OR adidas- contains either brand."summer sale" NOT clearance- the exact phrase, withoutclearance.(running OR cycling) NOT "beginner guide"- either sport, excluding the phrase.apple ONEAR/2 watch-applewithin two words beforewatch.
brand_id Type: stringOne or more brand ids, comma-separated, as returned by brands.list. Scopes the query to those brands, populates the brand-specific fields, and enables the brand-only filters and sorts. Any id you cannot access returns 403, and a malformed value returns INVALID_ID.
brand_id Type: stringOne or more brand ids, comma-separated, as returned by brands.list. Scopes the query to those brands, populates the brand-specific fields, and enables the brand-only filters and sorts. Any id you cannot access returns 403, and a malformed value returns INVALID_ID.
creator_id Type: stringLimit results to a single creator by id (from /api/v1/creator/).
creator_id Type: stringLimit results to a single creator by id (from /api/v1/creator/).
creator_username Type: stringCreator username substring. Case-insensitive.
creator_username Type: stringCreator username substring. Case-insensitive.
external_id Type: stringPlatform-side post id. Matched exactly.
external_id Type: stringPlatform-side post id. Matched exactly.
platformType: enum[]unique items truePlatforms to include, comma-separated.
Show values
platformType: enum[]unique items truePlatforms to include, comma-separated.
- unique items
- true
instagramtiktokyoutubeposted_after Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Lower Bound)
posted_after Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Lower Bound)
posted_before Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Upper Bound)
posted_before Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Upper Bound)
posted_within_hours Type: integerminimum 1 · maximum 8760Start of the window, counted back from the current time, in hours (1-8760). Takes precedence over posted_within_days. Counted back from posted_before when that is also supplied.
posted_within_hours Type: integerminimum 1 · maximum 8760Start of the window, counted back from the current time, in hours (1-8760). Takes precedence over posted_within_days. Counted back from posted_before when that is also supplied.
- minimum
- 1
- maximum
- 8760
posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). Defaults to 7 when no date parameter is supplied. posted_after and posted_within_hours take precedence over it.
posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). Defaults to 7 when no date parameter is supplied. posted_after and posted_within_hours take precedence over it.
- minimum
- 1
- maximum
- 365
order_by Type: enum[]unique items trueSort the results. Any of: posted_at, view_count, like_count, comment_count, share_count, engagement_rate, total_engagement, earned_media_value_cents, net_promoter_score, relevance_score. A bare key sorts descending; prefix with - to sort ascending.
Sort direction is inverted: order_by=field sorts descending and order_by=-field sorts ascending. Comma-separate to sort by multiple fields.
Show values
order_by Type: enum[]unique items trueSort the results. Any of: posted_at, view_count, like_count, comment_count, share_count, engagement_rate, total_engagement, earned_media_value_cents, net_promoter_score, relevance_score. A bare key sorts descending; prefix with - to sort ascending.
Sort direction is inverted: order_by=field sorts descending and order_by=-field sorts ascending. Comma-separate to sort by multiple fields.
- unique items
- true
posted_at-posted_atview_count-view_countlike_count-like_countcomment_count-comment_countshare_count-share_countengagement_rate-engagement_ratetotal_engagement-total_engagementearned_media_value_cents-earned_media_value_centsnet_promoter_score-net_promoter_scorerelevance_score-relevance_scorecomment_count Type: integerNumber of comments on the post.
comment_count Type: integerNumber of comments on the post.
content_form Type: enumContent medium. Case-sensitive; values are stored and returned in uppercase.
Show values
content_form Type: enumContent medium. Case-sensitive; values are stored and returned in uppercase.
VIDEOPHOTOcreator_follower_count Type: integerFollower count of the post's creator.
creator_follower_count Type: integerFollower count of the post's creator.
earned_media_value_cents Type: integerEstimated earned media value, in cents.
earned_media_value_cents Type: integerEstimated earned media value, in cents.
engagement_rate Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%).
engagement_rate Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%).
is_influencer Type: booleanLimit results to the brand's influencer content, or exclude it with false. Requires brand_id.
is_influencer Type: booleanLimit results to the brand's influencer content, or exclude it with false. Requires brand_id.
is_owned Type: booleanLimit results to content owned by the brand. Requires brand_id.
is_owned Type: booleanLimit results to content owned by the brand. Requires brand_id.
is_tagged Type: booleanLimit results to content where the brand is tagged. Requires brand_id.
is_tagged Type: booleanLimit results to content where the brand is tagged. Requires brand_id.
languageType: string[]Language codes to include, comma-separated (for example, en, es).
languageType: string[]Language codes to include, comma-separated (for example, en, es).
like_count Type: integerNumber of likes on the post.
like_count Type: integerNumber of likes on the post.
media_duration Type: number(float)Length of the media in seconds.
media_duration Type: number(float)Length of the media in seconds.
mention_type Type: enum[]unique items trueLimit results to these mention kinds, comma-separated. Requires brand_id.
Show values
mention_type Type: enum[]unique items trueLimit results to these mention kinds, comma-separated. Requires brand_id.
- unique items
- true
contentcommentmention_type_not Type: enum[]unique items trueExclude these mention kinds, comma-separated. Requires brand_id.
Show values
mention_type_not Type: enum[]unique items trueExclude these mention kinds, comma-separated. Requires brand_id.
- unique items
- true
contentcommentnet_promoter_score Type: integerBrand net promoter score for the content. Requires brand_id.
net_promoter_score Type: integerBrand net promoter score for the content. Requires brand_id.
postedType: string(date-time)When the post was published (UTC, ISO 8601).
postedType: string(date-time)When the post was published (UTC, ISO 8601).
total_engagement Type: integerTotal engagement (likes plus comments plus shares).
total_engagement Type: integerTotal engagement (likes plus comments plus shares).
view_count Type: integerNumber of views on the post.
view_count Type: integerNumber of views on the post.
comment_count_max Type: integerNumber of comments on the post. (Inclusive Upper Bound)
comment_count_max Type: integerNumber of comments on the post. (Inclusive Upper Bound)
comment_count_min Type: integerNumber of comments on the post. (Inclusive Lower Bound)
comment_count_min Type: integerNumber of comments on the post. (Inclusive Lower Bound)
creator_follower_count_max Type: integerFollower count of the post's creator. (Inclusive Upper Bound)
creator_follower_count_max Type: integerFollower count of the post's creator. (Inclusive Upper Bound)
creator_follower_count_min Type: integerFollower count of the post's creator. (Inclusive Lower Bound)
creator_follower_count_min Type: integerFollower count of the post's creator. (Inclusive Lower Bound)
earned_media_value_cents_max Type: integerEstimated earned media value, in cents. (Inclusive Upper Bound)
earned_media_value_cents_max Type: integerEstimated earned media value, in cents. (Inclusive Upper Bound)
earned_media_value_cents_min Type: integerEstimated earned media value, in cents. (Inclusive Lower Bound)
earned_media_value_cents_min Type: integerEstimated earned media value, in cents. (Inclusive Lower Bound)
engagement_rate_max Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Upper Bound)
engagement_rate_max Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Upper Bound)
engagement_rate_min Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Lower Bound)
engagement_rate_min Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Lower Bound)
like_count_max Type: integerNumber of likes on the post. (Inclusive Upper Bound)
like_count_max Type: integerNumber of likes on the post. (Inclusive Upper Bound)
like_count_min Type: integerNumber of likes on the post. (Inclusive Lower Bound)
like_count_min Type: integerNumber of likes on the post. (Inclusive Lower Bound)
media_duration_max Type: number(float)Length of the media in seconds. (Inclusive Upper Bound)
media_duration_max Type: number(float)Length of the media in seconds. (Inclusive Upper Bound)
media_duration_min Type: number(float)Length of the media in seconds. (Inclusive Lower Bound)
media_duration_min Type: number(float)Length of the media in seconds. (Inclusive Lower Bound)
net_promoter_score_max Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Upper Bound)
net_promoter_score_max Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Upper Bound)
net_promoter_score_min Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Lower Bound)
net_promoter_score_min Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Lower Bound)
total_engagement_max Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Upper Bound)
total_engagement_max Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Upper Bound)
total_engagement_min Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Lower Bound)
total_engagement_min Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Lower Bound)
view_count_max Type: integerNumber of views on the post. (Inclusive Upper Bound)
view_count_max Type: integerNumber of views on the post. (Inclusive Upper Bound)
view_count_min Type: integerNumber of views on the post. (Inclusive Lower Bound)
view_count_min Type: integerNumber of views on the post. (Inclusive Lower Bound)
Returns Content
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd -> abcd
- TikTok:
https://www.tiktok.com/@username/video/12345678 -> 12345678
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd->abcd - TikTok:
https://www.tiktok.com/@username/video/12345678->12345678
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
content_form Type: stringor nullWhether the content is a video or an image.
content_form Type: stringor nullWhether the content is a video or an image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
view_count Type: integeror nullTotal number of times the content has been viewed.
view_count Type: integeror nullTotal number of times the content has been viewed.
like_count Type: integeror nullTotal number of likes the content has received.
like_count Type: integeror nullTotal number of likes the content has received.
comment_count Type: integeror nullTotal number of comments on the content.
comment_count Type: integeror nullTotal number of comments on the content.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
languageType: stringor nullISO 639 code of the content's primary language.
languageType: stringor nullISO 639 code of the content's primary language.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
creatorType: ContentCreatorread-onlyThe creator who published the content.
Show child attributes
creatorType: ContentCreatorread-onlyThe creator who published the content.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.nameType: stringor nullThe creator's display name on the platform.
creator.nameType: stringor nullThe creator's display name on the platform.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
captionType: stringShort caption or title of the post (the primary user-visible text).
captionType: stringShort caption or title of the post (the primary user-visible text).
descriptionType: stringLong-form description of the post.
descriptionType: stringLong-form description of the post.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcd
https://www.tiktok.com/@username/video/12345678
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcdhttps://www.tiktok.com/@username/video/12345678
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
ai_summary Type: stringor nullShort AI-generated summary of the content.
ai_summary Type: stringor nullShort AI-generated summary of the content.
Responses
Content
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd -> abcd
- TikTok:
https://www.tiktok.com/@username/video/12345678 -> 12345678
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd->abcd - TikTok:
https://www.tiktok.com/@username/video/12345678->12345678
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
content_form Type: stringor nullWhether the content is a video or an image.
content_form Type: stringor nullWhether the content is a video or an image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
view_count Type: integeror nullTotal number of times the content has been viewed.
view_count Type: integeror nullTotal number of times the content has been viewed.
like_count Type: integeror nullTotal number of likes the content has received.
like_count Type: integeror nullTotal number of likes the content has received.
comment_count Type: integeror nullTotal number of comments on the content.
comment_count Type: integeror nullTotal number of comments on the content.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
languageType: stringor nullISO 639 code of the content's primary language.
languageType: stringor nullISO 639 code of the content's primary language.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
creatorType: ContentCreatorread-onlyThe creator who published the content.
Show child attributes
creatorType: ContentCreatorread-onlyThe creator who published the content.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.nameType: stringor nullThe creator's display name on the platform.
creator.nameType: stringor nullThe creator's display name on the platform.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
captionType: stringShort caption or title of the post (the primary user-visible text).
captionType: stringShort caption or title of the post (the primary user-visible text).
descriptionType: stringLong-form description of the post.
descriptionType: stringLong-form description of the post.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcd
https://www.tiktok.com/@username/video/12345678
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcdhttps://www.tiktok.com/@username/video/12345678
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
ai_summary Type: stringor nullShort AI-generated summary of the content.
ai_summary Type: stringor nullShort AI-generated summary of the content.
Get Content Statistics
/api/v1/content/statistics/content.statisticsReturns a single aggregate of reach, engagement, value, and creator counts over the same content set that content.list would return for an identical query. The post_count is the number of posts in that whole set, across every page the list would return, and each other total is the sum over those same posts. content.list never counts the full set: its item_count is only the number of rows in the page it returned, so post_count here is the only total available.
This accepts every filter content.list accepts and applies the same defaults and requirements: every request must scope what it covers with at least one of creator_id, creator_username, search, brand_id, or external_id (else VALIDATION_ERROR); brand-only filters and sorts still require brand_id. order_by is validated the same as in content.list (brand-only sorts still require brand_id) but has no effect on the aggregated totals. Returns a single totals object (item_count: 1), not paginated, and echoes the resolved date window and brand_id in applied_filters.
Dates
content.statistics takes the same four date parameters as content.list and applies them identically. posted_after, posted_within_hours (1 to 8760) and posted_within_days (1 to 365) define the start of the window; posted_before defines the end.
A request with no date parameter covers the last 7 days. A request carrying more than one start parameter is valid, and the first present in the order posted_after, posted_within_hours, posted_within_days is applied; applied_filters reports that one. posted_after and posted_before may be at most 366 days apart.
Both endpoints apply these parameters identically, so one set of dates covers the same posts on each. post_count is therefore the size of the set content.list pages through.
Supply brand_id (one or more values, comma-separated) to scope the totals the same way the list does. Each piece of content is counted once even when several brand_id values match it.
Examples
- Totals for a search over the last 7 days:
GET /api/v1/content/statistics/?search=running+shoes - Brand totals over an explicit window:
GET /api/v1/content/statistics/?brand_id=brd_123&posted_after=2026-01-01T00:00:00Z&posted_before=2026-06-30T23:59:59Z - Totals for a single platform: add
&platform=tiktok.
Parameters
searchType: stringFull-text search across the caption, transcript, summary, and hashtags.
Syntax
- Multiple words are combined with AND:
nike running matches content containing both nike and running.
OR (case-insensitive) matches either side: nike OR adidas.
NOT (case-insensitive) excludes a term: running NOT marathon matches running but not marathon.
- Wrap a phrase in double quotes to match the words in order:
"summer collection".
- Negate a phrase with
NOT: NOT "out of stock".
- Group with parentheses to combine operators:
(nike OR adidas) running.
ONEAR/n (case-insensitive) matches terms within n words of each other, in order: apple ONEAR/2 watch matches apple watch and apple smart watch, but not watch ... apple. It binds more tightly than AND and OR, so apple ONEAR/2 watch AND cheap is interpreted as (apple near watch) AND cheap.
Examples
nike running - contains both terms.
nike OR adidas - contains either brand.
"summer sale" NOT clearance - the exact phrase, without clearance.
(running OR cycling) NOT "beginner guide" - either sport, excluding the phrase.
apple ONEAR/2 watch - apple within two words before watch.
searchType: stringFull-text search across the caption, transcript, summary, and hashtags.
Syntax
- Multiple words are combined with AND:
nike runningmatches content containing bothnikeandrunning. OR(case-insensitive) matches either side:nike OR adidas.NOT(case-insensitive) excludes a term:running NOT marathonmatchesrunningbut notmarathon.- Wrap a phrase in double quotes to match the words in order:
"summer collection". - Negate a phrase with
NOT:NOT "out of stock". - Group with parentheses to combine operators:
(nike OR adidas) running. ONEAR/n(case-insensitive) matches terms withinnwords of each other, in order:apple ONEAR/2 watchmatchesapple watchandapple smart watch, but notwatch ... apple. It binds more tightly thanANDandOR, soapple ONEAR/2 watch AND cheapis interpreted as(apple near watch) AND cheap.
Examples
nike running- contains both terms.nike OR adidas- contains either brand."summer sale" NOT clearance- the exact phrase, withoutclearance.(running OR cycling) NOT "beginner guide"- either sport, excluding the phrase.apple ONEAR/2 watch-applewithin two words beforewatch.
brand_id Type: stringOne or more brand ids, comma-separated, as returned by brands.list. Scopes the query to those brands, populates the brand-specific fields, and enables the brand-only filters and sorts. Any id you cannot access returns 403, and a malformed value returns INVALID_ID.
brand_id Type: stringOne or more brand ids, comma-separated, as returned by brands.list. Scopes the query to those brands, populates the brand-specific fields, and enables the brand-only filters and sorts. Any id you cannot access returns 403, and a malformed value returns INVALID_ID.
creator_id Type: stringLimit results to a single creator by id (from /api/v1/creator/).
creator_id Type: stringLimit results to a single creator by id (from /api/v1/creator/).
creator_username Type: stringCreator username substring. Case-insensitive.
creator_username Type: stringCreator username substring. Case-insensitive.
external_id Type: stringPlatform-side post id. Matched exactly.
external_id Type: stringPlatform-side post id. Matched exactly.
platformType: enum[]unique items truePlatforms to include, comma-separated.
Show values
platformType: enum[]unique items truePlatforms to include, comma-separated.
- unique items
- true
instagramtiktokyoutubeposted_after Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Lower Bound)
posted_after Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Lower Bound)
posted_before Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Upper Bound)
posted_before Type: string(date-time)When the post was published (UTC, ISO 8601). (Inclusive Upper Bound)
posted_within_hours Type: integerminimum 1 · maximum 8760Start of the window, counted back from the current time, in hours (1-8760). Takes precedence over posted_within_days. Counted back from posted_before when that is also supplied.
posted_within_hours Type: integerminimum 1 · maximum 8760Start of the window, counted back from the current time, in hours (1-8760). Takes precedence over posted_within_days. Counted back from posted_before when that is also supplied.
- minimum
- 1
- maximum
- 8760
posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). Defaults to 7 when no date parameter is supplied. posted_after and posted_within_hours take precedence over it.
posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). Defaults to 7 when no date parameter is supplied. posted_after and posted_within_hours take precedence over it.
- minimum
- 1
- maximum
- 365
order_by Type: enum[]unique items trueSort the results. Any of: posted_at, view_count, like_count, comment_count, share_count, engagement_rate, total_engagement, earned_media_value_cents, net_promoter_score, relevance_score. A bare key sorts descending; prefix with - to sort ascending.
Sort direction is inverted: order_by=field sorts descending and order_by=-field sorts ascending. Comma-separate to sort by multiple fields.
Show values
order_by Type: enum[]unique items trueSort the results. Any of: posted_at, view_count, like_count, comment_count, share_count, engagement_rate, total_engagement, earned_media_value_cents, net_promoter_score, relevance_score. A bare key sorts descending; prefix with - to sort ascending.
Sort direction is inverted: order_by=field sorts descending and order_by=-field sorts ascending. Comma-separate to sort by multiple fields.
- unique items
- true
posted_at-posted_atview_count-view_countlike_count-like_countcomment_count-comment_countshare_count-share_countengagement_rate-engagement_ratetotal_engagement-total_engagementearned_media_value_cents-earned_media_value_centsnet_promoter_score-net_promoter_scorerelevance_score-relevance_scorecomment_count Type: integerNumber of comments on the post.
comment_count Type: integerNumber of comments on the post.
content_form Type: enumContent medium. Case-sensitive; values are stored and returned in uppercase.
Show values
content_form Type: enumContent medium. Case-sensitive; values are stored and returned in uppercase.
VIDEOPHOTOcreator_follower_count Type: integerFollower count of the post's creator.
creator_follower_count Type: integerFollower count of the post's creator.
earned_media_value_cents Type: integerEstimated earned media value, in cents.
earned_media_value_cents Type: integerEstimated earned media value, in cents.
engagement_rate Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%).
engagement_rate Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%).
is_influencer Type: booleanLimit results to the brand's influencer content, or exclude it with false. Requires brand_id.
is_influencer Type: booleanLimit results to the brand's influencer content, or exclude it with false. Requires brand_id.
is_owned Type: booleanLimit results to content owned by the brand. Requires brand_id.
is_owned Type: booleanLimit results to content owned by the brand. Requires brand_id.
is_tagged Type: booleanLimit results to content where the brand is tagged. Requires brand_id.
is_tagged Type: booleanLimit results to content where the brand is tagged. Requires brand_id.
languageType: string[]Language codes to include, comma-separated (for example, en, es).
languageType: string[]Language codes to include, comma-separated (for example, en, es).
like_count Type: integerNumber of likes on the post.
like_count Type: integerNumber of likes on the post.
media_duration Type: number(float)Length of the media in seconds.
media_duration Type: number(float)Length of the media in seconds.
mention_type Type: enum[]unique items trueLimit results to these mention kinds, comma-separated. Requires brand_id.
Show values
mention_type Type: enum[]unique items trueLimit results to these mention kinds, comma-separated. Requires brand_id.
- unique items
- true
contentcommentmention_type_not Type: enum[]unique items trueExclude these mention kinds, comma-separated. Requires brand_id.
Show values
mention_type_not Type: enum[]unique items trueExclude these mention kinds, comma-separated. Requires brand_id.
- unique items
- true
contentcommentnet_promoter_score Type: integerBrand net promoter score for the content. Requires brand_id.
net_promoter_score Type: integerBrand net promoter score for the content. Requires brand_id.
postedType: string(date-time)When the post was published (UTC, ISO 8601).
postedType: string(date-time)When the post was published (UTC, ISO 8601).
total_engagement Type: integerTotal engagement (likes plus comments plus shares).
total_engagement Type: integerTotal engagement (likes plus comments plus shares).
view_count Type: integerNumber of views on the post.
view_count Type: integerNumber of views on the post.
comment_count_max Type: integerNumber of comments on the post. (Inclusive Upper Bound)
comment_count_max Type: integerNumber of comments on the post. (Inclusive Upper Bound)
comment_count_min Type: integerNumber of comments on the post. (Inclusive Lower Bound)
comment_count_min Type: integerNumber of comments on the post. (Inclusive Lower Bound)
creator_follower_count_max Type: integerFollower count of the post's creator. (Inclusive Upper Bound)
creator_follower_count_max Type: integerFollower count of the post's creator. (Inclusive Upper Bound)
creator_follower_count_min Type: integerFollower count of the post's creator. (Inclusive Lower Bound)
creator_follower_count_min Type: integerFollower count of the post's creator. (Inclusive Lower Bound)
earned_media_value_cents_max Type: integerEstimated earned media value, in cents. (Inclusive Upper Bound)
earned_media_value_cents_max Type: integerEstimated earned media value, in cents. (Inclusive Upper Bound)
earned_media_value_cents_min Type: integerEstimated earned media value, in cents. (Inclusive Lower Bound)
earned_media_value_cents_min Type: integerEstimated earned media value, in cents. (Inclusive Lower Bound)
engagement_rate_max Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Upper Bound)
engagement_rate_max Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Upper Bound)
engagement_rate_min Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Lower Bound)
engagement_rate_min Type: number(float)Engagement as a fraction of views (for example, 0.05 = 5%). (Inclusive Lower Bound)
like_count_max Type: integerNumber of likes on the post. (Inclusive Upper Bound)
like_count_max Type: integerNumber of likes on the post. (Inclusive Upper Bound)
like_count_min Type: integerNumber of likes on the post. (Inclusive Lower Bound)
like_count_min Type: integerNumber of likes on the post. (Inclusive Lower Bound)
media_duration_max Type: number(float)Length of the media in seconds. (Inclusive Upper Bound)
media_duration_max Type: number(float)Length of the media in seconds. (Inclusive Upper Bound)
media_duration_min Type: number(float)Length of the media in seconds. (Inclusive Lower Bound)
media_duration_min Type: number(float)Length of the media in seconds. (Inclusive Lower Bound)
net_promoter_score_max Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Upper Bound)
net_promoter_score_max Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Upper Bound)
net_promoter_score_min Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Lower Bound)
net_promoter_score_min Type: integerBrand net promoter score for the content. Requires brand_id. (Inclusive Lower Bound)
total_engagement_max Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Upper Bound)
total_engagement_max Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Upper Bound)
total_engagement_min Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Lower Bound)
total_engagement_min Type: integerTotal engagement (likes plus comments plus shares). (Inclusive Lower Bound)
view_count_max Type: integerNumber of views on the post. (Inclusive Upper Bound)
view_count_max Type: integerNumber of views on the post. (Inclusive Upper Bound)
view_count_min Type: integerNumber of views on the post. (Inclusive Lower Bound)
view_count_min Type: integerNumber of views on the post. (Inclusive Lower Bound)
Returns ContentStatistics
post_count Type: integerNumber of unique pieces of content in the filtered set.
post_count Type: integerNumber of unique pieces of content in the filtered set.
total_views Type: integerTotal views across the filtered set.
total_views Type: integerTotal views across the filtered set.
total_likes Type: integerTotal likes across the filtered set.
total_likes Type: integerTotal likes across the filtered set.
total_comments Type: integerTotal comments across the filtered set.
total_comments Type: integerTotal comments across the filtered set.
total_engagement Type: integerTotal engagement (likes + comments + shares) across the filtered set.
total_engagement Type: integerTotal engagement (likes + comments + shares) across the filtered set.
total_earned_media_value_cents Type: integerTotal estimated marketing value across the filtered set, in US cents. Each piece of content contributes once even when multiple brand contexts match it through brand_id.
total_earned_media_value_cents Type: integerTotal estimated marketing value across the filtered set, in US cents. Each piece of content contributes once even when multiple brand contexts match it through brand_id.
total_media_duration Type: number(double)Total media length in seconds across the filtered set.
total_media_duration Type: number(double)Total media length in seconds across the filtered set.
engagement_rate Type: number(double)or nullTotal engagement divided by total views across the filtered set. Null when the filtered set has no recorded views.
engagement_rate Type: number(double)or nullTotal engagement divided by total views across the filtered set. Null when the filtered set has no recorded views.
unique_creator_count Type: integerNumber of distinct creators represented in the filtered set.
unique_creator_count Type: integerNumber of distinct creators represented in the filtered set.
Responses
ContentStatistics
post_count Type: integerNumber of unique pieces of content in the filtered set.
post_count Type: integerNumber of unique pieces of content in the filtered set.
total_views Type: integerTotal views across the filtered set.
total_views Type: integerTotal views across the filtered set.
total_likes Type: integerTotal likes across the filtered set.
total_likes Type: integerTotal likes across the filtered set.
total_comments Type: integerTotal comments across the filtered set.
total_comments Type: integerTotal comments across the filtered set.
total_engagement Type: integerTotal engagement (likes + comments + shares) across the filtered set.
total_engagement Type: integerTotal engagement (likes + comments + shares) across the filtered set.
total_earned_media_value_cents Type: integerTotal estimated marketing value across the filtered set, in US cents. Each piece of content contributes once even when multiple brand contexts match it through brand_id.
total_earned_media_value_cents Type: integerTotal estimated marketing value across the filtered set, in US cents. Each piece of content contributes once even when multiple brand contexts match it through brand_id.
total_media_duration Type: number(double)Total media length in seconds across the filtered set.
total_media_duration Type: number(double)Total media length in seconds across the filtered set.
engagement_rate Type: number(double)or nullTotal engagement divided by total views across the filtered set. Null when the filtered set has no recorded views.
engagement_rate Type: number(double)or nullTotal engagement divided by total views across the filtered set. Null when the filtered set has no recorded views.
unique_creator_count Type: integerNumber of distinct creators represented in the filtered set.
unique_creator_count Type: integerNumber of distinct creators represented in the filtered set.
Create Content Discovery
/api/v1/content/discovery/content.discoverStarts an asynchronous job that indexes fresh content matching a search term across the requested platforms. Use it to ingest content Zelf does not yet cover.
The response describes the job, not the content itself. Once the job completes, query content.list to retrieve the indexed content. An identical term requested again within the deduplication window reuses the in-flight job and returns dispatched: false instead of starting a new one.
Request body
search_term Type: stringRequiredmin length 1The term to index content for (for example, nike running). Matching content is indexed asynchronously.
search_term Type: stringRequiredmin length 1The term to index content for (for example, nike running). Matching content is indexed asynchronously.
- min length
- 1
platformsType: enum[]default instagram,tiktok,youtubePlatforms to index (instagram, tiktok, youtube). Defaults to all platforms when omitted.
Show values
platformsType: enum[]default instagram,tiktok,youtubePlatforms to index (instagram, tiktok, youtube). Defaults to all platforms when omitted.
- default
- instagram,tiktok,youtube
instagramtiktokyoutubeReturns ContentDiscovery
idType: stringread-onlyIdentifier of the discovery job. Use it to track the job's status.
idType: stringread-onlyIdentifier of the discovery job. Use it to track the job's status.
search_term Type: stringThe search term the discovery job was started for.
search_term Type: stringThe search term the discovery job was started for.
created_at Type: string(date-time)When the discovery job was created (UTC, ISO 8601).
created_at Type: string(date-time)When the discovery job was created (UTC, ISO 8601).
updated_at Type: string(date-time)Time of the most recent change to the discovery job (UTC, ISO 8601).
updated_at Type: string(date-time)Time of the most recent change to the discovery job (UTC, ISO 8601).
platformsType: string[]or nullPlatforms the indexing job was dispatched to.
platformsType: string[]or nullPlatforms the indexing job was dispatched to.
statusType: stringread-onlyStatus of the discovery job. One of PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED.
statusType: stringread-onlyStatus of the discovery job. One of PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED.
dispatchedType: booleanread-onlyWhether a new indexing job was dispatched. Returns false when an identical search term was already requested within the recent deduplication window, in which case the in-flight job is reused.
dispatchedType: booleanread-onlyWhether a new indexing job was dispatched. Returns false when an identical search term was already requested within the recent deduplication window, in which case the in-flight job is reused.
Responses
ContentDiscovery
idType: stringread-onlyIdentifier of the discovery job. Use it to track the job's status.
idType: stringread-onlyIdentifier of the discovery job. Use it to track the job's status.
search_term Type: stringThe search term the discovery job was started for.
search_term Type: stringThe search term the discovery job was started for.
created_at Type: string(date-time)When the discovery job was created (UTC, ISO 8601).
created_at Type: string(date-time)When the discovery job was created (UTC, ISO 8601).
updated_at Type: string(date-time)Time of the most recent change to the discovery job (UTC, ISO 8601).
updated_at Type: string(date-time)Time of the most recent change to the discovery job (UTC, ISO 8601).
platformsType: string[]or nullPlatforms the indexing job was dispatched to.
platformsType: string[]or nullPlatforms the indexing job was dispatched to.
statusType: stringread-onlyStatus of the discovery job. One of PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED.
statusType: stringread-onlyStatus of the discovery job. One of PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED.
dispatchedType: booleanread-onlyWhether a new indexing job was dispatched. Returns false when an identical search term was already requested within the recent deduplication window, in which case the in-flight job is reused.
dispatchedType: booleanread-onlyWhether a new indexing job was dispatched. Returns false when an identical search term was already requested within the recent deduplication window, in which case the in-flight job is reused.
Transcribe Content
/api/v1/content/transcribe/content.transcribeTranscribes the speech in the content's audio or video into text. Returns 202 with status: PENDING when a run starts. Call again to follow it: PENDING while it runs, COMPLETED once the content has a transcription, FAILED if all 3 tries failed.
Request body
content_id Type: stringRequiredmin length 1Identifier of the content, as returned by content.list.
content_id Type: stringRequiredmin length 1Identifier of the content, as returned by content.list.
- min length
- 1
Returns ContentActionResponse
content_id Type: stringIdentifier of the content.
content_id Type: stringIdentifier of the content.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
Responses
COMPLETED: the result is ready. PENDING: the run is still going. FAILED: all 3 tries failed.
ContentActionResponse
content_id Type: stringIdentifier of the content.
content_id Type: stringIdentifier of the content.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
AI Summarize Content
/api/v1/content/ai_summarize/content.ai_summarizeWrites a short AI summary of what the content is about. Returns 202 with status: PENDING when a run starts. Call again to follow it: PENDING while it runs, COMPLETED once the content has a summary, FAILED if all 3 tries failed.
Request body
content_id Type: stringRequiredmin length 1Identifier of the content, as returned by content.list.
content_id Type: stringRequiredmin length 1Identifier of the content, as returned by content.list.
- min length
- 1
Returns ContentActionResponse
content_id Type: stringIdentifier of the content.
content_id Type: stringIdentifier of the content.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
Responses
COMPLETED: the result is ready. PENDING: the run is still going. FAILED: all 3 tries failed.
ContentActionResponse
content_id Type: stringIdentifier of the content.
content_id Type: stringIdentifier of the content.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
statusType: stringPENDING when the work was queued, COMPLETED when the content already has the result.
Get Content
/api/v1/content/{id}/content.detailsReturns a single piece of content identified by id.
Supply brand_id to additionally require the content to exist under that brand and to populate the brand-specific fields. If the content does not exist under that brand, the response is an empty result set rather than a 404. When brand_id is omitted, the brand-specific fields are returned as null.
Parameters
idType: stringRequired
idType: stringRequiredbrand_id Type: stringOptional brand id. When supplied, the content must exist under that brand, otherwise the response is an empty result set. Populates the brand-specific response fields.
brand_id Type: stringOptional brand id. When supplied, the content must exist under that brand, otherwise the response is an empty result set. Populates the brand-specific response fields.
Returns Content
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd -> abcd
- TikTok:
https://www.tiktok.com/@username/video/12345678 -> 12345678
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd->abcd - TikTok:
https://www.tiktok.com/@username/video/12345678->12345678
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
content_form Type: stringor nullWhether the content is a video or an image.
content_form Type: stringor nullWhether the content is a video or an image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
view_count Type: integeror nullTotal number of times the content has been viewed.
view_count Type: integeror nullTotal number of times the content has been viewed.
like_count Type: integeror nullTotal number of likes the content has received.
like_count Type: integeror nullTotal number of likes the content has received.
comment_count Type: integeror nullTotal number of comments on the content.
comment_count Type: integeror nullTotal number of comments on the content.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
languageType: stringor nullISO 639 code of the content's primary language.
languageType: stringor nullISO 639 code of the content's primary language.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
creatorType: ContentCreatorread-onlyThe creator who published the content.
Show child attributes
creatorType: ContentCreatorread-onlyThe creator who published the content.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.nameType: stringor nullThe creator's display name on the platform.
creator.nameType: stringor nullThe creator's display name on the platform.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
captionType: stringShort caption or title of the post (the primary user-visible text).
captionType: stringShort caption or title of the post (the primary user-visible text).
descriptionType: stringLong-form description of the post.
descriptionType: stringLong-form description of the post.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcd
https://www.tiktok.com/@username/video/12345678
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcdhttps://www.tiktok.com/@username/video/12345678
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
ai_summary Type: stringor nullShort AI-generated summary of the content.
ai_summary Type: stringor nullShort AI-generated summary of the content.
Responses
Content
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
idType: stringread-onlyUnique identifier for this piece of content. Use it to retrieve the content anywhere a content id is accepted.
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd -> abcd
- TikTok:
https://www.tiktok.com/@username/video/12345678 -> 12345678
platform_post_id Type: stringThe post's identifier on its platform. This is the value at the end of the post's URL.
Examples:
- Instagram:
https://instagram.com/reel/abcd->abcd - TikTok:
https://www.tiktok.com/@username/video/12345678->12345678
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
platformType: stringThe platform the content was published on: instagram, tiktok or youtube.
content_form Type: stringor nullWhether the content is a video or an image.
content_form Type: stringor nullWhether the content is a video or an image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
thumbnail_url Type: stringor nullURL of the content's thumbnail image.
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
posted_at Type: string(date-time)or nullTime the content was originally published on its platform (UTC).
view_count Type: integeror nullTotal number of times the content has been viewed.
view_count Type: integeror nullTotal number of times the content has been viewed.
like_count Type: integeror nullTotal number of likes the content has received.
like_count Type: integeror nullTotal number of likes the content has received.
comment_count Type: integeror nullTotal number of comments on the content.
comment_count Type: integeror nullTotal number of comments on the content.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
total_engagement Type: integeror nullSum of the likes, comments, and shares the content has received.
languageType: stringor nullISO 639 code of the content's primary language.
languageType: stringor nullISO 639 code of the content's primary language.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
media_duration Type: number(double)or nullLength of the media in seconds. Null when not known.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
engagement_rate Type: number(double)or nullread-onlyEngagement per view (likes plus comments plus shares, divided by views). Null when the content has no recorded views.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
earned_media_value_cents Type: integeror nullread-onlyEstimated marketing value of the content, in US cents.
creatorType: ContentCreatorread-onlyThe creator who published the content.
Show child attributes
creatorType: ContentCreatorread-onlyThe creator who published the content.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.idType: stringread-onlyUnique identifier for the creator.
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.usernameType: stringor nullThe creator's username or handle on the platform (without an @).
creator.nameType: stringor nullThe creator's display name on the platform.
creator.nameType: stringor nullThe creator's display name on the platform.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platformType: stringor nullThe platform the creator publishes on. One of instagram, tiktok, youtube.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_handle Type: stringor nullThe platform-side identifier of the creator's account.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.platform_url Type: stringor nullDirect URL to the creator's profile on the platform.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_picture_url Type: stringor nullURL of the creator's profile picture.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.profile_bio Type: stringor nullThe creator's profile bio as it appears on the platform.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.follower_count Type: integeror nullThe creator's follower count as of the most recent observation.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
creator.active_content_count Type: integeror nullNumber of active content items attributed to the creator.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
brand_id Type: stringor nullread-onlyIdentifier of the brand that the brand-specific signals on this row (is_owned, is_tagged, is_influencer, mention_type, net_promoter_score) are scoped to. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
net_promoter_score Type: integeror nullread-onlyNet promoter score for the content from the perspective of the scoped brand. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_owned Type: booleanor nullread-onlyWhether the scoped brand owns the content; that is, whether it was published by an account the brand controls. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_tagged Type: booleanor nullread-onlyWhether the post tags the scoped brand on the platform. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
is_influencer Type: booleanor nullread-onlyWhether the scoped brand counts the content as influencer content: it matches the brand's influencer terms, comes from an account on its influencer list, was reported as branded content by the platform, or was marked by hand. Content the brand owns is never influencer content. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
mention_type Type: stringor nullread-onlyHow the scoped brand is mentioned in the content. One of content or comment, or null when the brand is not mentioned. Returned as null when the request omits brand_id.
captionType: stringShort caption or title of the post (the primary user-visible text).
captionType: stringShort caption or title of the post (the primary user-visible text).
descriptionType: stringLong-form description of the post.
descriptionType: stringLong-form description of the post.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
transcriptType: stringor nullTranscribed speech from the content's audio, when available.
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcd
https://www.tiktok.com/@username/video/12345678
platform_url Type: stringDirect URL to the post on its platform.
Examples:
https://instagram.com/reel/abcdhttps://www.tiktok.com/@username/video/12345678
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
last_keyword Type: stringor nullWhat the content was most recently collected under: a hashtag, a creator handle, a search term, or a brand identifier. Null when the content did not arrive through a collection task.
ai_summary Type: stringor nullShort AI-generated summary of the content.
ai_summary Type: stringor nullShort AI-generated summary of the content.