Bluesky API endpoint
Returns public Bluesky posts for 1-25 at:// post URIs. Missing, deleted, or blocked posts are omitted when the public AppView omits them.
/bluesky/postsReturns public posts for 1-25 repeated uris query parameters. Each value must be an at:// post URI. Missing, deleted, or blocked posts may be omitted by the upstream AppView.
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| uri | 1 | |
| cid | 1 | |
| url | 1 | bsky.app |
| author | 1 | |
| text | 1 | median 279 characters |
| langs | 1 | median 1 entry |
| created_at | 1 | 2024-10-17 |
| indexed_at | 1 | 2024-10-17 |
| reply_count | 1 | 8,658 |
| repost_count | 1 | 9,544 |
| like_count | 1 | 63,765 |
| quote_count | 1 | 718 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| uris | array<string> | Yes | One or more at:// post URIs (1-25); repeat the parameter for multiple URIs | at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bluesky/posts?uris=at%3A%2F%2Fdid%3Aplc%3Az72i7hdynmk6r22z27h6tvur%2Fapp.bsky.feed.post%2F3l6oveex3ii2l" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"posts": [
{
"uri": "at://did:plc:a/app.bsky.feed.post/one",
"cid": "bafycid",
"url": "https://bsky.app/profile/alice.test/post/one",
"author": {
"did": "did:plc:a",
"handle": "alice.test"
},
"text": "Hello"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/bluesky.postsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bluesky.PostsResponse | No | ||||
| data.posts | array | No | ||||
| data.posts[].author | bluesky.Actor | No | ||||
| data.posts[].author.avatar_url | string | No | https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka | |||
| data.posts[].author.created_at | string | No | 2023-04-12T04:53:57.057Z | |||
| data.posts[].author.description | string | No | official Bluesky account | |||
| data.posts[].author.did | string | No | did:plc:z72i7hdynmk6r22z27h6tvur | |||
| data.posts[].author.display_name | string | No | Bluesky | |||
| data.posts[].author.handle | string | No | bsky.app | |||
| data.posts[].cid | string | No | bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq | |||
| data.posts[].created_at | string | No | 2024-10-17T07:06:51.491Z | |||
| data.posts[].external | bluesky.PostEmbedExternal | No | ||||
| data.posts[].external.description | string | No | A short description of the linked page. | |||
| data.posts[].external.thumb_url | string | No | https://cdn.bsky.app/img/feed_thumbnail/plain/... | |||
| data.posts[].external.title | string | No | An Article Title | |||
| data.posts[].external.url | string | No | https://example.com/article | |||
| data.posts[].images | array | No | ||||
| data.posts[].images[].alt | string | No | a photo of a gnome | |||
| data.posts[].images[].fullsize_url | string | No | https://cdn.bsky.app/img/feed_fullsize/plain/... | |||
| data.posts[].images[].thumb_url | string | No | https://cdn.bsky.app/img/feed_thumbnail/plain/... | |||
| data.posts[].indexed_at | string | No | 2024-10-17T07:06:51.491Z | |||
| data.posts[].langs | array | No | en | |||
| data.posts[].like_count | integer | No | 63579 | |||
| data.posts[].quote_count | integer | No | 705 | |||
| data.posts[].quoted_post_uri | string | No | at://did:plc:.../app.bsky.feed.post/... | |||
| data.posts[].reply_count | integer | No | 8545 | |||
| data.posts[].repost_count | integer | No | 9534 | |||
| data.posts[].text | string | No | Welcome to Bluesky! | |||
| data.posts[].uri | string | No | at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l | |||
| data.posts[].url | string | No | https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bluesky/posts?uris=at%3A%2F%2Fdid%3Aplc%3Az72i7hdynmk6r22z27h6tvur%2Fapp.bsky.feed.post%2F3l6oveex3ii2l" \
-H "x-api-key: $CRAWLORA_API_KEY"