Per-post engagement metrics (impressions, likes, comments, shares) from Late.
?postId=<internal uuid> or ?latePostId=<late id>. Returns analytics for that one post wrapped in Late’s envelope.posted row in the caller’s calendar, makes one Late request per post, and returns an aggregate overview plus a per-post breakdown.code: "analytics_addon_required".Aggregate mode is expensive — one Late API call per posted post in the caller’s calendar. For large calendars, prefer single-post mode and cache aggregates client-side.Account filtering — the aggregate response includes accountIds as Late’s IDs (not internal IDs) so the frontend can filter against Late’s account tab without re-mapping.404 vs null analytics — when Late reports “analytics not available yet” (e.g., post too new), the response is 404 with body { error: "...", analytics: null }, not 200. Handle both branches.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Internal post UUID. When set, the server looks up the associated late_post_id and returns single-post analytics. Mutually exclusive with latePostId.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Late's post ID. Use when you already have the Late ID and want to skip the internal lookup. Mutually exclusive with postId.
Single-post or aggregated response. See oneOf examples — shape depends on whether postId/latePostId was passed.
Shape returned when postId or latePostId is supplied. Late's own envelope is passed through — the per-post metrics live at analytics.analytics.