# botsmith X Thread Unroll

> botsmith X Thread Unroll is a paid API for AI agents from x402.botsmith.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-31).

Unrolls an X (Twitter) thread from any post ID, returning the conversation author's posts oldest-first with joined text, plus surrounding replies with metrics and pagination.

## Facts

- Endpoint: GET https://x402.botsmith.dev/x/thread?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/botsmith-x-thread-unroll-32ace3f6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_brjIcRoU0krcN17WGXU1N

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability botsmith-x-thread-unroll-32ace3f6
```

Example prompt: Can you unroll the X thread starting from tweet ID 1234567890123456789 and give me the full text in reading order along with like and retweet counts for each post?

## When to prefer this

Choose this endpoint when you need to read a full X/Twitter thread without an account or API key, want the conversation author's posts joined for clean reading, need reply metrics and threading structure, or need to paginate through large reply sets. Prefer over scraping solutions when cost ($0.01/call) is acceptable and structured JSON output is needed.

## Known failure modes

- Invalid or non-numeric tweet ID returns a validation error
- Deleted or private tweet/thread returns empty or error response
- Rate limiting or upstream X API unavailability may cause failures
- Invalid cursor format causes pagination to fail
- Thread with zero replies returns only the author's thread posts with no reply objects

## How this service works

X Thread Unroll ($0.01/call): Unroll an X (Twitter) thread from any post id in it: the conversation author's posts oldest first with their text joined for reading, then the replies around it, each with metrics and its reply-to id. Pass the cursor for more replies. No X account or API key needed.

## Output

Returns a JSON object with the focal tweet ID, conversation ID, author handle, joined thread text (author's posts oldest-first), an array of tweet objects (each with id, url, text, createdAt, lang, author info, engagement metrics, expanded links, hashtags, mentions, inReplyToId, and role as 'thread' or 'reply'), a hasNextPage flag, and a nextCursor string for pagination.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "id"
     ],
     "properties": {
      "id": {
       "type": "string",
       "pattern": "^[0-9]{1,25}$",
       "description": "Numeric id of any post in the thread"
      },
      "cursor": {
       "type": "string",
       "pattern": "^[A-Za-z0-9+/=_|-]{1,1000}$",
       "description": "Pagination cursor from a previous call"
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "focalId",
      "conversationId",
      "author",
      "threadText",
      "tweets",
      "hasNextPage",
      "nextCursor"
     ],
     "properties": {
      "author": {
       "anyOf": [
        {
         "type": "string"
        },
        {
         "type": "null"
        }
       ],
       "description": "Handle of the conversation author"
      },
      "tweets": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "id",
         "url",
         "text",
         "createdAt",
         "lang",
         "author",
         "metrics",
         "hashtags",
         "links",
         "mentions",
         "inReplyToId",
         "role"
        ],
        "properties": {
         "id": {
          "type": "string"
         },
         "url": {
          "anyOf": [
           {
            "type": "string"
           },
           {
            "type": "null"
           }
          ]
         },
         "lang": {
          "anyOf": [
           {
            "type": "string"
           },
           {
            "type": "null"
           }
          ]
         },
         "role": {
          "enum": [
           "thread",
           "reply"
          ],
          "type": "string",
          "description": "thread = the author's own posts, reply = everyone else"
         },
         "text": {
          "type": "string"
         },
         "links": {
      
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/botsmith-x-thread-unroll-32ace3f6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.botsmith.dev](https://www.zero.xyz/host/x402.botsmith.dev/llms.txt)
