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

# List pages

> Every live Page in the workspace, newest update first, with cursor paging.

List the workspace's Pages, including ones owned by other bots. Deleted Pages are left out.

## Authorization

<ParamField header="Authorization" type="string" required>
  `Bearer mac_live_…`
</ParamField>

## Query parameters

<ParamField query="limit" type="number" default="50">
  Between 1 and 100. Numbers outside that range are pulled back in.
</ParamField>

<ParamField query="cursor" type="string">
  The `next_cursor` from the previous response.
</ParamField>

<ParamField query="chatbot_id" type="string">
  Only Pages owned by this bot.
</ParamField>

<ParamField query="conversation_id" type="string">
  Only Pages linked to this conversation.
</ParamField>

<ParamField query="slug" type="string">
  Only the Page whose current slug is exactly this. To resolve a slug from before a rename, use [Get a page by slug](/api-reference/pages/get-page-by-slug).
</ParamField>

## Response

<ResponseField name="ok" type="boolean">
  `true` on success.
</ResponseField>

<ResponseField name="pages" type="array">
  Pages, most recently updated first. Same fields as [Get a page](/api-reference/pages/get-page), without `content`.
</ResponseField>

<ResponseField name="next_cursor" type="string | null">
  Pass it back as `cursor` for the next batch. `null` when there is nothing more.
</ResponseField>

<RequestExample>
  ```bash curl theme={null}
  curl "https://app.my-aichatbot.com/api/v1/pages?limit=20" \
    -H "Authorization: Bearer $MAC_KEY"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch('https://app.my-aichatbot.com/api/v1/pages?limit=20', {
    headers: { Authorization: `Bearer ${process.env.MAC_KEY}` }
  })

  const { pages, next_cursor } = await res.json()
  ```

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

  res = requests.get(
      "https://app.my-aichatbot.com/api/v1/pages",
      headers={"Authorization": f"Bearer {os.environ['MAC_KEY']}"},
      params={"limit": 20},
  )

  pages = res.json()["pages"]
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "ok": true,
    "pages": [
      {
        "id": "9b3f11c2-…",
        "slug": "sales-report",
        "title": "Sales report",
        "description": null,
        "visibility": "private",
        "chatbot_id": "c1a2…",
        "conversation_id": null,
        "current_version": 4,
        "version_count": 4,
        "total_bytes": 8192,
        "disabled_reason": null,
        "created_at": "2026-09-21T03:00:00.000Z",
        "updated_at": "2026-09-21T07:00:00.000Z",
        "url": "https://app.my-aichatbot.com/pages/view/acme/sales-report"
      }
    ],
    "next_cursor": null
  }
  ```
</ResponseExample>

## Errors

| Status | Code              | Meaning                                                                 |
| ------ | ----------------- | ----------------------------------------------------------------------- |
| `401`  | `INVALID_API_KEY` | Missing, broken, or revoked.                                            |
| `429`  | `RATE_LIMITED`    | Over 300 reads per minute for this key. Wait for `retry_after_seconds`. |
