Docs
Bluesky

Insights

Analytics and normalized metrics for Bluesky posts.

Read performance metrics for a published Bluesky destination.

Request

const { insights } = await insightsApi.getPostInsights({ id: postId });;
console.log(insights.destinations);
insights = await insights_api.get_post_insights(id=post_id)["insights"]
print(insights["destinations"])
curl "https://api.onepostly.com/v1/posts/POST_ID/insights" \
  -H "x-api-key: op_YOUR_KEY"

Response

{
  "insights": {
    "postId": "POST_ID",
    "status": "ready",
    "destinations": [
      {
        "destinationId": "DEST_ID",
        "platform": "bluesky",
        "status": "ready",
        "metrics": {
          "impressions": null,
          "reach": null,
          "likes": 40,
          "comments": 8,
          "shares": 3,
          "saves": 1,
          "plays": null,
          "engagement": 52
        },
        "fetchedAt": "2026-08-25T10:00:00.000Z"
      }
    ]
  }
}

Daily timeline

Day-by-day cumulative metrics per destination. Optional from and to bound the inclusive UTC date range. The default window is the last 366 days.

const { timeline } = await insightsApi.getPostInsightsTimeline({
  id: postId,
  from: "2026-08-01",
  to: "2026-08-28",
});
// timeline.destinations[].points[].day, metrics, delta
timeline = await insights_api.get_post_insights_timeline(
    id=post_id, var_from="2026-08-01", to="2026-08-28"
)
# timeline["destinations"][0]["points"]
curl "https://api.onepostly.com/v1/posts/POST_ID/insights/timeline?from=2026-08-01&to=2026-08-28" \
  -H "x-api-key: op_YOUR_KEY"

Each metrics object holds cumulative totals as captured on that UTC day. delta compares them against the previous stored day. A delta entry is null when either side has no value. Days without a stored snapshot have no data. The API does not backfill them.

Normalized fields

FieldMeaning on Bluesky
impressionsAlways null. Bluesky has no impressions API
reachAlways null
likesNumber of likes
commentsNumber of replies
sharesReposts and quotes
savesBookmarks
playsAlways null
engagementlikes + comments + shares + saves

Missing values are null.

Notes

Errors

CodeCauseFix
NOT_PUBLISHEDDestination not published yetWait for publish
INSIGHTS_PERMISSIONToken invalidReconnect with a new App Password
INSIGHTS_FAILEDHard failureRetry. Contact support if it persists

See also