Post Analytics
GET /developers/v1/analytics/{id}
Returns performance metrics for a published post, broken down by platform and aggregated into totals. Only posts with a status of posted have analytics available.
Request
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The post ID to retrieve analytics for, as returned by Create Post or List Posts. |
Headers
| Header | Required | Description |
|---|---|---|
X-API-KEY | Yes* | Your personal API key. |
Authorization | Yes* | Bearer token: Bearer sp_tok_xxxxxxx. |
*Provide one of the two authentication headers.
No request body or query parameters are required.
Example request
curl https://api.schedpilot.com/developers/v1/analytics/8790 \
-H "X-API-KEY: smm_4a9f3c1e8b205d7a6e0f2c49b8d3a15f"
Response
Status: 200 OK
Top-level fields
| Field | Type | Description |
|---|---|---|
post_id | integer | The post ID these analytics belong to. |
breakdown | array | Per-platform metric snapshots (see below). |
totals | object | Aggregated metrics across all platforms (see below). |
engagement_rate | number | (likes + comments + shares) / impressions × 100, rounded to 2 decimal places. Returns 0 if impressions are zero. |
Breakdown item fields
Each entry in breakdown corresponds to one platform account the post was published to.
| Field | Type | Description |
|---|---|---|
platform | string | Platform type, e.g. "twitter", "linkedin". |
account_id | integer | The connected account ID. |
impressions | integer | Number of times the post was displayed to users. |
reach | integer | Number of unique users who saw the post. |
clicks | integer | Number of link or post clicks. |
likes | integer | Number of likes (or reactions on LinkedIn/Facebook). |
comments | integer | Number of comments or replies. |
shares | integer | Number of shares, retweets, or reposts. |
snapshot_date | string | The date and time this metric snapshot was last synced, in YYYY-MM-DD HH:MM:SS format. |
Totals fields
| Field | Type | Description |
|---|---|---|
impressions | integer | Sum of impressions across all platforms. |
reach | integer | Sum of reach across all platforms. |
clicks | integer | Sum of clicks across all platforms. |
likes | integer | Sum of likes across all platforms. |
comments | integer | Sum of comments across all platforms. |
shares | integer | Sum of shares across all platforms. |
Example response
{
"post_id": 8790,
"breakdown": [
{
"platform": "twitter",
"account_id": 12,
"impressions": 4820,
"reach": 3910,
"clicks": 217,
"likes": 143,
"comments": 28,
"shares": 61,
"snapshot_date": "2026-06-09 08:00:00"
},
{
"platform": "linkedin",
"account_id": 17,
"impressions": 2340,
"reach": 2105,
"clicks": 98,
"likes": 87,
"comments": 14,
"shares": 22,
"snapshot_date": "2026-06-09 06:15:00"
}
],
"totals": {
"impressions": 7160,
"reach": 6015,
"clicks": 315,
"likes": 230,
"comments": 42,
"shares": 83
},
"engagement_rate": 4.96
}
Error responses
| Status | Description |
|---|---|
404 Not Found | No post with the given ID exists, or the post belongs to a different user account. |
422 Unprocessable Entity | The post exists but does not have a status of posted. Analytics are only available for published posts. |
401 Unauthorized | Missing or invalid authentication credentials. |
429 Too Many Requests | Read rate limit exceeded (60 requests/hour). |
Notes
- Published posts only. Call List Posts and check the
statusfield before requesting analytics. Requesting analytics for a post with statusscheduled,draft, orfailedreturns a422error. - LinkedIn analytics sync delay. LinkedIn's API delivers analytics data on a delayed schedule. SchedPilot syncs LinkedIn metrics more frequently for posts published within the last 7 days (approximately every 2–3 hours) and less frequently for older posts (once daily). You may see a delay of up to a few hours before LinkedIn numbers appear or update after a post goes live.
- Metric availability varies by platform. Not all platforms expose every metric. For example, Twitter/X does not return a separate
reachvalue distinct fromimpressions, and some platforms do not reportclicksfor organic posts. Fields for unavailable metrics are returned as0. - Engagement rate formula.
engagement_rateis calculated as(likes + comments + shares) / impressions × 100across the post totals. Ifimpressionsis0(data not yet available),engagement_rateis0.