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

# Plans and Limits

> Pylva Cloud tiers, event and end-user limits, retention, what happens at the cap, and how to upgrade.

Pylva Cloud plans meter three things: telemetry events per month, distinct end-users (unique `customer_id` values), and data retention. Self-hosted deployments are not subject to these limits (see below).

## Plans

| Plan       | Price    | Events / month | End-users | Telemetry retention | Billing-record retention |
| ---------- | -------- | -------------- | --------- | ------------------- | ------------------------ |
| Free       | \$0      | 100,000        | 10        | 30 days             | 90 days                  |
| Pro        | \$49/mo  | 1,000,000      | 50        | 90 days             | 365 days                 |
| Scale      | \$199/mo | 10,000,000     | 500       | 365 days            | Unlimited                |
| Enterprise | Custom   | Unlimited      | Unlimited | Custom              | Unlimited                |

Current pricing is always at [pylva.com/pricing](https://pylva.com/pricing).

## What happens at the cap

When a workspace crosses 80% of its monthly event cap, Pylva sends a warning notification. At the cap:

* `POST /api/v1/events` rejects new telemetry with **HTTP 403** and the error code `TIER_LIMIT_REACHED` (not a 402). The message names your tier, how many events you have used, and when ingestion resumes:

```json theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "code": "TIER_LIMIT_REACHED",
    "message": "free tier is configured for 100000 events per period. You have used 100000. Ingestion is paused until 2026-08-01T00:00:00.000Z. ..."
  }
}
```

* Responses include an `X-Pylva-Tier-Usage: <current>/<limit>` header so clients can see where they stand.
* **Your application keeps working.** The SDK fails open by design: provider calls proceed, only the telemetry is rejected. You lose cost visibility for the rest of the window, not production traffic.
* Ingest resumes automatically when the monthly window resets, or immediately after an upgrade.

## Upgrade

Upgrade from [pylva.com/pricing](https://pylva.com/pricing):

* Pro trial: [pylva.com/login?next=/subscribe/pro](https://pylva.com/login?next=/subscribe/pro)
* Scale trial: [pylva.com/login?next=/subscribe/scale](https://pylva.com/login?next=/subscribe/scale)

Payment happens in the browser through the checkout flow. If an AI agent is doing your integration, it should hand these links to a human rather than collect payment details.

## Retention

Telemetry events age out per the plan's telemetry retention window. Billing records (usage summaries used for invoicing your end-users) are kept for the longer billing-record window, so upgrading or downgrading changes how far back dashboards can look.

## Self-hosting

The open-source self-host build does not enforce plan limits by default - you operate your own capacity. Operators can opt into event caps with the `ENABLE_EVENT_LIMITS` environment flag, which produces the same `403 TIER_LIMIT_REACHED` behavior described above.

See [Open Source And Hosted](concepts/open-source-and-hosted) for the full hosting model.
