> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cabalspy.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# List replies

> GET /v1/theses/replies: the replies to a thesis, oldest first.

All replies to one thesis, oldest first, so a thread reads top to bottom. Every thesis already carries its 3 newest replies in `latest_replies`; use this endpoint for the rest. Replies have the same shape as theses with kind `reply`, without position and latest\_replies.

<Tip>
  The list is paginated. Read pagination.next\_cursor from the response and pass it back as cursor to fetch the next page. When next\_cursor is null you have reached the end.
</Tip>

## Query Parameters

<ParamField query="id" type="string" required>
  The thesis id.
</ParamField>

<ParamField query="limit" default="50" type="integer">
  Replies per page, 1 to 100.
</ParamField>

<ParamField query="cursor" type="string">
  Cursor for the next page, the pagination.next\_cursor from the previous response.
</ParamField>

<ParamField query="csid_id" type="string">
  The viewer, one of your users. Fills my\_reactions and is\_mine.
</ParamField>

<ParamField query="api_key" type="string" required>
  Your API key. Alternatively pass it as an Authorization Bearer header.
</ParamField>

## Usage Example

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api-id.cabalspy.xyz/v1/theses/replies?id=8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60" \
    -H "Authorization: Bearer YOUR_KEY"
  ```

  ```python Python theme={null}
  import requests

  r = requests.get("https://api-id.cabalspy.xyz/v1/theses/replies",
                   params={"id": "8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60"},
                   headers={"Authorization": "Bearer YOUR_KEY"})
  for reply in r.json()["data"]:
      print(reply["author"]["username"], reply["body"])
  ```

  ```javascript JavaScript theme={null}
  const p = new URLSearchParams({ id: "8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60" });
  const res = await fetch(`https://api-id.cabalspy.xyz/v1/theses/replies?${p}`, {
    headers: { Authorization: "Bearer YOUR_KEY" },
  });
  const { data } = await res.json();
  data.forEach(r => console.log(r.author.username, r.body));
  ```
</CodeGroup>

## Response

<ResponseField name="success" type="boolean">
  True on success.
</ResponseField>

<ResponseField name="data" type="array">
  Replies, the same object as in [List theses](/cabalspy-id/theses-list#response) with kind `reply`, parent\_id set and no position.
</ResponseField>

<ResponseField name="pagination" type="object">
  limit, total (always null), has\_more and next\_cursor (null means end).
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": [
      {
        "id": "2a9c7e10-4b3d-4f5e-8a6b-7c8d9e0f1a2b",
        "chain": "solana",
        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
        "kind": "reply",
        "parent_id": "8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60",
        "body": "Nice call",
        "stance": null,
        "author": {
          "csid_id": "5e2d8c41-7a9b-4c3e-b1f0-6d5e4c3b2a19",
          "username": "degen_dan",
          "name": "Dan",
          "image_url": "https://pbs.twimg.com/profile_images/.../photo.jpg",
          "kol_badge": false,
          "profile_url": "https://id.cabalspy.xyz/u/degen_dan"
        },
        "likes": 0,
        "replies": 0,
        "reactions": {},
        "my_reactions": [],
        "via": "Example Terminal",
        "created_at": "2026-10-13T09:20:02.118004+00:00",
        "is_mine": false
      }
    ],
    "pagination": {
      "limit": 50,
      "total": null,
      "has_more": false,
      "next_cursor": null
    },
    "meta": {
      "request_id": "req_5162c7cf7f87",
      "cached": false,
      "cache_age_seconds": 0,
      "version": "v1",
      "timestamp": "2026-10-13T10:04:11Z"
    }
  }
  ```
</ResponseExample>

## Errors

| Status | Code | Meaning |
| - | - | - |
| 400 | missing\_parameter | id is missing. |
| 400 | invalid\_parameter | limit invalid. |
| 401 | missing\_api\_key | API key missing. |
| 403 | invalid\_api\_key | API key invalid or not enabled for CabalSpy ID. |
| 404 | not\_found | id is not a valid thesis id. |
| 429 | rate\_limit\_exceeded | Rate limit exceeded. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.