Puchify

Backups API

Automated backup and restore for servers and data resources.

List backups

GET /api/v1/backups
const { data: backups } = await puchify.backups.list({ resource_id: "svr_123" })
backups = puchify.backups.list(resource_id="svr_123")
backups, err := client.Backups.List(ctx, &puchify.BackupListParams{
  ResourceID: puchify.String("svr_123"),
})
puchify backups list --resource-id svr_123
curl https://api.puchify.com/api/v1/backups?resource_id=svr_123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Query parameters:

ParameterTypeDescription
resource_idstringFilter by source resource ID
resource_kindserver | dataFilter by resource type
statusstringFilter by status (creating, available, deleting, failed)
cursorstringPagination cursor
limitinteger (1-100)Results per page (default 50)
sortname | created_atSort field
orderasc | descSort direction

Create a backup

POST /api/v1/backups
const { data: backup } = await puchify.backups.create({
  name: "pre-deploy-snapshot",
  resource_id: "svr_abc123",
})
backup = puchify.backups.create(
  name="pre-deploy-snapshot",
  resource_id="svr_abc123",
)
backup, err := client.Backups.Create(ctx, &puchify.CreateBackupInput{
  Name: "pre-deploy-snapshot", ResourceID: "svr_abc123",
})
puchify backups create --name pre-deploy-snapshot --resource-id svr_abc123
curl -X POST https://api.puchify.com/api/v1/backups \
  -H "Authorization: Bearer $PUCHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"pre-deploy-snapshot","resource_id":"svr_abc123"}'

Request body:

FieldTypeRequiredDescription
namestringyesBackup name (2-60 chars)
resource_idstringyesServer or data resource ID to back up
descriptionstringnoOptional description for the backup

Get a backup

GET /api/v1/backups/{id}
const { data: backup } = await puchify.backups.get("bkp_abc123")
backup = puchify.backups.get("bkp_abc123")
backup, err := client.Backups.Get(ctx, "bkp_abc123")
puchify backups get bkp_abc123
curl https://api.puchify.com/api/v1/backups/bkp_abc123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Delete a backup

DELETE /api/v1/backups/{id}
await puchify.backups.delete("bkp_abc123")
puchify.backups.delete("bkp_abc123")
err := client.Backups.Delete(ctx, "bkp_abc123")
puchify backups delete bkp_abc123
curl -X DELETE https://api.puchify.com/api/v1/backups/bkp_abc123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Restore from backup

POST /api/v1/backups/{id}/restore
const { data: job } = await puchify.backups.restore("bkp_abc123", {
  target_id: "svr_def456",
})
job = puchify.backups.restore("bkp_abc123", target_id="svr_def456")
job, err := client.Backups.Restore(ctx, "bkp_abc123", &puchify.RestoreBackupInput{
  TargetID: puchify.String("svr_def456"),
})
puchify backups restore bkp_abc123 --target-id svr_def456
curl -X POST https://api.puchify.com/api/v1/backups/bkp_abc123/restore \
  -H "Authorization: Bearer $PUCHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target_id":"svr_def456"}'

Request body:

FieldTypeRequiredDescription
target_idstringnoResource ID to restore to (defaults to original source)
namestringnoNew name for the restored resource

Wait for completion

const backup = await puchify.backups.waitFor("bkp_abc123", "available", {
  timeout: 300_000,
  pollInterval: 5_000,
})
backup = puchify.backups.wait_for("bkp_abc123", "available", timeout=300)
backup, err := puchify.WaitFor(ctx, client.Backups.Get, "bkp_abc123", "available",
  puchify.WithTimeout(5*time.Minute),
)

Response shape

{
  "data": {
    "id": "bkp_abc123",
    "name": "pre-deploy-snapshot",
    "description": null,
    "status": "available",        // creating | available | deleting | failed
    "size_gb": 4.2,
    "resource_id": "svr_abc123",
    "resource_kind": "server",
    "region": "us-east",
    "created_at": "2026-05-28T10:30:00Z",
    "updated_at": "2026-05-28T10:35:00Z",
    "completed_at": "2026-05-28T10:35:00Z"
  },
  "meta": {
    "persistence": "synced"
  }
}

Error codes

CodeDescription
404Backup or target resource not found
409Conflict — a backup or restore is already in progress for this resource
422Backup is in a failed state and cannot be restored

On this page