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

# Plans and limits

> Cactal's Free, Pro ($25/mo), and Enterprise plans: included sites, extra-site pricing, the AI credits that power the built-in Cactal agent, feature availability, and product limits for CMS, assets, pagination, and rate limits. Full API and MCP access on every plan.

Every plan, including Free, has full API and MCP access. Creating, publishing, and serving websites on their Cactal platform domains is free. The sites included in your plan decide how many websites can have custom domains enabled.

Published sites in Free organizations display a compact **Made with Cactal** badge linking to Cactal. Paid organizations have no badge on either Cactal or custom domains. The badge is added when serving the page, not stored in website source or deployment assets; billing updates and cache invalidation change it without republishing. Draft previews do not display the badge.

## Plans

| Plan       | Monthly | Annual | Sites  | Adds                                                                                                     |
| ---------- | ------- | ------ | ------ | -------------------------------------------------------------------------------------------------------- |
| Free       | \$0     | —      | 0      | Unlimited websites on Cactal domains, 100 AI credits per month, full API and MCP access                  |
| Pro        | \$25    | \$240  | 1      | 1,000 AI credits per month, analytics                                                                    |
| Enterprise | Custom  | Custom | Custom | Custom limits, security review, and support terms; contact [support@cactal.ai](mailto:support@cactal.ai) |

Pro includes everything in Free, and annual billing is a uniform 20% discount. Additional sites cost **$20 per site per month**, or **$192 per site per year** on annual billing.

## What counts as a site

A site counts toward your plan when an organization owner enables custom domains for it in the dashboard (Site settings, Domains). Sites on Cactal domains are unlimited and free. A website with custom domains enabled counts once, whether it holds one custom domain or all 10. Enabling is the single billing moment: adding or removing domains afterwards never changes billing.

* Publishing and updating websites is free on every plan.
* Enabling custom domains for a website adds it to your plan. The owner confirms the exact price in the enable dialog before anything is billed; the charge applies immediately and is prorated from that day.
* Removing domains from an enabled website, even the last one, does not stop its charge. Only disabling custom domains does.
* Disabling custom domains (owner-only, Site settings, Domains) immediately disconnects every custom domain on the website and stops its charge, crediting the unused time on your next invoice.
* Moving a website to the trash disables custom domains automatically, which disconnects its domains, stops its charge, and releases those hostnames. Restoring the website brings it back with custom domains disabled, so nothing re-bills until an owner re-enables them.
* Check your current plan, billing interval, renewal or cancellation date, and site count with `GET /v1/billing/state`.

<Note>
  Every organization member can read `GET /v1/billing/state`, including through an organization-scoped API key. Direct website access does not grant this organization-wide read. All other billing endpoints require the organization `owner` role, which API keys cannot hold, and so does `POST /v1/websites/{websiteId}/domains/enablement`, the operation that enables or disables custom domains. API callers can attach a domain only to a website with custom domains enabled; otherwise the request returns `403` with `blocked_reason: custom_domains_disabled`, and an organization owner enables custom domains from the dashboard, confirming the charge there.
</Note>

## Feature availability

| Feature                      | Available on                       |
| ---------------------------- | ---------------------------------- |
| Full REST API and MCP access | Every plan, including Free         |
| Custom domains on a website  | Pro and above (see sites per plan) |
| Analytics                    | Pro and above                      |

Analytics endpoints under `GET /v1/websites/{websiteId}/analytics/*` require the Pro plan or above; on Free they return `403`.

## Usage allowances

Organization members can see credit usage and available credits in the sidebar, the website-name menu, and **Settings → Billing**. Balances belong to the selected organization; unlimited credits in another organization do not carry over. Members can read these balances without permission to buy credits or change billing. Displayed balances and out-of-credit warnings reflect finalized charges. Temporary reservations during agent runs or image generation do not count as spending; Cactal still accounts for them when admitting concurrent work.

AI credits power the built-in [Cactal agent](/docs/agents/cactal-agent) and [image generation](/docs/guides/generate-images). Every agent run reports the credits it charged alongside its token usage, and each image-generation result reports its exact completed charge. The agent offers three model tiers: **Fast** on every plan, with **Standard** and **Max** on paid plans only. Every plan includes a monthly allowance of AI credits: **100 per month on Free**, **1,000 per month on Pro's entry tier**. The allowance resets each month and unused credits do not roll over. Pro supports higher monthly tiers at **\$25 per 1,000 credits per month**; pick a tier on the dashboard's billing page or with `POST /v1/billing/ai-credit-tier` (preview with `POST /v1/billing/ai-credit-tier/preview`): increases apply immediately with a prorated charge and carry the unused balance over; decreases take effect at renewal.

Need more in a given month? Buy prepaid credits (minimum **400 credits**, at the same \$25 per 1,000 rate) with `POST /v1/billing/usage-top-up/checkout`. Top-up credits never expire and are spent after the monthly allowance runs out. Optionally enable auto-reload so the balance refills with a set number of credits whenever it drops below a threshold you choose. `GET /v1/billing/state` reports the AI credit meter, its `nextResetAt` timestamp, the prepaid balance, and any credits granted by Cactal support under `creditGrants`.

Cactal support can also grant credits to your organization, for example as a service credit or a trial extension. Granted credits appear on the billing page with what is left and any expiry date, and the dashboard's credit meter counts them alongside purchased credits as a separate figure from the monthly allowance. They are spent after the monthly allowance and before purchased credits, and grants with an expiry are spent soonest first. The organization owner is emailed when a grant is added.

## Product limits

### CMS

| Limit                                         | Value          |
| --------------------------------------------- | -------------- |
| Collections per website                       | 100            |
| Fields per collection                         | 100            |
| `plain_text` field value size                 | 1 MiB          |
| `markdown` field value size                   | 1 MiB          |
| Choices per `option` field                    | 1,000          |
| Items per `multi_reference` field value       | 1,000          |
| Images per `gallery` field value              | 25             |
| Reference hydration depth (`depth` parameter) | 3              |
| Item slug length                              | 256 characters |
| Collection slug and field key length          | 64 characters  |
| Display name length                           | 200 characters |

See [CMS](/docs/concepts/cms) for field types and their constraints.

### Assets

| Asset kind | Maximum size |
| ---------- | ------------ |
| `image`    | 10 MiB       |
| `file`     | 100 MiB      |

Uploads exceeding the kind's limit are rejected at `POST /v1/websiteAssets`. Accepted MIME types per kind, the upload flow, and CDN delivery from `cdn.cactal.app` are covered in [Assets](/docs/concepts/assets).

### API

| Limit               | Value                                                   |
| ------------------- | ------------------------------------------------------- |
| List page size      | Default 20 (50 for assets), maximum 100 per request     |
| Standard endpoints  | Burst 2,000 requests, refilling 100 per second, per key |
| Expensive endpoints | Burst 200 requests, refilling 20 per second, per key    |

List endpoints paginate with cursors — see [Pagination](/docs/api-reference/pagination). The full bucket table, `429` handling, and `Retry-After` semantics are in [Rate limits](/docs/api-reference/rate-limits). Rate limits are identical on every plan and shared between REST and MCP.

<Note>
  Plan gating never reduces API or MCP capability. Upgrading adds sites with custom domains, analytics, and AI credits, not access to publishing operations.
</Note>
