Puchify

GPU Servers API

GPU-accelerated compute for ML, rendering, and HPC workloads.

List GPU servers

GET /api/v1/gpu-servers
const { data: servers } = await puchify.gpuServers.list({ status: "running" })
servers = puchify.gpu_servers.list(status="running")
servers, err := client.GPUServers.List(ctx, &puchify.GPUServerListParams{
  Status: puchify.String("running"),
})
puchify gpu list --status running
curl https://api.puchify.com/api/v1/gpu-servers \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Query parameters:

ParameterTypeDescription
cursorstringPagination cursor
limitinteger (1-100)Results per page (default 50)
statusstringFilter by status (creating, running, stopped, destroyed)
gpu_typestringFilter by GPU type (a100, h100, l40s, a10)
sortname | created_atSort field
orderasc | descSort direction

Create a GPU server

POST /api/v1/gpu-servers
const { data: server } = await puchify.gpuServers.create({
  name: "ml-train-01",
  plan: "gpu-h100-1",
  region: "us-east",
  gpu_type: "h100",
  image: "ubuntu-24.04-cuda",
})
server = puchify.gpu_servers.create(
  name="ml-train-01",
  plan="gpu-h100-1",
  region="us-east",
  gpu_type="h100",
  image="ubuntu-24.04-cuda",
)
server, err := client.GPUServers.Create(ctx, &puchify.CreateGPUServerInput{
  Name: "ml-train-01", Plan: "gpu-h100-1", Region: "us-east",
  GPUType: puchify.String("h100"), Image: puchify.String("ubuntu-24.04-cuda"),
})
puchify gpu create --name ml-train-01 --plan gpu-h100-1 --region us-east --gpu-type h100
curl -X POST https://api.puchify.com/api/v1/gpu-servers \
  -H "Authorization: Bearer $PUCHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"ml-train-01","plan":"gpu-h100-1","region":"us-east","gpu_type":"h100","image":"ubuntu-24.04-cuda"}'

Request body:

FieldTypeRequiredDescription
namestringyesGPU server name (2-40 chars, lowercase alphanumeric + dashes)
planstringyesGPU plan ID (determines GPU count and vCPU/RAM)
regionstringyesRegion ID
gpu_typestringnoGPU type (a100, h100, l40s, a10; inferred from plan if omitted)
imagestringnoOS image (default: ubuntu-24.04-cuda)
ssh_keysstring[]noSSH key IDs to inject

Get a GPU server

GET /api/v1/gpu-servers/{id}
const { data: server } = await puchify.gpuServers.get("gpu_abc123")
server = puchify.gpu_servers.get("gpu_abc123")
server, err := client.GPUServers.Get(ctx, "gpu_abc123")
puchify gpu get gpu_abc123
curl https://api.puchify.com/api/v1/gpu-servers/gpu_abc123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Update a GPU server

PATCH /api/v1/gpu-servers/{id}
const { data: server } = await puchify.gpuServers.update("gpu_abc123", {
  plan: "gpu-h100-4",
})
server = puchify.gpu_servers.update("gpu_abc123", plan="gpu-h100-4")
server, err := client.GPUServers.Update(ctx, "gpu_abc123", &puchify.UpdateGPUServerInput{
  Plan: puchify.String("gpu-h100-4"),
})
puchify gpu update gpu_abc123 --plan gpu-h100-4
curl -X PATCH https://api.puchify.com/api/v1/gpu-servers/gpu_abc123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan":"gpu-h100-4"}'

Request body:

FieldTypeRequiredDescription
planstringnoNew GPU plan ID (triggers resize)

Delete a GPU server

DELETE /api/v1/gpu-servers/{id}
await puchify.gpuServers.delete("gpu_abc123")
puchify.gpu_servers.delete("gpu_abc123")
err := client.GPUServers.Delete(ctx, "gpu_abc123")
puchify gpu delete gpu_abc123
curl -X DELETE https://api.puchify.com/api/v1/gpu-servers/gpu_abc123 \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Restart a GPU server

POST /api/v1/gpu-servers/{id}/restart
const { data: server } = await puchify.gpuServers.restart("gpu_abc123")
server = puchify.gpu_servers.restart("gpu_abc123")
server, err := client.GPUServers.Restart(ctx, "gpu_abc123")
puchify gpu restart gpu_abc123
curl -X POST https://api.puchify.com/api/v1/gpu-servers/gpu_abc123/restart \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Destroy a GPU server

POST /api/v1/gpu-servers/{id}/destroy
await puchify.gpuServers.destroy("gpu_abc123")
puchify.gpu_servers.destroy("gpu_abc123")
err := client.GPUServers.Destroy(ctx, "gpu_abc123")
puchify gpu destroy gpu_abc123
curl -X POST https://api.puchify.com/api/v1/gpu-servers/gpu_abc123/destroy \
  -H "Authorization: Bearer $PUCHIFY_API_KEY"

Permanently destroys the GPU server and releases all GPU resources. This action cannot be undone.

Polling for readiness

const server = await puchify.gpuServers.waitFor("gpu_abc123", "running", {
  timeout: 600_000,    // 10 minutes (GPU provisioning can be slow)
  pollInterval: 10_000,
})
server = puchify.gpu_servers.wait_for("gpu_abc123", "running", timeout=600)
server, err := puchify.WaitFor(ctx, client.GPUServers.Get, "gpu_abc123", "running",
  puchify.WithTimeout(10*time.Minute),
)

Response shape

{
  "data": {
    "id": "gpu_abc123",
    "name": "ml-train-01",
    "status": "running",       // creating | running | stopped | destroyed
    "plan": "gpu-h100-1",
    "gpu_type": "h100",
    "gpu_count": 1,
    "region": "us-east",
    "image": "ubuntu-24.04-cuda",
    "ipv4": "203.0.113.42",
    "ipv6": null,
    "gpu_utilization": null,
    "memory_utilization": null,
    "created_at": "2026-05-28T10:30:00Z",
    "updated_at": "2026-05-28T10:32:00Z"
  },
  "meta": {
    "persistence": "synced",
    "provider": "connected"
  }
}

Error codes

CodeDescription
402Insufficient GPU quota — upgrade your plan or reduce GPU count
404GPU server not found
409Conflict — server is in a transient state
422Invalid GPU type/plan/region combination

On this page