# List the replies to an X post

Returns the replies under an X post, by relevance, latest or likes, with author and engagement counts. Use it to read how people react to a post.

Tool `x.post.replies` on X (Twitter). Contract version 1, released 2026-11-01.

## Example call

Over REST, send the input in the body. Over MCP, pass the same input to `call_tool`.

cURL:

```bash
curl https://api.voxoria.ai/v1/tools/x.post.replies/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"post_id":"2114780711664398349"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/x.post.replies/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={"input": {"post_id": "2114780711664398349"}},
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/x.post.replies/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"input": {"post_id": "2114780711664398349"}}),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "x.post.replies",
    "input": {
      "post_id": "2114780711664398349"
    }
  }
}
```

Both return [the full response](/docs/call-response.md): the call's ID, status and cost, with this tool's result in `output`.

## Input

| Input | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `post_id` | string | Yes |  | X's identifier of the post, the number after /status/ in its address. Matches `^[0-9]+$`. |
| `sort` | string | No | `relevance` | Order of the replies: relevance (X's ranking), latest or likes. One of `relevance`, `latest`, `likes`. |
| `next_page_token` | string | No |  | Fetches the next page. Take it from pagination.next_page_token of the previous page, and send the same post_id and sort. |

## Output

A successful call returns these blocks in its `output`. A field not marked required can be `null`.

### replies

A list of rows. Always present, possibly empty. The posts of the conversation under the post, which can include the author's own thread. The post itself is not included.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | X's identifier of the post. The post is at https://x.com/i/status/ followed by it. |
| `url` | string | No | Address of the post on x.com. Format `uri`. |
| `text` | string | No | What the post says, links written as X's t.co short links. |
| `published_at` | string | No | When the post was published, in ISO 8601. |
| `author_id` | string | No | X's numeric identifier of the author, as a string. |
| `author_username` | string | No | The author's handle, without the @. |
| `author_name` | string | No | The author's display name. |
| `author_image_url` | string | No | Address of the author's profile picture. |
| `author_follower_count` | integer | No |  |
| `reply_count` | integer | No |  |
| `repost_count` | integer | No |  |
| `quote_count` | integer | No |  |
| `like_count` | integer | No |  |
| `bookmark_count` | integer | No |  |
| `view_count` | integer | No | Number of times the post was seen. |
| `conversation_id` | string | No | Identifier of the post that opened the thread. |
| `in_reply_to_post_id` | string | No | Identifier of the post this one replies to. |
| `in_reply_to_username` | string | No | Handle of the author this post replies to, without the @. |
| `hashtags` | array of string | No | Each hashtag in the text, without the |
| `mentioned_usernames` | array of string | No | Handle of each account the text mentions, without the @. |
| `link_urls` | array of string | No | Full address of each link in the text. |
| `image_urls` | array of string | No | Address of each photo attached to the post. |
| `videos` | array of object | No | Each video attached to the post. |
| `videos.preview_image_url` | string | Yes | Address of the video's still image. |
| `videos.duration_ms` | integer | No | Length of the video, in milliseconds. |
| `videos.width` | integer | No | Width of the original video, in pixels. |
| `videos.height` | integer | No | Height of the original video, in pixels. |

### pagination

One object. Can be `null`. How to fetch the next page. Null on the last page.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_page_token` | string | Yes | Send as next_page_token to fetch the next page. |

## Example output

The `output` of a real call, each list cut to 3 items.

```json
{
  "replies": [
    {
      "id": "2114780715086754261",
      "url": null,
      "text": "GPT-6.1 Terra continues to advance the cost-intelligence frontier across our model families.\n\nIt’s a significant step up over GPT‑5.6 Terra, with 50% lower standard API prices.\n\nIn ChatGPT Work and Codex, your usage allowance goes further with GPT‑6.1 Terra than with GPT‑5.6 Terra—and far more than with GPT‑6.1 Sol or GPT‑6 Astra.\n\nFor in-depth research or complex coding, choose GPT-6.1 Sol or GPT-6 Astra.",
      "published_at": "2026-10-26T18:06:27Z",
      "author_id": "4398626122",
      "author_username": "OpenAI",
      "author_name": "OpenAI",
      "author_image_url": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_normal.jpg",
      "author_follower_count": null,
      "reply_count": 75,
      "repost_count": 146,
      "quote_count": 82,
      "like_count": 4308,
      "bookmark_count": 361,
      "view_count": 478753,
      "conversation_id": "2114780711664398349",
      "in_reply_to_post_id": null,
      "in_reply_to_username": null,
      "hashtags": null,
      "mentioned_usernames": null,
      "link_urls": null,
      "image_urls": null,
      "videos": [
        {
          "preview_image_url": "https://pbs.twimg.com/amplify_video_thumb/2114778628261072896/img/e4ev9yWyOgW8C4Mz.jpg",
          "duration_ms": 120000,
          "width": 1920,
          "height": 1080
        }
      ]
    },
    {
      "id": "2114780717188272382",
      "url": null,
      "text": "GPT-6.1 Terra substantially outperforms GPT-5.6 Terra on Agents’ Last Exam, a test of how well agents use software at work.\n\nIt even matches GPT-6 Astra at one-tenth the price per token and finishes tasks over 3× faster on average than both Astra and GPT-6.1 Sol. https://t.co/pzAmnvjBUi",
      "published_at": "2026-10-26T18:06:28Z",
      "author_id": "4398626122",
      "author_username": "OpenAI",
      "author_name": "OpenAI",
      "author_image_url": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_normal.jpg",
      "author_follower_count": null,
      "reply_count": 133,
      "repost_count": 380,
      "quote_count": 496,
      "like_count": 3378,
      "bookmark_count": 564,
      "view_count": 1132831,
      "conversation_id": "2114780711664398349",
      "in_reply_to_post_id": null,
      "in_reply_to_username": null,
      "hashtags": null,
      "mentioned_usernames": null,
      "link_urls": null,
      "image_urls": [
        "https://pbs.twimg.com/media/HVk0CqWXkAAnsvd.png"
      ],
      "videos": null
    },
    {
      "id": "2114780720170164735",
      "url": null,
      "text": "GPT-6.1 Terra is rolling out now and is available to all Plus, Pro, Enterprise, and Edu users in ChatGPT Work and Codex.\n\nDevelopers can also access it through the OpenAI API as gpt-6.1-terra.\n\nhttps://t.co/TVsi7lEeX9",
      "published_at": "2026-10-26T18:06:29Z",
      "author_id": "4398626122",
      "author_username": "OpenAI",
      "author_name": "OpenAI",
      "author_image_url": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_normal.jpg",
      "author_follower_count": null,
      "reply_count": 41,
      "repost_count": 73,
      "quote_count": 40,
      "like_count": 1528,
      "bookmark_count": 99,
      "view_count": 280169,
      "conversation_id": "2114780711664398349",
      "in_reply_to_post_id": null,
      "in_reply_to_username": null,
      "hashtags": null,
      "mentioned_usernames": null,
      "link_urls": [
        "https://openai.com/index/introducing-gpt-6-1-terra/"
      ],
      "image_urls": null,
      "videos": null
    }
  ],
  "pagination": {
    "next_page_token": "pt1.dGlraHViOkRBQUtDZ0FCSFdCZXZ3WF9fbmNMQUFJQUFBR29SVzFRUXpaM1FVRkJabEV2WjBkS1RqQjJSM0F2UVVGQlFVTlZaRmRVYTNWWVZuQkNhM2d4WVU5S1lrNXNNRU5WU0Zack1sZHNVbUZKUzI5a1YxUmtaVkpLWlhoNVFqRmFUekl6TkVacVJFbElWbXMwTUdacVltOVhSV1JYVkZscWRIaGhRbFZTTVZwUmFtcFJWMjVEUjBoV2F6TklXV1pZWTFSclpGZFViak5CU25CU2JIZ3hZV2hLVXpFeGFVZFhTRlpyTjBWWmRXRTBSRVZrVjFSaE1uWmtjVUp5UWpGYVVFSkdkRVl3UmtsSVZtc3pSa2RuWVdOWFkyUlhWRmhoVTBweGQwUlNNVnBPWkhoRWJHMUlMMGhXYkVSM2IxRmhWVkpqWkZkVmN6QjRlSEpTTkZJeFlVTmlWbk14ZFVGMFNGWnJOblY0Y1dFd1ZtZGtWMVJuVFRaV2NtaGpRakZhVDBKWGNsWnBSaXRJVm1zdlYxWkVXR05DTkdSWFZqbFBlbWhqUW5SNE1WcE9NblpGVm1sSFJVaFdiRUpWU2xOWVdWYzBaRmRVV1RWblduVm5jMEl4V2xCUGQyZ3lkRWRXU0Zac1NtVm5hV0pGVDFsa1YxUllZa1pLWlhneFVqRmFUemhuV0Zac1JWbElWbTE0YzFKMllVVkRUV1JYWmk5SFVVWm1VWFY0TVZwT1pIVlNNbXhFSzBoV2F6TjNWMGhYTkdOWlpGZFVZMFJrVm5OM2RsRTlQUWdBQXdBQUFBSUxBQVFBQUFBR1FtOTBkRzl0QUFB"
  }
}
```
