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

# Latest theses

> GET /v1/theses/latest: the newest theses across all tokens, from everyone or only from your users.

The newest theses across all tokens, newest first. Use it for a social feed of what people are calling right now. With `users=instance` the feed contains only theses written by your own users.

<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="users" default="all" type="string">
  `all` for every CabalSpy ID user, `instance` for your users only (within your plan's user limit).
</ParamField>

<ParamField query="blockchain" type="string">
  Only theses on this chain. One of solana, bnb, base, eth, rh. Empty means every chain.
</ParamField>

<ParamField query="scope" default="global" type="string">
  `global` for theses written on all platforms, `instance` for only the theses written on your instance. Combines with users: `users=all&scope=instance` is everything posted on your platform, `users=instance&scope=global` is everything your users posted anywhere. See [Reach](/cabalspy-id/theses#reach).
</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="csid_id" type="string">
  The viewer, one of your users. Fills my\_reactions and is\_mine.
</ParamField>

<ParamField query="instance" type="string">
  Your Instance ID. Only needed when your account has several instances.
</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/latest?users=instance&limit=20" \
    -H "Authorization: Bearer YOUR_KEY"
  ```

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

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

  ```javascript JavaScript theme={null}
  const p = new URLSearchParams({ users: "instance", limit: "20" });
  const res = await fetch(`https://api-id.cabalspy.xyz/v1/theses/latest?${p}`, {
    headers: { Authorization: "Bearer YOUR_KEY" },
  });
  const { data } = await res.json();
  data.forEach(t => console.log(t.mint, t.author.username, t.stance));
  ```
</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 | invalid\_parameter | users, scope, blockchain or limit invalid. |
| 401 | missing\_api\_key | API key missing. |
| 403 | invalid\_api\_key | API key invalid or not enabled for CabalSpy ID. |
| 429 | rate\_limit\_exceeded | Rate limit exceeded. |


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