Puchify

Data API

Managed data resources — Postgres, MySQL, Redis, and Valkey.

List data resources

GET /api/v1/data
const { 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 postgres
curl https://api.puchify.com/api/v1/data \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Query parameters:

ParameterTypeDescription
cursorstringPagination cursor
limitinteger (1-100)Results per page (default 50)
enginepostgres | mysql | redis | valkeyFilter by engine
statusstringFilter by status (creating, running, stopped, deleted)
sortname | created_atSort field
orderasc | descSort direction

Create a data resource

POST /api/v1/data
const { 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-east
curl -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:

FieldTypeRequiredDescription
namestringyesResource name (2-40 chars, lowercase alphanumeric + dashes)
enginepostgres | mysql | redis | valkeyyesDatabase engine
planstringyesPlan ID
regionstringyesRegion ID
versionstringnoEngine 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_abc123
curl 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-8
curl -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:

FieldTypeRequiredDescription
planstringnoNew plan ID (triggers resize)
versionstringnoEngine 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_abc123
curl -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}/connection
const { 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_abc123
curl 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}/replicas
const { 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-west
curl -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:

FieldTypeRequiredDescription
regionstringyesRegion 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

CodeDescription
404Data resource not found
409Conflict — resource is in a state that prevents the operation (e.g., deleting while provisioning)
422Invalid engine/plan combination or region unavailable

On this page