Best Posting Time
Endpoint
GET /api/v1/analytics/best-posting-time?accounts=Returns a per-channel heatmap of historical engagement keyed by UTC hour-of-day × weekday. The grid is the same signal the composer's Find slot uses.
How it's computed
For the requested accounts, the service:
- Pulls the last 90 days of
post_statssnapshots. - Aggregates by
(weekday, hour)(UTC). - Computes average engagement (
likes + comments + shares + engagement_rate × 100). - Returns one cell per
(weekday, hour)with the score and the post count contributing to it.
If the engagement signal is too thin (new account, low post volume), the response falls back to a default high-traffic profile with peaks at UTC 9, 13, and 19.
Reading the heatmap
The frontend renders this as a 7×24 grid. Hot cells are best-times; cold cells are quiet windows. Note the data is UTC; convert mentally for your audience's local time, or use the channel's stored timezone in the composer when scheduling.