Like count and the viewer's own like for any record URI, one or a batch. Subject-agnostic: post_engagement is keyed by subject URI and the like hook counts likes on anything, so this serves zeens, events, articles and posts without a branch per lexicon. Pass `uris` to ask about a whole listing in one call -- the profile and studio Zeens tabs list from the author's repo, which carries no engagement, so without a batch each card would need its own round trip.
Parameters
uri
string
at-uri
Optional
A single record. Returns the bare object shape (uri/likeCount/viewer), which LikeButton and the zeen page depend on.
uris
string
Optional
Comma-separated AT-URIs, up to 100. Returns an `engagements` array instead of the single-record fields, with one entry per requested uri -- including subjects with no engagement row, which come back as a known 0 rather than being omitted (the caller draws nothing for "unknown" and a 0 for "none yet", and those differ).
viewer
string
did
Optional
When given, the response carries this viewer's own like record.
Output
application/jsonengagements
array
Optional
Present for a `uris` request. One entry per requested uri, in request order.
likeCount
integer
Optional
No description available.
uri
stringat-uri
Optional
An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).
viewer
ref#viewerState
Optional
No description available.
Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"description": "Like count and the viewer's own like for any record URI, one or a batch. Subject-agnostic: post_engagement is keyed by subject URI and the like hook counts likes on anything, so this serves zeens, events, articles and posts without a branch per lexicon. Pass `uris` to ask about a whole listing in one call -- the profile and studio Zeens tabs list from the author's repo, which carries no engagement, so without a batch each card would need its own round trip.",
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"engagements": {
"description": "Present for a `uris` request. One entry per requested uri, in request order.",
"items": {
"ref": "#engagement",
"type": "ref"
},
"type": "array"
},
"likeCount": {
"type": "integer"
},
"uri": {
"format": "at-uri",
"type": "string"
},
"viewer": {
"ref": "#viewerState",
"type": "ref"
}
},
"required": [],
"type": "object"
}
},
"parameters": {
"properties": {
"uri": {
"description": "A single record. Returns the bare object shape (uri/likeCount/viewer), which LikeButton and the zeen page depend on.",
"format": "at-uri",
"type": "string"
},
"uris": {
"description": "Comma-separated AT-URIs, up to 100. Returns an `engagements` array instead of the single-record fields, with one entry per requested uri -- including subjects with no engagement row, which come back as a known 0 rather than being omitted (the caller draws nothing for \"unknown\" and a 0 for \"none yet\", and those differ).",
"type": "string"
},
"viewer": {
"description": "When given, the response carries this viewer's own like record.",
"format": "did",
"type": "string"
}
},
"required": [],
"type": "params"
},
"type": "query"
}