Backups API
Automated backup and restore for servers and data resources.
List backups
GET /api/v1/backupsconst { 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_123curl https://api.puchify.com/api/v1/backups?resource_id=svr_123 \
-H "Authorization: Bearer $PUCHIFY_API_KEY"Query parameters:
| Parameter | Type | Description |
|---|---|---|
resource_id | string | Filter by source resource ID |
resource_kind | server | data | Filter by resource type |
status | string | Filter by status (creating, available, deleting, failed) |
cursor | string | Pagination cursor |
limit | integer (1-100) | Results per page (default 50) |
sort | name | created_at | Sort field |
order | asc | desc | Sort direction |
Create a backup
POST /api/v1/backupsconst { 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_abc123curl -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:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Backup name (2-60 chars) |
resource_id | string | yes | Server or data resource ID to back up |
description | string | no | Optional 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_abc123curl 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_abc123curl -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}/restoreconst { 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_def456curl -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:
| Field | Type | Required | Description |
|---|---|---|---|
target_id | string | no | Resource ID to restore to (defaults to original source) |
name | string | no | New 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
| Code | Description |
|---|---|
404 | Backup or target resource not found |
409 | Conflict — a backup or restore is already in progress for this resource |
422 | Backup is in a failed state and cannot be restored |