Limits
Plan entitlements and operational bounds, in one table-shaped place.
Plans
Plans are billed per organization (via Polar); project entitlements derive from the org's plan. POST /v1/projects does not accept a plan - it is not a choice you make per project.
| Vibe | Ship | Business | |
|---|---|---|---|
| Storage per project | 2 GiB | 10 GiB | 25 GiB |
| Connections per project | 15 | 30 | 60 |
| Projects per organization | 1 | 3 | Unlimited |
| Preview databases per project | 1 | 5 | Unlimited |
| Statement timeout | 30s | 60s | 120s |
| Idle-in-transaction timeout | 60s | 90s | 120s |
The connection budget covers direct and pooled access together; the pooled endpoint exists so app traffic does not eat it. Statement and idle-in-transaction timeouts are server-enforced on project roles.
Preview databases
| Default TTL | 24 hours |
| Maximum TTL | 168 hours (7 days) |
| TTL extension | Any value 1–168 hours, repeatable |
SQL runner (Studio, capydb sql, POST /v1/projects/{id}/sql)
| Statement timeout | 15 seconds |
| Result rows | Default 200, maximum 1000 |
| Query length | 20,000 characters |
Backups
| Scheduled backup cadence | Daily, at a UTC hour:minute you choose |
| Scheduled backup retention | 1–365 days |
| On-demand backups | Unlimited within plan storage reason; subject to the same retention you configure |
Imports
- Source must be publicly reachable (private/internal addresses rejected)
- Source database size must fit the plan's storage limit (preflight warns above 80%)
- No Postgres major downgrades (source major must be ≤ the database's selected target major: 16, 17, or 18)
- Source extensions must be on the allowlist
Webhooks
| Delivery attempts | 8, exponential backoff 30s → 30m cap |
| Receiver requirements | HTTPS, publicly reachable |
Usage alerts
Storage and connection usage are evaluated against the plan limits above; see Alerts.
| Warning threshold | ≥ 80% of the limit |
| Critical threshold | ≥ 95% of the limit |
| Critical → warning downgrade | below 90% |
| Resolution | below 75% |
| Re-notification while open | at most every 24 hours (escalations notify immediately) |
| Resolved-alert history | 30 days |
Extensions
14 allowlisted extensions across the supported Postgres 16, 17, and 18 majors, including pgvector and PostGIS - the full list and trusted/superuser split is in Extensions.
API
Per-IP rate limiting applies across the API, with a stricter limit on CLI-login endpoints. Exact thresholds are operational and may change; treat 429 as a signal to back off, and contact support if a legitimate workload keeps hitting it.
Need more?
If a limit here is the only thing between you and shipping, contact support - several of these are policy, not physics.