Analytics
Account-level reach, timelines, rankings, platform stats and recent content. These endpoints cost 2 rate-limit tokens.
Reach summary
/v1/analytics/reachThe analytics-page KPI cards: total, YouTube, audio, social and newsletter reach for the window, with previous-period values, guarded growth, per-platform totals, coverage and freshness.
categories is a case-insensitive substring match on show categories; platforms restricts the totals (aliases accepted); social_count_mode=unique counts an account shared by several shows once. Newsletter opens are their own category and part of total. For the daily series use GET /v1/analytics/timeline; for per-show numbers GET /v1/analytics/shows.
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
Freshness. freshness maps each platform to {last_updated, age_hours, stale} (stale = older than 36 h); stale_platforms lists them. A zero usually means a stale connector, not a zero audience.
- Costs 2 rate-limit tokens.
SDKlistener.analytics.reach()client.analytics.reach()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - all counts every show's accounts; unique counts an account shared by several shows once (totals, timelines, distributions only).
social_count_modestringOne ofalluniqueDefault
"all" - Which measure to report.
metricstringOne ofreachengagementDefault
"reach" - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring
Returns
200OK
- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
- How much of the window actually has data (design §2).
coverageobjectrequiredShow child attributesHide child attributes
computed_atstringrequiredtotalobjectrequiredShow child attributesHide child attributes
youtubeobjectrequiredShow child attributesHide child attributes
audioobjectrequiredShow child attributesHide child attributes
socialobjectrequiredShow child attributesHide child attributes
- Beehiiv + Substack newsletter opens; part of total on the analytics page.
newsletterobjectrequiredShow child attributesHide child attributes
objectstringrequired- platform → oldest freshness across the scoped shows.
freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of strings- Shows included after show_ids/categories filtering.
show_idsarray of strings missing_show_idsarray of stringsfiltersobjectcache_age_secondsnumberDefault
0notestringmetricstringOne ofreachengagementDefault
"reach"social_count_modestringOne ofalluniqueDefault
"all"per_platformmap of integerprevious_per_platformmap of integer- Unique mode only: show → platforms skipped because another show is canonical for the same account.
suppressed_platforms_by_showmap of array of strings shows_in_totalsintegerDefault
0
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Reach timeline
/v1/analytics/timelineThe daily performance series behind the analytics chart (date, total, per platform, running cumulative) with totals, growth and the peak day. chart_type=cumulative returns running sums; include_previous=true adds the baseline window's rows; include_per_show=true adds one series per show (never de-duplicated).
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.timeline()client.analytics.timeline()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - all counts every show's accounts; unique counts an account shared by several shows once (totals, timelines, distributions only).
social_count_modestringOne ofalluniqueDefault
"all" - Which measure to report.
metricstringOne ofreachengagementDefault
"reach" - daily values or a cumulative running total.
chart_typestringOne ofdailycumulativeDefault
"daily" - Also return the previous period's series.
include_previousbooleanDefault
false - Also return a per-show breakdown.
include_per_showbooleanDefault
false - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring
Returns
200OK
- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
- How much of the window actually has data (design §2).
coverageobjectrequiredShow child attributesHide child attributes
computed_atstringrequiredmetricstringrequiredOne ofreachengagementchart_typestringrequiredOne ofdailycumulativerowsarray of objectsrequiredShow child attributesHide child attributes
totalintegerrequiredprevious_totalintegerrequiredobjectstringrequired- platform → oldest freshness across the scoped shows.
freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of strings- Shows included after show_ids/categories filtering.
show_idsarray of strings missing_show_idsarray of stringsfiltersobjectcache_age_secondsnumberDefault
0notestringsocial_count_modestringOne ofalluniqueDefault
"all"previous_rowsarray of objectsShow child attributesHide child attributes
growthnumberper_platformmap of integerprevious_per_platformmap of integerpeak_dayobjectShow child attributesHide child attributes
- show id → daily totals (include_per_show=True).
per_showmap of array of objectsShow child attributesHide child attributes
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Rank shows
/v1/analytics/showsEvery show in scope ranked by reach for the window (total, YouTube, audio, social, newsletter, per platform, previous period, growth). Rows are never de-duplicated, so their sum can exceed GET /v1/analytics/reach in unique mode. sort_by=growth puts shows without a baseline last.
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.shows()client.analytics.shows()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - Sort field.
sort_bystringOne oftotalyoutubeaudiosocialgrowthDefault
"total" - Which measure to report.
metricstringOne ofreachengagementDefault
"reach" - Page size, 1–100 (default 25).
limitintegerDefault
25 - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring - Opaque cursor from the previous page's next_cursor.
cursorstring
Returns
200OK
objectstringrequiredurlstringrequireddataarray of objectsrequiredShow child attributesHide child attributes
has_morebooleanrequired- Pass as
next_cursorstringrequiredcursorto get the next page; null on the last page. - The result's non-list fields (window, coverage, freshness, totals, note …).
metaobjectrequiredShow child attributesHide child attributes
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Compare two shows
/v1/analytics/compareTwo shows side by side for the window: category reach, growth, per-platform totals, optional daily series (include_series=true) and head-to-head deltas with a winner per metric. Never de-duplicated.
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.compare()client.analytics.compare()
Query parameters
show_id_astringrequiredshow_id_bstringrequired- Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - Which measure to report.
metricstringOne ofreachengagementDefault
"reach" include_seriesbooleanDefault
false- 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring
Returns
200OK
- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
- How much of the window actually has data (design §2).
coverageobjectrequiredShow child attributesHide child attributes
computed_atstringrequiredaobjectrequiredShow child attributesHide child attributes
bobjectrequiredShow child attributesHide child attributes
head_to_headarray of objectsrequiredShow child attributesHide child attributes
objectstringrequired- platform → oldest freshness across the scoped shows.
freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of strings- Shows included after show_ids/categories filtering.
show_idsarray of strings missing_show_idsarray of stringsfiltersobjectcache_age_secondsnumberDefault
0notestringmetricstringOne ofreachengagementDefault
"reach"overall_winnerstringOne ofabtie
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Platform distribution
/v1/analytics/distributionThe platform share of views (reach), engagement or followers: value and percent per platform. Views and engagement sum the window's daily performance; followers are live counts from each platform and ignore the window (deliberately disconnected platforms count 0).
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.distribution()client.analytics.distribution()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - all counts every show's accounts; unique counts an account shared by several shows once (totals, timelines, distributions only).
social_count_modestringOne ofalluniqueDefault
"all" - Which measure to report.
metricstringOne ofviewsfollowersengagementDefault
"views" include_zerobooleanDefault
false- 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring
Returns
200OK
- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
- How much of the window actually has data (design §2).
coverageobjectrequiredShow child attributesHide child attributes
computed_atstringrequiredmetricstringrequiredOne ofviewsfollowersengagemententriesarray of objectsrequiredShow child attributesHide child attributes
totalintegerrequired- Where the values come from: daily performance (views/engagement) or live follower counts (followers).
sourcestringrequired objectstringrequired- platform → oldest freshness across the scoped shows.
freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of strings- Shows included after show_ids/categories filtering.
show_idsarray of strings missing_show_idsarray of stringsfiltersobjectcache_age_secondsnumberDefault
0notestringsocial_count_modestringOne ofalluniqueDefault
"all"
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Dashboard KPIs
/v1/analytics/dashboardThe network dashboard: eight KPI tiles (followers, impressions, likes, comments, posts, engagement rate, downloads, EMV), the EMV breakdown, a per-show table (table_mode = reach, audience or demographics) and the top content per platform.
time_range is 7d, 30d or 90d (or start_date + end_date spanning at most 90 days). On 90 days, impressions, downloads and engagement rate cover the full window from stored history (growth like-for-like), while likes, comments, posts and top content stay on the last 30 days with no growth; metric_windows and each tile's window say which window a value covers. EMV values audio downloads at the long-form CPM and every other impression at the short-form CPM, plus likes × like rate and comments × comment rate, using the network's default EMV rates (defaults 25 / 20 / 0.25 / 1.25).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.dashboard()client.analytics.dashboard()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - all counts every show's accounts; unique counts an account shared by several shows once (totals, timelines, distributions only).
social_count_modestringOne ofalluniqueDefault
"all" - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringOne of7d30d90dDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring table_modestringOne ofreachaudiencedemographicsDefault
"reach"top_content_per_platformintegerDefault
3
Returns
200OK
- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
- How much of the window actually has data (design §2).
coverageobjectrequiredShow child attributesHide child attributes
computed_atstringrequiredtime_rangestringrequiredtable_modestringrequiredOne ofreachaudiencedemographicstilesarray of objectsrequiredShow child attributesHide child attributes
emvobjectrequiredShow child attributesHide child attributes
showsarray of objectsrequiredShow child attributesHide child attributes
objectstringrequired- platform → oldest freshness across the scoped shows.
freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of strings- Shows included after show_ids/categories filtering.
show_idsarray of strings missing_show_idsarray of stringsfiltersobjectcache_age_secondsnumberDefault
0notestringper_platform_reachmap of integer- platform → top 3 items in the window by plays/views/impressions (last 30 days on a 90d window).
top_contentmap of array of objectsShow child attributesHide child attributes
- tile key → window its value covers. On 90d: impressions/downloads/engagement_rate cover 90 days (history-backed); likes/comments/posts/top_content are the last 30 days (no long-range source); followers are live; EMV is mixed.
metric_windowsmap of string
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Rank hosts
/v1/analytics/hostsThe Hosts tab: every host across the shows in scope with their own per-platform audience, YouTube and social splits, the shows they appear on and those shows' reach in the window. A host on several shows is one row (counts are never summed). Ranked by personal audience; sort_by=shows_reach ranks by the shows' window reach.
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.analytics.hosts()client.analytics.hosts()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Sort field.
sort_bystringOne ofaudienceyoutubesocialshows_reachnameDefault
"audience" - Case-insensitive text filter.
searchstring - Page size, 1–100 (default 25).
limitintegerDefault
25 - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring - Opaque cursor from the previous page's next_cursor.
cursorstring
Returns
200OK
objectstringrequiredurlstringrequireddataarray of objectsrequiredShow child attributesHide child attributes
has_morebooleanrequired- Pass as
next_cursorstringrequiredcursorto get the next page; null on the last page. - The result's non-list fields (window, coverage, freshness, totals, note …).
metaobjectrequiredShow child attributesHide child attributes
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Shared-account (dedup) view
/v1/analytics/accountsConnected accounts shared by several shows (the same YouTube channel, Instagram handle, Spotify show …), which show is canonical, and the platforms suppressed per show in social_count_mode=unique. Suppression applies to overview totals, timelines and distributions only, never to rankings or comparisons.
- Costs 2 rate-limit tokens.
SDKlistener.analytics.accounts()client.analytics.accounts()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings
Returns
200OK
platforms_checkedarray of stringsrequiredhas_duplicatesbooleanrequiredduplicate_platformsarray of stringsrequiredgroupsarray of objectsrequiredShow child attributesHide child attributes
duplicate_groupsarray of objectsrequiredShow child attributesHide child attributes
applies_toarray of stringsrequirednever_applied_toarray of stringsrequiredshow_idsarray of stringsrequiredcomputed_atstringrequiredobjectstringrequired- show id → platforms skipped in unique mode.
suppressedmap of array of strings missing_show_idsarray of stringscache_age_secondsnumberDefault
0notestring
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
List show categories
/v1/analytics/categoriesThe distinct show categories in the workspace (the analytics Topics filter) with the shows in each; use them as categories values. Placeholder categories such as "Category 3" are dropped unless include_placeholders=true.
- Costs 2 rate-limit tokens.
SDKlistener.analytics.categories()client.analytics.categories()
Query parameters
include_placeholdersbooleanDefault
false
Returns
200OK
objectstringrequiredurlstringrequireddataarray of objectsrequiredShow child attributesHide child attributes
has_morebooleanrequired- Pass as
next_cursorstringrequiredcursorto get the next page; null on the last page. - The result's non-list fields (window, coverage, freshness, totals, note …).
metaobjectrequiredShow child attributesHide child attributes
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
A show's platform stats
/v1/shows/{show_id}/platformsOne show's per-platform metric blocks (views, plays or downloads, followers, engagement, growth against the previous period), audience signals (demographics, geography, retention, traffic sources) and freshness. platform is a platform key (aliases accepted) or all; time_range is 7d, 30d or 90d; include_raw=true appends the stored platform data with secrets removed and arrays capped at 200 items.
On 90 days the likes, comments, posts and follower deltas stay on the last 30 days; each block's window_totals adds the platform's 90-day reach and engagement with growth (null under 50 % coverage). metric_windows states which window each part covers.
Freshness. freshness maps each platform to {last_updated, age_hours, stale} (stale = older than 36 h); stale_platforms lists them. A zero usually means a stale connector, not a zero audience.
- Costs 2 rate-limit tokens.
SDKlistener.shows.platforms.list()client.shows.platforms.list()
Path parameters
- A show id in this workspace (see GET /v1/shows).
show_idstringrequired
Query parameters
- A platform name (e.g. youtube, spotify, applePodcasts, instagram).
platformstringDefault
"all" - 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringOne of7d30d90dDefault
"30d" include_rawbooleanDefault
false
Returns
200OK
- The minimal show reference embedded in cross-show results.
showobjectrequiredShow child attributesHide child attributes
time_rangestringrequiredOne of7d30d90d- The resolved analytics window (from `
windowobjectrequiredcore.dates.Window.as_dict()`).Show child attributesHide child attributes
platformsarray of objectsrequiredShow child attributesHide child attributes
requested_platformstringrequiredcomputed_atstringrequiredobjectstringrequired- Which window each part of the response covers. On 90d the ported metric blocks stay on the last 30 days (no long-range source for likes, comments, posts, follower deltas);
metric_windowsmap of stringwindow_totalscovers the full 90 days. freshnessmap of objectShow child attributesHide child attributes
stale_platformsarray of stringsmissing_show_idsarray of stringscache_age_secondsnumberDefault
0notestring
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error
Recent posts and content
/v1/contentRecent content across platforms (Instagram reels, TikToks, X posts, LinkedIn / Threads / Facebook posts, YouTube videos, newsletters, Art19 / Omny episodes) published inside the window, newest first, with per-item metrics. Captions are truncated to 280 characters. group_by=day or platform adds meta.groups for the page; limit_per_platform caps each platform before pagination (0 = no cap).
Windows. time_range is 7d, 14d, 30d, 90d, 180d, 365d, all (rolling UTC days, today inclusive) or a calendar quarter such as 2026-Q2 (a bare Q2 means the current year). start_date + end_date (YYYY-MM-DD, inclusive, both required) override it. Results carry window and coverage.
Growth. Growth compares against the equal-length window immediately before (the previous quarter for quarter tokens). It is null (show it as "—", never 0) when the previous window has under 50 % day coverage. Windows longer than 30 days read stored history and compare like-for-like: only platforms whose data covers at least half of the previous window, both windows summed over those platforms (coverage.growth_platforms).
- Costs 2 rate-limit tokens.
SDKlistener.content.list()client.content.list()
Query parameters
- Limit to these show ids (default: every show in the workspace). Repeat the parameter or comma-separate values.
show_idsarray of strings - Only shows whose categories contain one of these (case-insensitive substring). Repeat the parameter or comma-separate values.
categoriesarray of strings - Only these platforms (e.g. youtube, spotify, instagram; aliases accepted). Repeat the parameter or comma-separate values.
platformsarray of strings - all counts every show's accounts; unique counts an account shared by several shows once (totals, timelines, distributions only).
social_count_modestringOne ofalluniqueDefault
"all" - Group the results by this field.
group_bystringOne ofnonedayplatformDefault
"none" - Page size, 1–100 (default 25).
limitintegerDefault
25 limit_per_platformintegerDefault
0- 7d | 14d | 30d | 90d | 180d | 365d | all, or a quarter like 2026-Q2. Windows are UTC days anchored to today.
time_rangestringDefault
"30d" - First day, YYYY-MM-DD (inclusive). With end_date, overrides time_range.
start_datestring - Last day, YYYY-MM-DD (inclusive). With start_date, overrides time_range.
end_datestring - Opaque cursor from the previous page's next_cursor.
cursorstring
Returns
200OK
objectstringrequiredurlstringrequireddataarray of objectsrequiredShow child attributesHide child attributes
has_morebooleanrequired- Pass as
next_cursorstringrequiredcursorto get the next page; null on the last page. - The result's non-list fields (window, coverage, freshness, totals, note …).
metaobjectrequiredShow child attributesHide child attributes
Errors
400parameter_invalid401credential_invalid403scope_missing404resource_not_found429rate_limited500internal_error