Skip to main content

Analytics Summary — GET /v1/analytics/summary

Returns aggregate counts for a time window. Answers questions like "how many posts have I published this month?" or "which platform has the most failures this week?" without listing every post and counting client-side.

Request

curl "https://app.posteverywhere.ai/api/v1/analytics/summary?period=week" \
-H "Authorization: Bearer $POSTEVERYWHERE_API_KEY"

Parameters

ParamValuesDefault
periodtoday (24 h), week (7 d), month (30 d), all, custommonth
fromISO timestamp (required if period=custom)
toISO timestamp (required if period=custom)

Response

{
"period": "week",
"range": { "from": "2026-06-04T05:30:00Z", "to": "2026-06-11T05:30:00Z" },

"posts": {
"total": 214,
"draft": 3,
"scheduled": 168,
"publishing": 2,
"published": 33,
"partially_failed": 4,
"failed": 4
},

"by_platform": [
{ "platform": "instagram", "total": 67, "scheduled": 55, "published": 11, "failed": 1 },
{ "platform": "tiktok", "total": 41, "scheduled": 38, "published": 0, "failed": 3 },
{ "platform": "linkedin", "total": 38, "scheduled": 30, "published": 8, "failed": 0 }
],

"metrics": {
"views": 12483,
"likes": 872,
"comments": 143,
"shares": 29,
"impressions": 41208,
"clicks": 518
},

"ai_credits": {
"used_this_period": 138,
"bonus": 0
}
}

Notes

  • posts.total counts unique post groups. Multi-platform posts count as one here, not one per destination.
  • by_platform.total counts destinations, so a 5-platform post contributes 5 rows total.
  • metrics aggregates only the published destinations. Failed destinations don't have metrics.
  • Status counts use the derived post status, the same as GET /v1/posts's status filter (scheduled / publishing / published / partially_failed / failed / draft).

Status derivation

  • published — every destination is published
  • failed — ≥1 destination failed AND none published AND none queued
  • partially_failed — ≥1 destination published AND ≥1 failed
  • publishing — ≥1 destination is publishing
  • scheduled — ≥1 destination queued AND nothing published yet
  • draftposts.post_status = 'draft'