Back to Docs

Bare Metal GPU API

Deploy and manage bare metal GPU instances programmatically

The Bare Metal GPU API lets you programmatically browse GPU offers, deploy bare metal instances, manage SSH keys, create persistent storage volumes, and monitor your wallet balance. All endpoints are authenticated via API key.

Base URL
https://dash.packet.ai/api/v1/inventory

Authentication

All requests require a Packet.ai API key passed as a Bearer token in the Authorization header.

You can generate an API key from your Dashboard under Settings → API Keys.

curl https://dash.packet.ai/api/v1/inventory/offers \
  -H "Authorization: Bearer pk_live_your_api_key_here"

API keys use the prefix pk_live_. Keep your key secret — it provides full access to your account.

Rate Limits

API requests are rate-limited per key. Limits vary by operation type:

OperationLimit
Read (GET)60 requests/minute
Write (POST/PATCH/DELETE)20 requests/minute
Deploy (launch instances)5 requests/minute

Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in every response.

GPU Offers

Browse available GPU hardware with real-time pricing and availability.

Deployments

Create, monitor, and terminate GPU deployments. A $50 minimum wallet balance is required to deploy.

25-Minute Minimum Runtime

Deployments have a 25-minute minimum runtime. If you try to terminate before 25 minutes, the API will return an error with the remaining wait time. Early termination within the first hour receives a prorated refund.

SSH Keys

Manage SSH keys used for connecting to your deployments.

Storage Volumes

Create persistent storage volumes that survive deployment termination. Volumes can be attached and detached from active deployments.

Wallet

Check your wallet balance and active deployment costs.

Quick Start Example

Deploy a bare metal GPU instance in three steps:

1. Add your SSH key

curl -X POST https://dash.packet.ai/api/v1/inventory/ssh-keys \
  -H "Authorization: Bearer pk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-laptop",
    "publicKey": "ssh-ed25519 AAAA... user@machine"
  }'

2. Browse available GPUs

curl https://dash.packet.ai/api/v1/inventory/offers?search=b200 \
  -H "Authorization: Bearer pk_live_your_key"

3. Deploy

curl -X POST https://dash.packet.ai/api/v1/inventory/deployments \
  -H "Authorization: Bearer pk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "voltage-park",
    "offerId": "off_abc123",
    "gpuType": "NVIDIA B200",
    "gpuCount": 8,
    "region": "dallas-usa-5",
    "operatingSystem": "Ubuntu 22.04",
    "instanceType": "BARE_METAL",
    "ssh_public_key": "ssh-ed25519 AAAA... user@machine",
    "name": "my-training-run"
  }'

4. Connect via SSH

# Once status is "running", connect using the IP from the response:
ssh root@203.0.113.42

Error Responses

All error responses follow a consistent format:

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Insufficient balance. You need at least $50.00 to deploy."
  }
}
HTTP CodeMeaning
400Bad request — missing or invalid parameters
401Unauthorized — invalid or missing API key
402Payment required — insufficient wallet balance
404Not found — resource doesn't exist or doesn't belong to you
429Rate limited — too many requests
500Internal server error
503Service unavailable — GPU marketplace temporarily down