logo
Schedulin Developers

Get post analytics

After a post publishes, Schedulin collects its metrics from the platform on a schedule. Two endpoints expose them (OAuth apps need the analytics:read scope).

Latest snapshot

GET /v0/posts/{id}/analytics/summary returns the most recent metrics and when they were collected:

curl https://api.schedulin.app/v0/posts/post_789/analytics/summary \
  -H "x-api-key: $SCHEDULIN_API_KEY"
{
  "analyticsLatest": { "...": "platform metrics" },
  "analyticsLastFetchedAt": "2026-06-02T10:00:00.000Z",
  "analyticsNextFetchAt": "2026-06-02T16:00:00.000Z",
  "updatedAt": "2026-06-02T10:00:00.000Z"
}
const summary = await client.posts.analyticsSummary({ id: "post_789" });
summary = client.posts.analytics_summary("post_789")

analyticsLatest is null until the first collection runs. Its keys depend on the platform (views, likes, comments, shares, and so on). analyticsNextFetchAt tells you when fresher numbers are expected.

Time series

GET /v0/posts/{id}/analytics/series returns every collected snapshot, oldest first, under data. limit caps the number of points (default 500, max 1000).

curl "https://api.schedulin.app/v0/posts/post_789/analytics/series?limit=100" \
  -H "x-api-key: $SCHEDULIN_API_KEY"
{
  "data": [
    {
      "id": "…",
      "collectedAt": "2026-06-01T16:00:00.000Z",
      "platform": "instagram",
      "metrics": { "...": "platform metrics" }
    }
  ]
}
const { data: points } = await client.posts.analyticsSeries({ id: "post_789", limit: 100 });
points = client.posts.analytics_series("post_789", limit=100).data
NOTE
Both endpoints return for a post that isn't in your workspace. TikTok series require the channel to have granted the permission; otherwise the series endpoint returns — reconnect the channel to grant it.