GET/social-posts/analytics

Fetch published posts with their latest performance metrics. Only returns posts that have been successfully published (with a platformPostId).

https://api.postfa.st/Auth: pf-api-keyRate limit: 350 requests per hour

Notes

Only returns posts with status PUBLISHED and a valid platformPostId.

LinkedIn personal accounts are excluded (no metrics available from the LinkedIn API).

Count metrics (likes, comments, shares, impressions, reach, totalInteractions) are returned as strings (bigint), e.g. "1234" not 1234. Parse them to numbers in your code. Exception: the video watch-time fields (avgWatchTimeSeconds, totalWatchTimeSeconds, videoViews) and the Instagram rate fields (saveRate, reelsSkipRate) are plain JSON numbers.

latestMetric is null until metrics have been fetched for that post.

No pagination, so keep date ranges reasonable to avoid large responses.

extras holds platform-specific metrics not in the standard fields.

Results are automatically filtered to the workspace tied to the API key.

Video watch time

When a post has video watch-time data, latestMetric includes up to three extra fields: avgWatchTimeSeconds (average watch time per view), totalWatchTimeSeconds (total across all views), and videoViews (view count where the platform reports it separately). Watch-time values are in seconds, rounded to 2 decimals. All three are plain JSON numbers, not bigint strings like the other metrics.

Coverage: Facebook, Instagram Reels, YouTube, Pinterest, LinkedIn organization Pages, and TikTok. videoViews is omitted on Instagram, YouTube, and TikTok because their video-view totals are already reported in impressions.

Not available on Threads, X, or personal Facebook/LinkedIn accounts. Each field is omitted (not null) when there is no data. Facebook and Pinterest report watch-time immediately; Instagram, YouTube, and LinkedIn populate on the next metrics refresh; TikTok watch-time lands about 24 to 48 hours after publishing.

Instagram save rate and reel skip rate

On Instagram, latestMetric carries two derived engagement fields as plain JSON numbers. saveRate is the save rate (saves / reach) as a percentage, rounded to 2 decimals, present on Instagram feed posts, reels, and carousels that have metrics.

reelsSkipRate applies to Instagram Reels only: the percentage of viewers who skipped the reel within the first 3 seconds, as reported by Instagram, rounded to 2 decimals. It can be absent on low-view reels or until metrics refresh, and the raw reels_skip_rate key also lands in extras.

Both are Instagram-only and omitted (not null) on every other platform.

Pinterest extras

Pinterest pins populate the standard impressions, likes (reactions), and comments fields, plus these keys inside extras:

Lifetime: pin_clicks (clicks opening the pin close-up) and outbound_clicks (clicks to the destination URL).

Rolling 90-day window (Pinterest only exposes these over 90 days): impressions_90d, pin_clicks_90d, and outbound_clicks_90d.

Video pins additionally include lowercased Pinterest video metric keys, such as video_mrc_view, video_10s_view, and video_avg_watch_time.

Requires a Pinterest Business account on the connected social media. Personal accounts can be upgraded to Business for free via Pinterest settings.

TikTok extras

On TikTok video posts, the video-view count folds into impressions (so videoViews is omitted), and these keys appear inside extras:

total_time_watched and average_time_watched: total and average watch time in seconds. These also drive the normalized totalWatchTimeSeconds and avgWatchTimeSeconds fields.

full_video_watched_rate: the share of views that watched the whole video, a completion rate as returned by TikTok (passed through unchanged, not normalized by PostFast).

favorites: number of times the video was added to Favorites.

These insights come from TikTok and land about 24 to 48 hours after the video is published, so latestMetric can show counts like likes and comments before watch-time appears.

Query parameters

startDateISO 8601required

Start of the date range, e.g. 2026-01-01T00:00:00.000Z.

endDateISO 8601required

End of the date range, e.g. 2026-01-31T23:59:59.999Z.

platformsstringoptional

Comma-separated platform values to filter by, e.g. FACEBOOK,INSTAGRAM.

socialMediaIdsstringoptional

Comma-separated UUIDs to filter by specific social media account ids (from /social-media/my-social-accounts).

Response

200 OK An object with a data array of published posts and their latest metrics.

dataarrayoptional

Published posts in the date range.

idstring (UUID)optional

Post id.

contentstringoptional

Text content of the post.

socialMediaIdstring (UUID)optional

Account the post was published to.

platformPostIdstringoptional

Id of the post on the platform.

publishedAtISO 8601optional

When the post was published.

latestMetricobject | nulloptional

Latest fetched metrics, or null until metrics have been fetched.

likesstring (bigint)optional

Likes, e.g. 1234.

commentsstring (bigint)optional

Comments.

sharesstring (bigint)optional

Shares.

impressionsstring (bigint)optional

Impressions.

reachstring (bigint)optional

Reach. May be null on platforms that don't report it (e.g. Pinterest).

totalInteractionsstring (bigint)optional

Total interactions for the post.

avgWatchTimeSecondsnumberoptional

Average watch time per view, in seconds (rounded to 2 decimals). Present for video posts on Facebook, Instagram Reels, YouTube, Pinterest, LinkedIn organization Pages, and TikTok. Omitted (not null) when the post has no watch-time data. A plain JSON number, not a bigint string.

totalWatchTimeSecondsnumberoptional

Total watch time across all views, in seconds (rounded to 2 decimals). Same platform coverage as avgWatchTimeSeconds. Omitted when unavailable. A plain JSON number.

videoViewsnumberoptional

Video view count, where the platform reports it separately from impressions (Facebook, Pinterest, LinkedIn organization Pages). On Instagram, YouTube, and TikTok the video-view total is already in impressions, so this field is omitted there. Omitted when unavailable. A plain JSON number.

saveRatenumberoptional

Instagram only. Save rate as a percentage (saves / reach), rounded to 2 decimals. Present on Instagram feed posts, reels, and carousels that have metrics. Omitted (not null) on other platforms or before metrics arrive. A plain JSON number.

reelsSkipRatenumberoptional

Instagram Reels only. Percentage of viewers who skipped the reel within the first 3 seconds, as reported by Instagram, rounded to 2 decimals. May be absent on low-view reels or until metrics refresh. The raw reels_skip_rate value also appears in extras. A plain JSON number.

extrasobjectoptional

Platform-specific metrics not in the standard fields (varies by platform).

fetchedAtISO 8601optional

When the metrics were fetched.