AI Analysis
Run AI analyses over content and comments. Start an analysis with a topic and a content filter, poll its runs for status, then fetch each run's result payload from ai_analysis.results.
Create AI Analysis
/api/v1/ai_analysis/ai_analysis.createStarts an AI analysis over the content matched by content_filters (or its comments) for a given topic. Runs complete asynchronously; this method returns immediately with the created analysis and its initial runs.
The analysis runs over the highest-ranked matching content by content_filters.order_by, up to 500 posts or the limit configured for your workspace. When order_by is omitted, content is ranked by earned_media_value_cents descending.
The created analysis is returned as the single item in results. Take its id and poll ai_analysis.list until a run reports COMPLETED. An analysis can take an hour or more, so poll at a moderate interval; prefer the ai_analysis.completed webhook over frequent polling, which can trigger RATE_LIMIT_EXCEEDED. Once complete, retrieve the payload from ai_analysis.results, passing analysis_id=<id>.
Request body
nameType: stringRequiredmin length 1A label for this analysis.
nameType: stringRequiredmin length 1A label for this analysis.
- min length
- 1
topicType: stringRequiredmin length 1The brand, product, person or event to analyze, as a short term. For example Levi's or Running shoes. Keep it under five words. Do not write a question: every run reports sentiment, price, quality, competitors and products for the topic. To narrow the posts, use content_filters.
topicType: stringRequiredmin length 1The brand, product, person or event to analyze, as a short term. For example Levi's or Running shoes. Keep it under five words. Do not write a question: every run reports sentiment, price, quality, competitors and products for the topic. To narrow the posts, use content_filters.
- min length
- 1
analysis_scope Type: enum[]default CONTENTWhat to analyze: any of CONTENT, COMMENT. Defaults to ["CONTENT"].
Show values
analysis_scope Type: enum[]default CONTENTWhat to analyze: any of CONTENT, COMMENT. Defaults to ["CONTENT"].
- default
- CONTENT
CONTENTCOMMENTcontent_filters Type: ContentFilterInputRequestRequiredSelects which content the analysis runs over. At least one of search, creator_id, creator_username, external_id, or brand_id is required to scope it. When both posted_after and posted_before are omitted, the analysis defaults to content from the last 7 days.
Show child attributes
content_filters Type: ContentFilterInputRequestRequiredSelects which content the analysis runs over. At least one of search, creator_id, creator_username, external_id, or brand_id is required to scope it. When both posted_after and posted_before are omitted, the analysis defaults to content from the last 7 days.
content_filters.view_count_min Type: integerInclude only content with at least this many views.
content_filters.view_count_min Type: integerInclude only content with at least this many views.
content_filters.view_count_max Type: integerInclude only content with at most this many views.
content_filters.view_count_max Type: integerInclude only content with at most this many views.
content_filters.comment_count_min Type: integerInclude only content with at least this many comments.
content_filters.comment_count_min Type: integerInclude only content with at least this many comments.
content_filters.comment_count_max Type: integerInclude only content with at most this many comments.
content_filters.comment_count_max Type: integerInclude only content with at most this many comments.
content_filters.like_count_min Type: integerInclude only content with at least this many likes.
content_filters.like_count_min Type: integerInclude only content with at least this many likes.
content_filters.like_count_max Type: integerInclude only content with at most this many likes.
content_filters.like_count_max Type: integerInclude only content with at most this many likes.
content_filters.total_engagement_min Type: integerMinimum total engagement (likes + comments + shares).
content_filters.total_engagement_min Type: integerMinimum total engagement (likes + comments + shares).
content_filters.total_engagement_max Type: integerMaximum total engagement (likes + comments + shares).
content_filters.total_engagement_max Type: integerMaximum total engagement (likes + comments + shares).
content_filters.earned_media_value_cents_min Type: integerMinimum estimated earned media value, in cents.
content_filters.earned_media_value_cents_min Type: integerMinimum estimated earned media value, in cents.
content_filters.earned_media_value_cents_max Type: integerMaximum estimated earned media value, in cents.
content_filters.earned_media_value_cents_max Type: integerMaximum estimated earned media value, in cents.
content_filters.media_duration_min Type: number(double)Include only content at least this many seconds long.
content_filters.media_duration_min Type: number(double)Include only content at least this many seconds long.
content_filters.media_duration_max Type: number(double)Include only content at most this many seconds long.
content_filters.media_duration_max Type: number(double)Include only content at most this many seconds long.
content_filters.posted_after Type: string(date-time)Include only content posted at or after this UTC ISO-8601 time.
content_filters.posted_after Type: string(date-time)Include only content posted at or after this UTC ISO-8601 time.
content_filters.posted_before Type: string(date-time)Include only content posted at or before this UTC ISO-8601 time.
content_filters.posted_before Type: string(date-time)Include only content posted at or before this UTC ISO-8601 time.
content_filters.platform Type: enum[]Platforms to include. Any of: instagram, tiktok, youtube.
Show values
content_filters.platform Type: enum[]Platforms to include. Any of: instagram, tiktok, youtube.
instagramtiktokyoutubecontent_filters.language Type: string[]Language codes to include, for example en or es.
content_filters.language Type: string[]Language codes to include, for example en or es.
content_filters.content_form Type: enumContent medium. One of: VIDEO, PHOTO.
Show values
content_filters.content_form Type: enumContent medium. One of: VIDEO, PHOTO.
VIDEOPHOTOcontent_filters.search Type: stringmin length 1Full-text search across caption, transcript, and summary. Space-separated terms are AND-ed.
content_filters.search Type: stringmin length 1Full-text search across caption, transcript, and summary. Space-separated terms are AND-ed.
- min length
- 1
content_filters.creator_id Type: stringmin length 1Restrict to a single creator by id (from creators.list).
content_filters.creator_id Type: stringmin length 1Restrict to a single creator by id (from creators.list).
- min length
- 1
content_filters.brand_id Type: stringmin length 1Restrict to an accessible brand id (from brands.list). Defaults to your own brand when omitted.
content_filters.brand_id Type: stringmin length 1Restrict to an accessible brand id (from brands.list). Defaults to your own brand when omitted.
- min length
- 1
content_filters.is_owned Type: booleanInclude only content owned by the brand.
content_filters.is_owned Type: booleanInclude only content owned by the brand.
content_filters.is_tagged Type: booleanInclude only content where the brand is tagged.
content_filters.is_tagged Type: booleanInclude only content where the brand is tagged.
content_filters.is_influencer Type: booleanInclude only the brand's influencer content, or exclude it with false.
content_filters.is_influencer Type: booleanInclude only the brand's influencer content, or exclude it with false.
content_filters.external_id Type: stringmin length 1Platform-side post id. Matched exactly.
content_filters.external_id Type: stringmin length 1Platform-side post id. Matched exactly.
- min length
- 1
content_filters.creator_username Type: stringmin length 1Creator username substring. Case-insensitive.
content_filters.creator_username Type: stringmin length 1Creator username substring. Case-insensitive.
- min length
- 1
content_filters.mention_type Type: enum[]Restrict to these mention kinds. Any of: content, comment.
Show values
content_filters.mention_type Type: enum[]Restrict to these mention kinds. Any of: content, comment.
contentcommentcontent_filters.mention_type_not Type: enum[]Exclude these mention kinds. Any of: content, comment.
Show values
content_filters.mention_type_not Type: enum[]Exclude these mention kinds. Any of: content, comment.
contentcommentcontent_filters.creator_follower_count_min Type: integerInclude only content whose creator has at least this many followers.
content_filters.creator_follower_count_min Type: integerInclude only content whose creator has at least this many followers.
content_filters.creator_follower_count_max Type: integerInclude only content whose creator has at most this many followers.
content_filters.creator_follower_count_max Type: integerInclude only content whose creator has at most this many followers.
content_filters.engagement_rate_min Type: number(double)Minimum engagement as a fraction of views (e.g. 0.05 = 5%).
content_filters.engagement_rate_min Type: number(double)Minimum engagement as a fraction of views (e.g. 0.05 = 5%).
content_filters.engagement_rate_max Type: number(double)Maximum engagement as a fraction of views (e.g. 0.05 = 5%).
content_filters.engagement_rate_max Type: number(double)Maximum engagement as a fraction of views (e.g. 0.05 = 5%).
content_filters.net_promoter_score_min Type: integerMinimum brand net promoter score for the content.
content_filters.net_promoter_score_min Type: integerMinimum brand net promoter score for the content.
content_filters.net_promoter_score_max Type: integerMaximum brand net promoter score for the content.
content_filters.net_promoter_score_max Type: integerMaximum brand net promoter score for the content.
content_filters.posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). posted_after and posted_within_hours take precedence over it.
content_filters.posted_within_days Type: integerminimum 1 · maximum 365Start of the window, counted back from the current time, in days (1-365). posted_after and posted_within_hours take precedence over it.
- minimum
- 1
- maximum
- 365
content_filters.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.
content_filters.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
content_filters.order_by Type: string[]Sort the selected content. 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. Determines which content is retained when the set is capped. Defaults to earned_media_value_cents descending.
content_filters.order_by Type: string[]Sort the selected content. 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. Determines which content is retained when the set is capped. Defaults to earned_media_value_cents descending.
Returns AiAnalysis
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
nameType: stringThe analysis label.
nameType: stringThe analysis label.
topicType: stringor nullThe subject the analysis focuses on.
topicType: stringor nullThe subject the analysis focuses on.
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
Show child attributes
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
Responses
AiAnalysis
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
nameType: stringThe analysis label.
nameType: stringThe analysis label.
topicType: stringor nullThe subject the analysis focuses on.
topicType: stringor nullThe subject the analysis focuses on.
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
Show child attributes
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
List AI Analyses
/api/v1/ai_analysis/ai_analysis.listReturns the AI analyses that have been created, ordered newest first, each with its runs and their current status. It lists the analyses available and tracks run progress without retrieving the full result payload.
An analysis id maps to analysis_id on ai_analysis.results and ai_analysis.contents, and each run's id maps to id on ai_analysis.results. The run result download is not included in this response; retrieve it from ai_analysis.results once a run reports COMPLETED (statuses: IN_PROGRESS, COMPLETED, EMPTY_RESULT, FAILED). Supply id to return a single analysis.
Parameters
idType: stringOptional analysis id. When supplied, only that analysis is returned. Returns INVALID_ID if malformed.
idType: stringOptional analysis id. When supplied, only that analysis is returned. Returns INVALID_ID if malformed.
Returns AiAnalysis
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
nameType: stringThe analysis label.
nameType: stringThe analysis label.
topicType: stringor nullThe subject the analysis focuses on.
topicType: stringor nullThe subject the analysis focuses on.
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
Show child attributes
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
Responses
AiAnalysis
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
idType: stringread-onlyID of the analysis. Use this value on follow-up calls.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
analysis_type Type: stringread-onlyAlways AI_ANALYSIS here.
nameType: stringThe analysis label.
nameType: stringThe analysis label.
topicType: stringor nullThe subject the analysis focuses on.
topicType: stringor nullThe subject the analysis focuses on.
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
created_at Type: string(date-time)When the analysis was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the analysis was last modified (UTC, ISO-8601).
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
Show child attributes
analysesType: AiAnalysisRun[]The runs that make up this analysis, one per scope, ordered newest first.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].idType: stringread-onlyID of the analysis run.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].scopeType: stringWhat this run covers: CONTENT or COMMENT.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
analyses[].statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
Get AI Analysis Results
/api/v1/ai_analysis/results/ai_analysis.resultsReturns each run's result, a signed, time-limited download of the analysis payload. Call this method after a run reaches COMPLETED; for earlier statuses the row is returned with a null result.
Supply analysis_id (the analysis id from ai_analysis.list) to return every run of that analysis, or id (a single run's id) to return one run. Exactly one is required. A malformed id returns INVALID_ID; omitting both returns VALIDATION_ERROR.
Parameters
analysis_id Type: stringAnalysis id (from ai_analysis.list). Returns every run of that analysis. Exactly one of analysis_id and id is required, and a request carrying both is rejected. Returns INVALID_ID if malformed.
analysis_id Type: stringAnalysis id (from ai_analysis.list). Returns every run of that analysis. Exactly one of analysis_id and id is required, and a request carrying both is rejected. Returns INVALID_ID if malformed.
idType: stringSingle run id. Returns only that run. Exactly one of analysis_id and id is required, and a request carrying both is rejected. Returns INVALID_ID if malformed.
idType: stringSingle run id. Returns only that run. Exactly one of analysis_id and id is required, and a request carrying both is rejected. Returns INVALID_ID if malformed.
Returns AiAnalysisResult
idType: stringread-onlyID of the analysis run.
idType: stringread-onlyID of the analysis run.
analysis_id Type: stringread-onlyID of the analysis this run belongs to.
analysis_id Type: stringread-onlyID of the analysis this run belongs to.
scopeType: stringWhat this run covers: CONTENT or COMMENT.
scopeType: stringWhat this run covers: CONTENT or COMMENT.
statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
resultType: ResultFileor nullread-onlySigned, time-limited download of the run's analysis payload: download_url (request it to retrieve the JSON), expires_at (Unix epoch seconds, approximately 24h TTL), and format (json). null until the run completes.
Show child attributes
resultType: ResultFileor nullread-onlySigned, time-limited download of the run's analysis payload: download_url (request it to retrieve the JSON), expires_at (Unix epoch seconds, approximately 24h TTL), and format (json). null until the run completes.
result.expires_at Type: integerUnix epoch seconds after which download_url expires. Re-fetch the run to obtain a fresh URL.
result.expires_at Type: integerUnix epoch seconds after which download_url expires. Re-fetch the run to obtain a fresh URL.
result.formatType: stringPayload encoding. Always json.
result.formatType: stringPayload encoding. Always json.
result.download_url Type: string(uri)Signed URL to request the JSON payload. Expires at expires_at.
result.download_url Type: string(uri)Signed URL to request the JSON payload. Expires at expires_at.
created_at Type: string(date-time)When the run was created (UTC, ISO-8601).
created_at Type: string(date-time)When the run was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the run was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the run was last modified (UTC, ISO-8601).
Responses
AiAnalysisResult
idType: stringread-onlyID of the analysis run.
idType: stringread-onlyID of the analysis run.
analysis_id Type: stringread-onlyID of the analysis this run belongs to.
analysis_id Type: stringread-onlyID of the analysis this run belongs to.
scopeType: stringWhat this run covers: CONTENT or COMMENT.
scopeType: stringWhat this run covers: CONTENT or COMMENT.
statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
statusType: stringread-onlyRun status: one of IN_PROGRESS, COMPLETED, EMPTY_RESULT (finished with no matching content), or FAILED.
resultType: ResultFileor nullread-onlySigned, time-limited download of the run's analysis payload: download_url (request it to retrieve the JSON), expires_at (Unix epoch seconds, approximately 24h TTL), and format (json). null until the run completes.
Show child attributes
resultType: ResultFileor nullread-onlySigned, time-limited download of the run's analysis payload: download_url (request it to retrieve the JSON), expires_at (Unix epoch seconds, approximately 24h TTL), and format (json). null until the run completes.
result.expires_at Type: integerUnix epoch seconds after which download_url expires. Re-fetch the run to obtain a fresh URL.
result.expires_at Type: integerUnix epoch seconds after which download_url expires. Re-fetch the run to obtain a fresh URL.
result.formatType: stringPayload encoding. Always json.
result.formatType: stringPayload encoding. Always json.
result.download_url Type: string(uri)Signed URL to request the JSON payload. Expires at expires_at.
result.download_url Type: string(uri)Signed URL to request the JSON payload. Expires at expires_at.
created_at Type: string(date-time)When the run was created (UTC, ISO-8601).
created_at Type: string(date-time)When the run was created (UTC, ISO-8601).
modified_at Type: string(date-time)When the run was last modified (UTC, ISO-8601).
modified_at Type: string(date-time)When the run was last modified (UTC, ISO-8601).
List AI Analysis Content
/api/v1/ai_analysis/contents/ai_analysis.contentsReturns the content an AI analysis ran over, in the standard content shape. Use it to inspect the exact posts included in an analysis.
Requires analysis_id (an analysis id from ai_analysis.list). Brand-scoped fields (is_owned, is_tagged, net_promoter_score, ...) are null in this response.
Parameters
analysis_id Type: stringRequiredAnalysis id, as returned by ai_analysis.list.
analysis_id Type: stringRequiredAnalysis id, as returned by ai_analysis.list.
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 AI Analysis Content Statistics
/api/v1/ai_analysis/contents/statistics/ai_analysis.content_statisticsReturns aggregate totals (post count, views, engagement, earned media value, and unique creators) over the content an AI analysis ran over.
Requires analysis_id (an analysis id from ai_analysis.list) and returns the same totals shape as content.statistics.
Parameters
analysis_id Type: stringRequiredAnalysis id, as returned by ai_analysis.list.
analysis_id Type: stringRequiredAnalysis id, as returned by ai_analysis.list.
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.