OmniSocialsOmniSocials
DocumentationAPI reference
Help centerSupport
  • Documentation
  • API reference
Developers
  • Quickstart
  • API reference
  • SDKs
  • MCP server
  • CLI
For AI agents
  • Docs for AI agents
  • llms.txt
  • OpenAPI spec
  • Postman collection
Product
  • OmniSocials
  • Pricing
  • Changelog
  • Help center
Company
  • Support
  • Privacy policy
  • Terms of service

© 2026 OmniSocials

OmniSocials on GitHubOmniSocials on XOmniSocials on LinkedIn
Information
Posts
    List postsgetList live platform postsgetGet a postgetDelete a postdeleteUpdate a postpatchCreate a postpostCreate and publish postpostPublish a post nowpostRetry failed postpostApprove a postpostReject a postpostGet approval reviewget
Media
    List mediagetGet a media itemgetDelete a media itemdeleteRename or move mediapatchUpload a filepostUpload from base64postUpload from a URLpostCreate an upload URLpostSplit a PDF into pagespostCheck media limitspostUpload with a tokenpost
Folders
    List foldersgetCreate a folderpostDelete a folderdeleteRename or move a folderpatch
Hashtag Sets
    List hashtag setsgetCreate a hashtag setpostGet a hashtag setgetDelete a hashtag setdeleteUpdate a hashtag setpatch
Accounts
    List accountsgetGet an accountget
Analytics
    Get bulk post analyticsgetGet post analyticsgetGet analytics overviewgetGet account analyticsgetGet best posting timesget
Approvals
    List approval workflowsget
Webhooks
    List webhooksgetCreate a webhookpostGet a webhookgetDelete a webhookdeleteUpdate a webhookpatchRotate webhook secretpost
Locations
    Search locationsgetValidate a locationget
Audio
    Search Instagram audioget
Pinterest
    List product PinsgetCheck a product Pinget
Inbox
    List conversationsgetList messagesgetMark conversation readpostReply to a conversationpostHide or unhide a commentpostDelete a commentdeleteGet next conversationget
Automations
    List automationsgetCreate an automationpostGet an automationgetDelete an automationdeleteUpdate an automationpatchList automation eventsget
Schemas
OmniSocials API
OmniSocials API

Analytics

Download schema

Fetch post-level and account-level metrics (impressions, engagement, reach, and follower stats) in single or bulk requests.


Get bulk post analytics

GET
https://api.omnisocials.com/v1
/analytics/posts

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.

Get bulk post analytics › query Parameters

ids
​string · required

Comma-separated numeric OmniSocials post ids (the id field from GET /posts), e.g. "1024,1025,1026". Max 100 per request.

Example: 1024,1025,1026

Get bulk post analytics › Responses

Per-post analytics, one entry per requested id

​PostAnalytics[]
count
​integer

Number of entries returned (equals the number of valid ids requested)

Example: 3
GET/analytics/posts
curl "https://api.omnisocials.com/v1/analytics/posts?ids=12345,12346" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": [ { "post_id": "1024", "platforms": { "key": { "platform": "instagram", "platform_post_id": "17912345678901234", "metrics": { "views": 1520, "reach": 1210, "likes": 84, "comments": 6, "shares": 3, "saves": 11 }, "thread_parts": 1, "story_slides": [ { "index": 0, "platform_post_id": "platform_post_id", "metrics": {}, "collected_at": "2024-08-25T15:00:00Z" } ], "collected_at": "2026-10-21T15:00:12.000Z" } } } ], "count": 3 }
json
application/json

Get post analytics

GET
https://api.omnisocials.com/v1
/analytics/posts/{id}

Get post analytics › path Parameters

id
​string · required

The numeric OmniSocials post id (the id field from GET /posts). Not a platform post id such as a YouTube video id or tweet id.

Example: 1024

Get post analytics › Responses

Post analytics data

​PostAnalytics
GET/analytics/posts/{id}
curl "https://api.omnisocials.com/v1/analytics/posts/12345" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": { "post_id": "1024", "platforms": { "key": { "platform": "instagram", "platform_post_id": "17912345678901234", "metrics": { "views": 1520, "reach": 1210, "likes": 84, "comments": 6, "shares": 3, "saves": 11 }, "thread_parts": 1, "story_slides": [ { "index": 0, "platform_post_id": "platform_post_id", "metrics": {}, "collected_at": "2024-08-25T15:00:00Z" } ], "collected_at": "2026-10-21T15:00:12.000Z" } } } }
json
application/json

Get analytics overview

GET
https://api.omnisocials.com/v1
/analytics/overview

Totals for the workspace of this API key over a period (period, default 30 days, or start_date and end_date), with a breakdown per platform. Requires the analytics:read scope.

Get analytics overview › query Parameters

period
​string · enum

Time period for analytics

Enum values:
7d
30d
90d
Default: 30d
start_date
​string

Custom 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.

Example: 2026-09-01
end_date
​string

Custom end date. Same formats as start_date; "YYYY-MM" expands to the last day of the month.

Example: 2026-09-30

Get analytics overview › Responses

Analytics overview

​AnalyticsOverview
period
​string

Human-readable range label (e.g. "30d" or "2026-04-01 to 2026-04-30")

Example: 30d
start_date
​string · date

Resolved range start (YYYY-MM-DD), useful for clients that want to confirm what was queried

Example: 2026-09-21
end_date
​string · date

Resolved range end (YYYY-MM-DD)

Example: 2026-10-21
current_date
​string · date

Server's current date (UTC), included so clients can self-correct relative phrases like "last month"

Example: 2026-10-21
GET/analytics/overview
curl "https://api.omnisocials.com/v1/analytics/overview?period=30d" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": { "total_posts": 42, "total_platforms": 4, "total_engagement": 3180, "total_impressions": 96400, "average_engagement_rate": 3.3, "top_performing_platform": "instagram", "platform_breakdown": { "key": { "posts": 12, "total_engagement": 1420, "total_impressions": 38200, "average_engagement": 118.3, "engagement_rate": 3.72 } } }, "period": "30d", "start_date": "2026-09-21", "end_date": "2026-10-21", "current_date": "2026-10-21" }
json
application/json

Get account analytics

GET
https://api.omnisocials.com/v1
/analytics/accounts

Latest stored account-level snapshot per connected platform, on or before the requested date. Snapshots are collected daily. Metric semantics vary by platform (see the AccountAnalytics schema). LinkedIn rows hold that day's impressions (period: "daily"). A LinkedIn profile row also keeps the all-time total of all of the member's posts in impressions_lifetime; when LinkedIn serves no daily breakdown, its impressions is that lifetime total and the row carries period: "lifetime". Each metrics object carries a note explaining its scope where semantics are non-obvious.

Get account analytics › query Parameters

platform
​string

Filter by platform

Example: instagram
date
​string · date

Date to get analytics for (YYYY-MM-DD, defaults to today)

Example: 2026-10-20

Get account analytics › Responses

200

Account analytics data

​AccountAnalytics[]
date
​string · date
GET/analytics/accounts
curl "https://api.omnisocials.com/v1/analytics/accounts?platform=instagram" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": [ { "platform": "instagram", "platform_account_id": "platform_account_id", "date": "2026-10-20", "metrics": { "followers": 12840, "following": 310, "posts": 412 }, "collected_at": "2026-10-20T23:10:04.000Z" } ], "date": "2026-10-20" }
json
application/json

Get best posting times

GET
https://api.omnisocials.com/v1
/analytics/best-times

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.

Get best posting times › query Parameters

platform
​string · required

Platform identifier (e.g. instagram, tiktok, linkedin, linkedin_page, x, telegram, discord).

Example: instagram
timezone
​string

IANA timezone for the buckets (e.g. Europe/Amsterdam). Defaults to the account's timezone, then UTC.

Example: Europe/Amsterdam

Get best posting times › Responses

Best-time grid and top recommendations

platform
​string
timezone
​string

IANA timezone the day/hour buckets are expressed in

Example: Europe/Amsterdam
basis
​string · enum

own_data = computed from this workspace's posts; own_data_and_audience = own posts blended with when the audience is online (Instagram, TikTok Business); audience = not enough posts yet, based on the audience-online profile only; defaults = industry averages (not enough history yet)

Enum values:
own_data
own_data_and_audience
audience
defaults
sample_size
​integer

Number of analyzed posts (published >72h ago, last 365 days)

Example: 48
posts_needed
​integer

How many more published posts unlock personalized recommendations (0 when basis is own_data)

Example: 0
metric
​string

Always engagement in v1 (shared cross-platform engagement formula)

Example: engagement
window_days
​integer
​object

Hour (0-23, in the response timezone) -> number of followers online, from the platform's audience-activity data. Present for Instagram and TikTok Business accounts with 100+ followers once the daily account snapshot has collected it.

audience_online_date
​string · date

Snapshot date of audience_online.

Example: 2026-10-20
​object[]

One entry per day/hour cell that has data (missing cells = no posts there). Scores are relative 0-100.

​object[]

Top 3 slots, diversity-enforced (never two on the same day within 3 hours)

GET/analytics/best-times
curl "https://api.omnisocials.com/v1/analytics/best-times?platform=instagram&timezone=Europe%2FAmsterdam" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "platform": "instagram", "timezone": "Europe/Amsterdam", "basis": "own_data", "sample_size": 48, "posts_needed": 0, "metric": "engagement", "window_days": 365, "audience_online": { "key": 0 }, "audience_online_date": "2026-10-20", "grid": [ { "day": "monday", "hour": 15, "score": 100, "n": 6, "typical_engagement": 132 } ], "recommendations": [ { "day": "tuesday", "hour": 15, "time": "15:00", "score": 100 } ] }
json
application/json

AccountsApprovals