Concepts
Plans & limits
Quotas, minimum check intervals, and feature gates per plan.
Authoritative source: apps/web/src/lib/plans.ts — table below mirrors that file.
| Limit / feature | Free | Pro | Business | Enterprise |
|---|---|---|---|---|
| Max monitors | 5 | 50 | 200 | unlimited |
| Min check interval | 3 min | 30 sec | 10 sec | 5 sec |
| Allowed monitor types | http, ping | http, ping, tcp, dns, keyword | + udp | + udp |
| Custom HTTP request headers | — | — | ✓ | ✓ |
| Status pages | 1 | 3 | unlimited | unlimited |
| Status page password protection | — | — | ✓ | ✓ |
| Maintenance windows | — | ✓ | ✓ | ✓ |
| Data retention | 7 days | 90 days | 365 days | 730 days |
| API access | — | read-only | full | full |
| Alert channels | + slack, discord, telegram | + webhook | + webhook |
Hitting a limit
When you try to create a resource that would exceed your plan, the API returns:
HTTP/1.1 403 Forbidden
{ "error": "The webhook alert channel requires a higher plan. Please upgrade." }Creation and updates must fit the current plan. A downgrade can pause incompatible monitors or disable unsupported channels. Review your monitor and channel settings after changing plans.
Rate limits
Rate limits apply independently of feature limits and may use endpoint, account, API-key, and IP buckets. See rate limits for handling 429 responses.
Notes
- Webhook alert channels are Business+ — channel creation enforces this. The
udpmonitor type is also Business+. keywordmonitor type is Pro+ — fetches an HTTP body and asserts a substring is present.- Maintenance windows are Pro+ —
POST /maintenance-windowsreturns403on Free. - API tier is enforced for API-key auth: Free returns
403on every call, Pro acceptsGET/HEADonly, Business and Enterprise have full access. The dashboard (session-based) bypasses this and works on every plan.
Custom domains and team membership management are not currently offered. Status pages use the hosted obzerv.xyz/status/<slug> URL.