ZeroDB · Dedicated Postgres
A real Postgres, per project — from $15/mo
Provision a dedicated Postgres 15, 16, or 17 instance with pgvector, automated backups, PITR, and a direct connection string. Not a proxy — your own host, port, and credentials.
Direct connection
Real Postgres — connect with psql, SQLAlchemy, Prisma, or any ORM via a standard database_url.
Backups & PITR
Automated daily/weekly/monthly backups plus point-in-time restore that provisions a sibling instance.
Scale on demand
Upgrade tier (vCPU/RAM/storage) or Postgres major version via API. Stop to pause billing, restart when ready.
Tiers & pricing
Postgres versions 15, 16, and 17. Public pricing endpoint (no key required): GET /api/v1/postgres/pricing
| Tier | Price/mo | vCPU | RAM | Storage | Max connections |
|---|---|---|---|---|---|
| micro-1 | $15 | 1 | 1 GB | 10 GB | 25 |
| standard-2 | $29 | 1 | 2 GB | 25 GB | 50 |
| standard-4 | $59 | 2 | 4 GB | 50 GB | 100 |
| performance-8 | $119 | 4 | 8 GB | 100 GB | 200 |
| performance-16 | $249 | 8 | 16 GB | 250 GB | 500 |
Available on paid tiers only. Free (Hobbyist serverless) does not include Dedicated Postgres.
Provision → connect → operate
1. Provision (async)
POST /api/v1/projects/{project_id}/postgres
X-API-Key: <your-project-api-key>
{
"instance_size": "standard-2",
"postgres_version": 16,
"tags": ["app-db"]
}
# Returns status: "provisioning" — poll /postgres to check readiness.2. Check status
GET /api/v1/projects/{project_id}/postgres
X-API-Key: <your-project-api-key>
# status: "provisioning" | "active" | "stopped"3. Get the connection string
GET /api/v1/projects/{project_id}/postgres/connection
X-API-Key: <your-project-api-key>
# Returns database_url — connect with any Postgres client or ORM.Lifecycle operations
All under /api/v1/projects/{project_id} with POST unless noted.
| Endpoint | Purpose |
|---|---|
| /postgres/rotate | Rotate credentials (new password, same host) |
| /postgres/scale | Change tier (vCPU/RAM/storage) — no data loss |
| /postgres/upgrade | Upgrade Postgres major version |
| /postgres/restart · /stop · /start | Restart, stop to save cost, or resume |
| GET /postgres/usage · GET /postgres/logs | Usage stats and query logs |
| GET/POST /postgres/backups | List or create on-demand backups |
| /postgres/backups/restore | Restore from a specific backup |
| /postgres/backups/schedule | Automated DAILY / WEEKLY / MONTHLY backups |
| /postgres/pitr-restore | Point-in-time restore (provisions a sibling instance) |
| DELETE /postgres?confirm=true | ⚠ Destroy the instance — requires confirm=true |
Warning: DELETE /postgres?confirm=true destroys the instance and clears billing. This action cannot be undone.
Serverless ZeroDB tables vs. Dedicated Postgres
| Question | Serverless ZeroDB | Dedicated Postgres |
|---|---|---|
| Setup | Instant, nothing to provision | Provision an instance (async) |
| Access | ZeroDB REST API (/database/tables) | Direct Postgres connection string |
| Best for | App data, agent memory, vectors | Existing SQL apps, custom extensions, migrations |
| Scaling | Managed automatically | Choose a tier (vCPU/RAM/storage) |
| Isolation | Shared, project-partitioned | Your own instance, own host/port/creds |
| Available on | All tiers (including free) | Paid tiers only |
Rule of thumb: start on serverless tables, graduate a workload to Dedicated Postgres when you need direct SQL, extensions, or dedicated resources.
Get the Dedicated Postgres Workbook — Provision, Connect & Operate
A free PDF guide: pick a tier, provision via API, connect your ORM, configure backups, and scale — step by step.
Frequently asked questions
What is Dedicated Postgres on ZeroDB?
Dedicated Postgres provisions a real, isolated Postgres instance (your own host, port, and credentials) for your project. It supports Postgres versions 15, 16, and 17, includes pgvector for vector similarity search, and is accessible via a direct connection string — not a proxy.
What tiers are available and how much do they cost?
Five tiers: micro-1 ($15/mo, 1 vCPU, 1 GB RAM, 10 GB, 25 connections), standard-2 ($29/mo, 1 vCPU, 2 GB, 25 GB, 50 conns), standard-4 ($59/mo, 2 vCPU, 4 GB, 50 GB, 100 conns), performance-8 ($119/mo, 4 vCPU, 8 GB, 100 GB, 200 conns), performance-16 ($249/mo, 8 vCPU, 16 GB, 250 GB, 500 conns). Pricing is a public endpoint at GET /api/v1/postgres/pricing.
How do I provision a Dedicated Postgres instance?
POST to /api/v1/projects/{project_id}/postgres with instance_size (e.g. "standard-2"), postgres_version (15, 16, or 17), and optional tags. Provisioning is async — poll GET /api/v1/projects/{project_id}/postgres for status, then GET /api/v1/projects/{project_id}/postgres/connection for the database_url.
Does Dedicated Postgres support automated backups and point-in-time restore?
Yes. Schedule automated backups (DAILY, WEEKLY, or MONTHLY) via POST /api/v1/projects/{project_id}/postgres/backups/schedule. Create on-demand backups via the same /postgres/backups path. Restore from a backup at /postgres/backups/restore, or perform a point-in-time restore via /postgres/pitr-restore which provisions a sibling instance.
Can I scale or upgrade my Postgres instance?
Yes. POST to /api/v1/projects/{project_id}/postgres/scale to change tier (vCPU/RAM/storage) and /postgres/upgrade to move to a new Postgres major version. You can also stop the instance to pause billing (/postgres/stop) and restart it later (/postgres/start).
When should I use Dedicated Postgres instead of serverless ZeroDB tables?
Use serverless ZeroDB tables for app data, agent memory, vectors, and quick starts — they require no provisioning. Graduate to Dedicated Postgres when you need direct SQL, custom extensions, migrations, full Postgres compatibility, or dedicated resources with predictable performance.