> ## 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.

# User theses

> GET /v1/theses/user: the theses one user wrote, newest first, by csid_id or X handle.

The theses one person wrote, newest first, across all tokens. Use it on a trader profile to show their calls next to their trading stats.

<Tip>
  Pass csid\_id or username. The list is paginated with cursor and pagination.next\_cursor.
</Tip>

## Query Parameters

<ParamField query="csid_id" type="string">
  The author's CabalSpy ID.
</ParamField>

<ParamField query="username" type="string">
  Or the author's X handle, with or without the @.
</ParamField>

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

<ParamField query="cursor" type="string">
  Cursor for the next page, the pagination.next\_cursor from the previous response.
</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/user?username=MazeCCC" \
    -H "Authorization: Bearer YOUR_KEY"
  ```

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

  r = requests.get("https://api-id.cabalspy.xyz/v1/theses/user", params={"username": "MazeCCC"},
                   headers={"Authorization": "Bearer YOUR_KEY"})
  for t in r.json()["data"]:
      print(t["created_at"], t["chain"], t["mint"], t["stance"])
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch("https://api-id.cabalspy.xyz/v1/theses/user?username=MazeCCC", {
    headers: { Authorization: "Bearer YOUR_KEY" },
  });
  const { data } = await res.json();
  data.forEach(t => console.log(t.mint, t.stance, t.position.now?.pnl_usd));
  ```
</CodeGroup>

## Response

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

<ResponseField name="data" type="array">
  Theses, the same object as in [List theses](/cabalspy-id/theses-list#response).
</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": "8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60",
        "chain": "solana",
        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
        "kind": "thesis",
        "parent_id": null,
        "body": "Strong community, dev still holding, chart just broke out. Still early.",
        "stance": "bull",
        "author": { "csid_id": "0b7c4a52-3f1e-4f43-9d0a-2b5e7c1d9a11", "username": "MazeCCC", "name": "Maze", "image_url": "https://pbs.twimg.com/profile_images/.../photo.jpg", "kol_badge": true, "profile_url": "https://id.cabalspy.xyz/u/MazeCCC" },
        "likes": 4,
        "replies": 1,
        "reactions": { "like": 4 },
        "my_reactions": [],
        "via": "Example Terminal",
        "created_at": "2026-10-13T09:12:44.512113+00:00",
        "is_mine": false,
        "position": { "private": true }
      }
    ],
    "pagination": { "limit": 20, "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 | Neither csid\_id nor username was passed. |
| 400 | invalid\_parameter | csid\_id or limit invalid. |
| 401 | missing\_api\_key | API key missing. |
| 403 | invalid\_api\_key | API key invalid or not enabled for CabalSpy ID. |
| 404 | profile\_not\_found | No CabalSpy ID user with this username. |
| 429 | rate\_limit\_exceeded | Rate limit exceeded. |


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