Analytics
Fetch post-level and account-level metrics — impressions, engagement, reach, and follower stats — in single or bulk requests.
Get analytics for multiple posts in one call
Batch version of GET /analytics/posts/{id}. Pass a comma-separated list of numeric OmniSocials post ids in ids and get each post's latest per-platform metrics back in a single request (thread posts are summed across their parts, same as the single-post endpoint). Built for sync clients that would otherwise call the single-post endpoint once per post and hit the 100 requests/minute rate limit. Up to 100 ids per call; page through larger sets in batches. Every requested id is returned (in request order); ids with no collected analytics come back with an empty platforms object rather than being omitted, so clients can map results 1:1 to the ids they sent. Reads stored snapshots from our database, the same data as the single-post endpoint, so it never calls the social platforms live.
query Parameters
idsComma-separated numeric OmniSocials post ids (the id field from GET /posts), e.g. "1024,1025,1026". Max 100 per request.
Get analytics for multiple posts in one call › Responses
Per-post analytics, one entry per requested id
countNumber of entries returned (equals the number of valid ids requested)
Get workspace analytics overview
query Parameters
periodTime period for analytics
start_dateCustom start date. Accepts YYYY-MM-DD (e.g. "2026-04-01"), YYYY-MM month-shorthand (e.g. "2026-04" expands to the first of the month), or a full ISO 8601 datetime.
end_dateCustom end date. Same formats as start_date; "YYYY-MM" expands to the last day of the month.
Get workspace analytics overview › Responses
Analytics overview
periodHuman-readable range label (e.g. "30d" or "2026-04-01 to 2026-04-30")
start_dateResolved range start (YYYY-MM-DD), useful for clients that want to confirm what was queried
end_dateResolved range end (YYYY-MM-DD)
current_dateServer's current date (UTC), included so clients can self-correct relative phrases like "last month"
Get recommended posting times for a platform
Recommended day/hour posting slots for one platform, computed from the workspace's own posting history (publish time × engagement of every post published on that platform, recency-weighted, outlier-damped). Times are bucketed in the requesting user's timezone (overridable via timezone). When the workspace has fewer than 15 analyzed posts on the platform, a static industry-average table is returned instead — basis flips from own_data to defaults and posts_needed says how many more published posts unlock personalized recommendations. Grid scores are relative within the platform (100 = the best slot). Requires the analytics:read scope.
query Parameters
platformPlatform identifier (e.g. instagram, tiktok, linkedin, linkedin_page, x).
timezoneIANA timezone for the buckets (e.g. Europe/Amsterdam). Defaults to the account's timezone, then UTC.
Get recommended posting times for a platform › Responses
Best-time grid and top recommendations
platformtimezoneIANA timezone the day/hour buckets are expressed in
basisown_data = computed from this workspace's posts; defaults = industry averages (not enough history yet)
sample_sizeNumber of analyzed posts (published >72h ago, last 365 days)
posts_neededHow many more published posts unlock personalized recommendations (0 when basis is own_data)
metricAlways engagement in v1 (shared cross-platform engagement formula)
window_daysOne entry per day/hour cell that has data (missing cells = no posts there). Scores are relative 0-100.
Top 3 slots, diversity-enforced (never two on the same day within 3 hours)