Data API
Managed data resources — Postgres, MySQL, Redis, and Valkey.
List data resources
GET /api/v1/dataconst { data: resources } = await puchify.data.list({ engine: "postgres" })resources = puchify.data.list(engine="postgres")resources, err := client.Data.List(ctx, &puchify.DataListParams{
Engine: puchify.String("postgres"),
})puchify data list --engine postgrescurl https://api.puchify.com/api/v1/data \
-H "Authorization: Bearer $PUCHIFY_API_KEY"Query parameters:
| Parameter | Type | Description |
|---|---|---|
cursor | string | Pagination cursor |
limit | integer (1-100) | Results per page (default 50) |
engine | postgres | mysql | redis | valkey | Filter by engine |
status | string | Filter by status (creating, running, stopped, deleted) |
sort | name | created_at | Sort field |
order | asc | desc | Sort direction |
Create a data resource
POST /api/v1/dataconst { data: resource } = await puchify.data.create({
name: "prod-db-01",
engine: "postgres",
plan: "db-medium-4",
region: "us-east",
version: "16",
})resource = puchify.data.create(
name="prod-db-01",
engine="postgres",
plan="db-medium-4",
region="us-east",
version="16",
)resource, err := client.Data.Create(ctx, &puchify.CreateDataInput{
Name: "prod-db-01", Engine: "postgres", Plan: "db-medium-4", Region: "us-east",
})puchify data create --name prod-db-01 --engine postgres --plan db-medium-4 --region us-eastcurl -X POST https://api.puchify.com/api/v1/data \
-H "Authorization: Bearer $PUCHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"prod-db-01","engine":"postgres","plan":"db-medium-4","region":"us-east","version":"16"}'Request body:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Resource name (2-40 chars, lowercase alphanumeric + dashes) |
engine | postgres | mysql | redis | valkey | yes | Database engine |
plan | string | yes | Plan ID |
region | string | yes | Region ID |
version | string | no | Engine version (defaults to latest stable) |
Get a data resource
GET /api/v1/data/{id}const { data: resource } = await puchify.data.get("d_abc123")resource = puchify.data.get("d_abc123")resource, err := client.Data.Get(ctx, "d_abc123")puchify data get d_abc123curl https://api.puchify.com/api/v1/data/d_abc123 \
-H "Authorization: Bearer $PUCHIFY_API_KEY"Update a data resource
PATCH /api/v1/data/{id}const { data: resource } = await puchify.data.update("d_abc123", {
plan: "db-large-8",
})resource = puchify.data.update("d_abc123", plan="db-large-8")resource, err := client.Data.Update(ctx, "d_abc123", &puchify.UpdateDataInput{
Plan: puchify.String("db-large-8"),
})puchify data update d_abc123 --plan db-large-8curl -X PATCH https://api.puchify.com/api/v1/data/d_abc123 \
-H "Authorization: Bearer $PUCHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"plan":"db-large-8"}'Request body:
| Field | Type | Required | Description |
|---|---|---|---|
plan | string | no | New plan ID (triggers resize) |
version | string | no | Engine version for upgrade |
Delete a data resource
DELETE /api/v1/data/{id}await puchify.data.delete("d_abc123")puchify.data.delete("d_abc123")err := client.Data.Delete(ctx, "d_abc123")puchify data delete d_abc123curl -X DELETE https://api.puchify.com/api/v1/data/d_abc123 \
-H "Authorization: Bearer $PUCHIFY_API_KEY"Get connection string
GET /api/v1/data/{id}/connectionconst { data: conn } = await puchify.data.getConnection("d_abc123")conn = puchify.data.get_connection("d_abc123")conn, err := client.Data.GetConnection(ctx, "d_abc123")puchify data connection d_abc123curl https://api.puchify.com/api/v1/data/d_abc123/connection \
-H "Authorization: Bearer $PUCHIFY_API_KEY"Create a read replica
POST /api/v1/data/{id}/replicasconst { data: replica } = await puchify.data.createReplica("d_abc123", {
region: "eu-west",
})replica = puchify.data.create_replica("d_abc123", region="eu-west")replica, err := client.Data.CreateReplica(ctx, "d_abc123", &puchify.CreateReplicaInput{
Region: "eu-west",
})puchify data replica create d_abc123 --region eu-westcurl -X POST https://api.puchify.com/api/v1/data/d_abc123/replicas \
-H "Authorization: Bearer $PUCHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"region":"eu-west"}'Request body:
| Field | Type | Required | Description |
|---|---|---|---|
region | string | yes | Region ID for the replica |
Polling for readiness
const db = await puchify.data.waitFor("d_abc123", "running", {
timeout: 600_000, // 10 minutes (provisioning can be slow)
pollInterval: 10_000, // every 10 seconds
})db = puchify.data.wait_for("d_abc123", "running", timeout=600)db, err := puchify.WaitFor(ctx, client.Data.Get, "d_abc123", "running",
puchify.WithTimeout(10*time.Minute),
)Response shape
{
"data": {
"id": "d_abc123",
"name": "prod-db-01",
"engine": "postgres",
"version": "16",
"status": "running", // creating | running | stopped | deleted
"plan": "db-medium-4",
"region": "us-east",
"hostname": "d_abc123.internal.puchify.com",
"port": 5432,
"connection": {
"uri": "postgresql://user:pass@d_abc123.internal.puchify.com:5432/proddb",
"database": "proddb",
"username": "puchify_user",
"password": "••••••••"
},
"replicas": [
{
"id": "d_rep_456",
"region": "eu-west",
"status": "running"
}
],
"created_at": "2026-05-28T10:30:00Z",
"updated_at": "2026-05-28T10:32:00Z"
},
"meta": {
"persistence": "synced",
"provider": "connected"
}
}Error codes
| Code | Description |
|---|---|
404 | Data resource not found |
409 | Conflict — resource is in a state that prevents the operation (e.g., deleting while provisioning) |
422 | Invalid engine/plan combination or region unavailable |