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 | 1 GB | 5 GB | 10 GB |
| 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 ≤ target; targets run Postgres 17)
- 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
13 allowlisted extensions on Postgres 17 clusters, 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.