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

# Overview

> Hosted HTML at its own URL — what a Page is, who can make one, and how versions and visibility work.

A Page is an HTML document we host for you at its own URL: a report, a dashboard, a calculator, a hand-off document — anything your bot or your backend can render as HTML. Every save is a new version, every version has a permanent URL, and members can flip between versions in the app.

## Ways to create one

<CardGroup cols={2}>
  <Card title="In a reply" icon="message-square" href="/block-kit/blocks/page">
    Put a `page` block in any message your bot sends to an internal conversation. We host the HTML and turn the block into a link card.
  </Card>

  <Card title="From your backend" icon="square-terminal" href="/api-reference/pages/create-page">
    Call the Pages API with your bot's key. No conversation needed, so cron jobs and nightly builds work.
  </Card>
</CardGroup>

Both paths make the same kind of Page, at the same URL, owned by the same bot. A job that keeps one URL fresh should use [`PUT /pages/by-slug/{slug}`](/api-reference/pages/upsert-page-by-slug): the first call creates the Page, every later call adds a version. See [Scheduled and automated Pages](/pages/scheduled-pages).

## URLs

Every workspace gets its own subdomain on the Pages domain, and every Page a slug under it:

```text theme={null}
https://{workspace}.my-aichatbot-space.com/{slug}          the current version
https://{workspace}.my-aichatbot-space.com/{slug}/v/{n}    version n, forever
```

Slugs are 1 to 63 lowercase letters, digits and dashes. Rename one and the old address redirects to the new one. A slug that belonged to a deleted Page is retired and never reused.

## Visibility

| Level               | Who can open it                    | The `url` we give you                                                                    |
| ------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------- |
| `private` (default) | Signed-in members of the workspace | A members-only link on the app domain, which sends signed-in members through to the Page |
| `public`            | Anyone with the link, no login     | The Page's own address on the Pages domain                                               |

Neither level is indexed by search engines, and a `public` Page is not listed anywhere. The link is the only way in.

## Versions

Each write adds a version. We keep the newest ones up to your plan's limit and prune the rest; the current version is never pruned. A write whose HTML is byte-for-byte identical to the current version is skipped and reported as `deduplicated: true`. Rolling back copies an older version to the top of the history, so nothing is ever rewritten in place.

| Plan       | Pages     | Versions kept per Page | Max HTML per version |
| ---------- | --------- | ---------------------- | -------------------- |
| Free       | 3         | 10                     | 512 KB               |
| Paid plans | 25 to 500 | 50 to 500              | 1 MB to 5 MB         |

Page HTML counts toward your workspace storage, and every view counts toward bandwidth.

## Who owns a Page

A Page created through the API belongs to the bot whose key made it, and a `page` block's Page belongs to the bot that sent it. Any key in the workspace can **read** every Page. A key can only **write** to Pages owned by its own bot, and only when **Pages write** is switched on for that key in the bot's API-key settings.

## Inside the HTML

Pages are served from a separate domain, kept apart from the app. Scripts run, forms work, and the HTML may fetch data from any endpoint that allows cross-origin requests, so a Page can be a live dashboard that pulls fresh numbers each time it opens rather than a snapshot. What it cannot do is reach your workspace's data or cookies. It has no session.

<CardGroup cols={2}>
  <Card title="Scheduled and automated Pages" icon="clock" href="/pages/scheduled-pages">
    Keep one URL fresh from a cron job.
  </Card>

  <Card title="Pages API reference" icon="square-terminal" href="/api-reference/pages/create-page">
    Every endpoint, field and error.
  </Card>
</CardGroup>
