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

# Limits and plans

> Per-organization caps, plan tiers, and what each limit error code means.

Every organization runs under hard caps. This page lists them, what happens when you hit one, and
why they exist.

## Why the caps exist

All identities send and receive on a shared Sente-operated domain, under one email-provider
account. Email deliverability is reputation-based and the reputation is shared: one tenant sending
spam gets the domain flagged, and a flagged domain means **verification emails stop landing for
every customer**. The caps are the blast-radius guard for that shared resource — they are not a
growth lever. The same logic applies to runs: abusive registration volume against third-party apps
degrades the platform for everyone. See the [Acceptable use policy](/trust/acceptable-use).

## Plan tiers

|                         | Free | Pro   | Team  |
| ----------------------- | ---- | ----- | ----- |
| Price / month           | \$0  | \$79  | \$299 |
| Runs / month            | 120  | 200   | 1,000 |
| Runs / day              | 30   | 200   | 1,000 |
| Identities              | 9    | 25    | 100   |
| Outbound emails / month | 150  | 1,000 | 5,000 |

A **run** is one registration or login attempt driven by the Sente browser. **Failed runs never
count against your quota** — you are not charged capacity for our failures.

Design-partner pilots are invoiced manually — if the tiers above don't fit, email
[support@sente.run](mailto:support@sente.run).

## Platform-wide daily brakes

In addition to plan caps, two platform-wide per-organization brakes apply regardless of plan
(current defaults):

| Brake                | Default | Applies to                                                                                       |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------ |
| Outbound sends / 24h | 100     | Every plan                                                                                       |
| Runs / 24h           | 50      | Every plan (your effective daily run cap is the *lower* of this and your plan's daily allowance) |

These exist so a runaway agent — yours or anyone's — can't burn a large volume in one burst. If a
legitimate workload needs more, email [support@sente.run](mailto:support@sente.run).

## Limit error codes

When you hit a cap, the API returns a structured error with a `code` and the `limit` that was hit:

| Status | Code                        | Meaning                                             | What to do                                                                                   |
| ------ | --------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `429`  | `IDENTITY_LIMIT_EXCEEDED`   | Your plan's identity cap is reached.                | Delete unused identities or upgrade.                                                         |
| `429`  | `SEND_LIMIT_EXCEEDED`       | Daily outbound send brake (per 24h rolling window). | Wait for the window to roll, or contact support.                                             |
| `402`  | `PLAN_EMAIL_LIMIT_EXCEEDED` | Monthly plan email cap is reached.                  | `402`, not `429`, because waiting won't fix it within the billing window — upgrade the plan. |
| `429`  | `RUN_LIMIT_EXCEEDED`        | Daily or monthly run cap (failed runs excluded).    | Wait for the daily window, or upgrade for the monthly cap.                                   |

Example response:

```json theme={null}
{
  "error": "monthly registrations & logins limit reached (120 per month on your plan)",
  "code": "RUN_LIMIT_EXCEEDED",
  "limit": 120
}
```

<Note>
  Waiting on the inbox is free and uncapped in these terms: `GET /messages/wait` (long-poll for an
  OTP or magic link) does not consume run or send quota.
</Note>

## Operational limits worth knowing

* **Blocked runs hold for \~10 minutes.** When a run blocks for a human (CAPTCHA, SMS 2FA, manual
  step), it waits about 10 minutes for someone to take over via the live view, then fails with
  `BLOCKED_TIMEOUT`. See [Runs and human takeover](/concepts/runs-and-human-takeover).
* **One live session per identity.** Requesting a session while another is live or a run is in
  flight returns `409` (`SESSION_STALE` / `SESSION_PENDING`) with the blocking `runId`. See
  [Sessions](/guides/sessions).

## Related

* [Acceptable use policy](/trust/acceptable-use) — what the caps are protecting.
* [Security model](/trust/security) — where credentials live and who can read them.
* [API overview](/api-reference/overview) — error shape and auth.
