Get best times to post
Returns the best times to post based on historical engagement data. Groups all published posts by day of week and hour (UTC), calculating average engagement per slot. Use this to auto-schedule posts at optimal times. Requires the Analytics add-on.
API key authentication - use your Zernio API key as a Bearer token
In: header
Query Parameters
Filter by platform (e.g. "instagram", "tiktok"). Omit for all platforms.
Filter by profile ID. Omit for all profiles.
Filter by post origin. "late" for posts published via Zernio, "external" for posts imported from platforms.
"all""all" | "late" | "external"Response Body
application/json
application/json
application/json
curl -X GET "https://zernio.com/api/v1/analytics/best-time"{
"slots": [
{
"day_of_week": 2,
"hour": 18,
"avg_engagement": 510.3,
"post_count": 15
},
{
"day_of_week": 0,
"hour": 9,
"avg_engagement": 342.5,
"post_count": 12
},
{
"day_of_week": 4,
"hour": 12,
"avg_engagement": 289.1,
"post_count": 8
}
]
}{
"error": "Unauthorized"
}{
"error": "Analytics add-on required",
"requiresAddon": true
}Get post analytics GET
Returns analytics for posts. With postId, returns a single post. Without it, returns a paginated list with overview stats. Accepts both Zernio Post IDs and External Post IDs (auto-resolved). fromDate defaults to 90 days ago if omitted, max range 366 days. Single post lookups may return 202 (sync pending) or 424 (all platforms failed). For follower stats, use /v1/accounts/follower-stats.
Get content performance decay GET
Returns how engagement accumulates over time after a post is published. Each bucket shows what percentage of the post's total engagement had been reached by that time window. Useful for understanding content lifespan (e.g. "posts reach 78% of total engagement within 24 hours"). Requires the Analytics add-on.