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, deltatimeline = 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
| Field | Meaning on Bluesky |
|---|---|
impressions | Always null. Bluesky has no impressions API |
reach | Always null |
likes | Number of likes |
comments | Number of replies |
shares | Reposts and quotes |
saves | Bookmarks |
plays | Always null |
engagement | likes + comments + shares + saves |
Missing values are null.
Notes
- Data may be delayed by up to an hour. See Insights Freshness.
Errors
| Code | Cause | Fix |
|---|---|---|
NOT_PUBLISHED | Destination not published yet | Wait for publish |
INSIGHTS_PERMISSION | Token invalid | Reconnect with a new App Password |
INSIGHTS_FAILED | Hard failure | Retry. Contact support if it persists |