↑ ↓ to move ↵ to open
Bluesky API · Endpoint

Bluesky Post Thread API

Get a post with its replies, nested a few levels deep, and the post it answers.

  • 1 credit per call
  • Failed calls are free
  • Updated
  • bluesky.feed.get_post_thread
Response completed
{  "depth_requested": 25,  "depth_used": 0,  "thread": {    "post": {      "text": "Ready for the next step in your scientific career? \n\nApply now for a fully funded Biozentrum PhD Fellowship and explore a wide range of res…",      "created_at": "2026-08-10T10:11:01.201Z",      "lang": "en",      "uri": "at://did:plc:bzxbgtybz2h5untckchdlocr/app.bsky.feed.post/3mspud5re5c26",      "author": {        "display_name": "Biozentrum, University of Basel",        "handle": "biozentrum.unibas.ch",        "did": "did:plc:bzxbgtybz2h5untckchdlocr"      }    }  }}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

FieldTypeRequiredWhat it doesExample
uri string yes The post's at:// URI or its bsky.app link. at://did:plc:bzxbgtybz2h5untckchdlocr/app.bsky.…
depth integer no How many levels of replies to include. 25
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeWhat it isExample
depth_requested integer How many reply levels were asked for. 25
depth_used integer How many reply levels the thread has. 0
thread object The thread. 1 fields
thread.post object The thread's first post. 5 fields
thread.post.author object Who posted it. 3 fields
thread.post.created_at string When it was posted. 2026-08-10T10:11:01.201Z
thread.post.lang string The post's language. en
thread.post.text string The post's text. Ready for the next step in your scientific career? Apply now fo…
thread.post.uri string The post's permanent address on Bluesky. at://did:plc:bzxbgtybz2h5untckchdlocr/app.bsky.feed.post/3mspud…
REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "bluesky.feed.get_post_thread",  "input": {    "depth": 25,    "uri": "at://did:plc:bzxbgtybz2h5untckchdlocr/app.bsky.feed.post/3mspud5re5c26"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

With Upscrape, get the Bluesky post thread for depth "25" and uri "at://did:plc:bzxbgtybz2h5untckchdlocr/app.bsky.feed.post/3mspud5re5c26". Tell me what it costs before you run it, then show the results as a table.

The agent finds the endpoint, shows you the price, and runs it with your credits.
Bluesky

More from the Bluesky API

Questions

Bluesky Post Thread API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the Bluesky Post Thread API cost?

1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Send uri. The input fields below list every option with its type and limits.

Do I need a Bluesky login?

No. It reads public Bluesky data; nothing runs on your account.

Can my AI agent call it?

Yes, over MCP: the agent finds bluesky.feed.get_post_thread, checks its price and runs it with the same credits as the REST API.

Get started

Your first Bluesky call is free.

Up to 100 free credits to start, no card needed.