Plans & limits
Pricing is per approval request, not per seat — approvers are always free, on every plan. Limits reset on the first of each month (UTC).
What each plan includes
| Limit | Hobby, $0 | Starter, $5/mo | Pro, $29/mo | Enterprise |
|---|---|---|---|---|
| approvals / month | 100 | 300 | 1,000 + $0.05 each after | Custom |
| notifications | Email + SMS | Email, SMS, Slack, Teams | ||
| webhook endpoints | 1 | 3 | Unlimited | Unlimited |
| audit retention | 7 days | 30 days | 90 days | Indefinite |
| SSO / SAML | — | — | — | ✓ |
| custom domains | — | — | — | ✓ |
How the quota behaves
- A request counts against the month it was created in, regardless of when (or whether) it resolves.
- On Hobby and Starter, requests beyond the cap are rejected with
402 quota_exceeded. Your agent sees an explicit error, never a silently dropped approval. - On Pro, requests keep flowing past 1,000; overage is billed at $0.05 each.
- Rejected and expired requests count too — the human's time was still used.
TIP
Gate on your side for actions that recur rapidly: if an agent retries a rejected action in a loop, each retry is a new request. Rejection notes exist so agents can re-plan instead of re-asking.
Request constraints
| Constraint | Value |
|---|---|
| summary length | 500 characters |
| agentName length | 100 characters |
| ttlMinutes | 5 minutes – 7 days (default 24h) |
| webhook timeout | 10 seconds per attempt, 3 attempts |
Upgrading
Upgrade from Dashboard → Billing — checkout is Stripe, changes apply immediately, and downgrades take effect at the end of the billing period. For Enterprise (Slack/Teams approvals, SSO, custom domains, indefinite retention), email sales@confirm.dev.