Skip to content

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:

  1. Pulls the last 90 days of post_stats snapshots.
  2. Aggregates by (weekday, hour) (UTC).
  3. Computes average engagement (likes + comments + shares + engagement_rate × 100).
  4. 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.