GPU Pod API v2

Volt API Reference

Manage GPU pods, fine-tuning jobs, SSH keys, templates, and more via REST API. Supports Lium standard and Targon confidential compute.

28 endpoints
API key auth
REST / JSON

Quick Start

Everything you need to make your first API call in under a minute.

Base URL & Authentication

All Volt API endpoints live under a single base URL. Every request must include your API key in the X-API-Key header.

Base URL

https://api.voltagegpu.com/api/volt

Authentication Header

X-API-Key: volt_xxx

Example: List Your Pods

curl -X GET \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx"
Response Format

All responses are JSON. Successful requests return 2xx status codes. Errors include a message field describing what went wrong.

Authentication

Secure API key authentication with scoped permissions and rate limiting.

API Key Setup

Generate an API key from the VoltageGPU dashboard. Navigate to Dashboard → API Keys → Generate. Your key is shown once — store it securely.

Header Format

X-API-Key: <your-key>

Rate Limits

The API enforces a rate limit of 1,000 requests per hour per API key. Exceeding this limit returns 429 Too Many Requests. The response includes Retry-After header with seconds until the window resets.

Key Permissions

Each API key has access to the following resource scopes:

  • pods — Create, read, start, stop, delete GPU pods
  • templates — Manage Docker image templates
  • ssh-keys — Add and remove SSH public keys
  • docker-credentials — Store private registry credentials
  • machines — Browse available GPU inventory and pricing
Keep Your Key Secret

Never expose your API key in client-side code, public repositories, or logs. If compromised, revoke it immediately from the dashboard and generate a new one.

Pods API

Create, manage, and control GPU pods across Lium standard and Targon confidential compute providers.

List & Manage Pods

GET/api/volt/pods

List all user pods (Lium + Targon combined)

curl -X GET \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx"
// Response 200 { "pods": [ { "id": "pod_abc123", "name": "training-run-7", "status": "running", "provider": "lium", "gpu_type": "RTX 4090", "gpu_count": 1, "cost_per_hour": 0.39, "created_at": "2026-03-15T10:30:00Z", "ip": "203.0.113.42", "ssh_port": 22 } ], "total": 1 }

POST/api/volt/pods

Create a new Lium standard GPU pod

curl -X POST \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "machine_id": "mach_rtx4090_01", "name": "my-training-pod", "template_id": "tpl_pytorch21", "ssh_key_ids": ["key_abc123"], "gpu_count": 1, "volume_size_gb": 50 }'
// Response 201 { "id": "pod_def456", "name": "my-training-pod", "status": "deploying", "provider": "lium", "gpu_type": "RTX 4090", "gpu_count": 1, "cost_per_hour": 0.39, "ip": null, "ssh_port": null, "template": "pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel", "volume_size_gb": 50, "created_at": "2026-03-28T14:00:00Z" }

POST/api/volt/pods

Create a Targon confidential compute pod (Intel TDX hardware attestation)

curl -X POST \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "provider": "targon", "name": "my-training-server", "resource_name": "h200-small", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel", "cost_per_hour": 2.40 }'
// Response 201 { "id": "pod_targon_789", "name": "my-training-server", "status": "deploying", "provider": "targon", "resource_name": "h200-small", "gpu_type": "H200", "cost_per_hour": 2.40, "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel", "confidential": true, "attestation": "intel_tdx", "created_at": "2026-03-28T14:05:00Z" }
Targon Confidential Compute

Targon pods run on Intel TDX hardware with encrypted memory. Data is protected even from the host operator. Available resource names: h200-small, h200-large, b200-small, b200-large.


GET/api/volt/pods/:id

Get full details for a specific pod including IP, ports, and resource usage

curl -X GET \ https://api.voltagegpu.com/api/volt/pods/pod_def456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "pod_def456", "name": "my-training-pod", "status": "running", "provider": "lium", "gpu_type": "RTX 4090", "gpu_count": 1, "cpu_cores": 8, "ram_gb": 32, "cost_per_hour": 0.39, "ip": "203.0.113.42", "ssh_port": 22, "template": "pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel", "volume_size_gb": 50, "ssh_keys": ["key_abc123"], "uptime_hours": 12.5, "total_cost": 4.88, "created_at": "2026-03-28T14:00:00Z" }

POST/api/volt/pods/:id/start

Start a stopped pod. Billing resumes when the pod reaches "running" state.

curl -X POST \ https://api.voltagegpu.com/api/volt/pods/pod_def456/start \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "pod_def456", "status": "starting", "message": "Pod is starting. This typically takes 15-30 seconds." }

POST/api/volt/pods/:id/stop

Stop a running pod. GPU billing pauses; storage is retained.

curl -X POST \ https://api.voltagegpu.com/api/volt/pods/pod_def456/stop \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "pod_def456", "status": "stopping", "message": "Pod is stopping. Data on /root volume is preserved." }

PUT/api/volt/pods/:id

Update a pod's name, SSH keys, or volume configuration. Pod must be stopped to change hardware settings.

curl -X PUT \ https://api.voltagegpu.com/api/volt/pods/pod_def456 \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "training-run-v2", "ssh_key_ids": ["key_abc123", "key_def456"] }'
// Response 200 { "id": "pod_def456", "name": "training-run-v2", "status": "running", "ssh_keys": ["key_abc123", "key_def456"], "message": "Pod updated successfully." }

DELETE/api/volt/pods/:id

Permanently delete a pod and release all resources. This action cannot be undone.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/pods/pod_def456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "pod_def456", "status": "deleted", "message": "Pod and all associated resources have been deleted." }
Deletion is Permanent

Deleting a pod destroys the local volume (/root). External volumes mounted at /mnt are preserved. Back up important data before deleting.

Machines

Query available GPU inventory with real-time pricing and hardware specifications.

Available Machines

GET/api/volt/machines

List all available GPU machines with live pricing, specs, and availability

curl -X GET \ https://api.voltagegpu.com/api/volt/machines \ -H "X-API-Key: volt_xxx"
// Response 200 { "machines": [ { "id": "mach_rtx4090_01", "gpu_type": "RTX 4090", "gpu_count": 4, "gpu_vram_gb": 24, "cpu_cores": 32, "ram_gb": 128, "storage_gb": 2000, "cost_per_gpu_hour": 0.39, "available_gpus": 3, "location": "US-East", "provider": "lium" }, { "id": "mach_h100_02", "gpu_type": "H100 80GB", "gpu_count": 8, "gpu_vram_gb": 80, "cpu_cores": 128, "ram_gb": 512, "storage_gb": 8000, "cost_per_gpu_hour": 2.69, "available_gpus": 4, "location": "EU-West", "provider": "lium" }, { "id": "mach_h200_targon_01", "gpu_type": "H200", "gpu_count": 8, "gpu_vram_gb": 141, "cpu_cores": 128, "ram_gb": 1024, "storage_gb": 8000, "cost_per_gpu_hour": 2.40, "available_gpus": 8, "location": "US-Central", "provider": "targon", "confidential": true } ], "total": 3 }
Live Pricing

Prices update in real time based on supply and demand. Use this endpoint to find the best deal before deploying a pod. Filter by GPU type in your application logic.

SSH Keys

Manage SSH public keys used for secure shell access to your GPU pods.

SSH Key Management

GET/api/volt/ssh-keys

List all SSH public keys associated with your account

curl -X GET \ https://api.voltagegpu.com/api/volt/ssh-keys \ -H "X-API-Key: volt_xxx"
// Response 200 { "ssh_keys": [ { "id": "key_abc123", "name": "work-laptop", "public_key": "ssh-ed25519 AAAAC3Nz...truncated", "fingerprint": "SHA256:xR3j8K...", "created_at": "2026-01-10T08:00:00Z" } ], "total": 1 }

POST/api/volt/ssh-keys

Add a new SSH public key to your account

curl -X POST \ https://api.voltagegpu.com/api/volt/ssh-keys \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "ci-server", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG..." }'
// Response 201 { "id": "key_def456", "name": "ci-server", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG...", "fingerprint": "SHA256:mK8p2Q...", "created_at": "2026-03-28T15:00:00Z" }

DELETE/api/volt/ssh-keys/:id

Remove an SSH key from your account. Running pods keep existing authorized keys until redeployed.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/ssh-keys/key_def456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "key_def456", "deleted": true, "message": "SSH key removed from account." }

Templates

Pre-configured Docker image templates for rapid pod deployment.

Template Management

GET/api/volt/templates

List all templates (system defaults + your custom templates)

curl -X GET \ https://api.voltagegpu.com/api/volt/templates \ -H "X-API-Key: volt_xxx"
// Response 200 { "templates": [ { "id": "tpl_pytorch21", "name": "PyTorch 2.1 CUDA 12.1", "image": "pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel", "category": "machine-learning", "is_system": true, "description": "Official PyTorch image with CUDA 12.1 and cuDNN 8", "created_at": "2025-12-01T00:00:00Z" }, { "id": "tpl_custom_01", "name": "My Fine-Tune Image", "image": "registry.example.com/ml-team/finetune:latest", "category": "custom", "is_system": false, "description": "Custom image for LoRA fine-tuning workflows", "created_at": "2026-03-20T09:00:00Z" } ], "total": 2 }

POST/api/volt/templates

Create a custom template from any Docker image

curl -X POST \ https://api.voltagegpu.com/api/volt/templates \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "Stable Diffusion XL", "image": "ghcr.io/my-org/sdxl-server:v2.0", "category": "image-generation", "description": "SDXL with ComfyUI and all LoRA adapters", "docker_credential_id": "cred_abc123", "ports": [8188, 22], "env_vars": { "MODEL_DIR": "/workspace/models", "COMFY_ARGS": "--listen 0.0.0.0" } }'
// Response 201 { "id": "tpl_sdxl_02", "name": "Stable Diffusion XL", "image": "ghcr.io/my-org/sdxl-server:v2.0", "category": "image-generation", "is_system": false, "ports": [8188, 22], "created_at": "2026-03-28T15:30:00Z" }

GET/api/volt/templates/:id

Get full details for a specific template including env vars and port mappings

curl -X GET \ https://api.voltagegpu.com/api/volt/templates/tpl_sdxl_02 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "tpl_sdxl_02", "name": "Stable Diffusion XL", "image": "ghcr.io/my-org/sdxl-server:v2.0", "category": "image-generation", "is_system": false, "description": "SDXL with ComfyUI and all LoRA adapters", "docker_credential_id": "cred_abc123", "ports": [8188, 22], "env_vars": { "MODEL_DIR": "/workspace/models", "COMFY_ARGS": "--listen 0.0.0.0" }, "created_at": "2026-03-28T15:30:00Z" }

PUT/api/volt/templates/:id

Update a custom template's name, image, ports, or environment variables

curl -X PUT \ https://api.voltagegpu.com/api/volt/templates/tpl_sdxl_02 \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "Stable Diffusion XL v2.1", "image": "ghcr.io/my-org/sdxl-server:v2.1", "env_vars": { "MODEL_DIR": "/workspace/models", "COMFY_ARGS": "--listen 0.0.0.0 --preview-method auto" } }'
// Response 200 { "id": "tpl_sdxl_02", "name": "Stable Diffusion XL v2.1", "image": "ghcr.io/my-org/sdxl-server:v2.1", "category": "image-generation", "is_system": false, "message": "Template updated. Existing pods are not affected." }

DELETE/api/volt/templates/:id

Delete a custom template. System templates cannot be deleted.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/templates/tpl_sdxl_02 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "tpl_sdxl_02", "deleted": true, "message": "Template deleted. Existing pods using this template are not affected." }

Fine-Tuning New

Train any HuggingFace model with your data on decentralized GPUs. Managed infrastructure powered by Bittensor Subnet 56 (Gradients). Pay per hour, results in hours.

Fine-Tuning Jobs

Task Types

text — Supervised fine-tuning on instruction/output pairs. chat — Multi-turn conversation training with chat templates. dpo — Direct Preference Optimization for human-aligned outputs. image — LoRA adaptation for Flux and SDXL diffusion models.

Pricing (per hour of training)

≤1B params: $18.50/hr · ~7B: $27.75/hr · 8-40B: $46.25/hr · 40B+: $92.50/hr · Image LoRA: $9.25/hr. Your account is debited upfront. Full refund if cancelled before training starts.


GET/api/volt/fine-tuning

List all fine-tuning jobs for your account. Optionally filter by status.

curl https://api.voltagegpu.com/api/volt/fine-tuning?status=training \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true, "jobs": [ { "id": "clxyz123...", "gradientsTaskId": "abc-def-ghi", "name": "my-llama-finetune", "baseModel": "meta-llama/Llama-3.1-8B-Instruct", "taskType": "text", "status": "training", "hoursRequested": 2, "costPerHour": 27.75, "totalCost": 55.50, "datasetRepo": "myorg/support-qa", "outputModelRepo": null, "createdAt": "2026-03-28T10:00:00Z", "startedAt": "2026-03-28T10:02:30Z", "completedAt": null } ] }

POST/api/volt/fine-tuning

Create a new fine-tuning job. Your balance is debited immediately.

Text SFT example — instruction/output pairs:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-llama-finetune", "taskType": "text", "model": "meta-llama/Llama-3.1-8B-Instruct", "dsRepo": "myorg/support-qa", "hours": 2, "fieldInstruction": "instruction", "fieldOutput": "output" }'

Chat SFT example — multi-turn conversation:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-chat-finetune", "taskType": "chat", "model": "meta-llama/Llama-3.1-8B-Instruct", "dsRepo": "myorg/chat-dataset", "hours": 3, "chatTemplate": "llama3", "fieldConversation": "conversations" }'

DPO Alignment example:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-dpo-alignment", "taskType": "dpo", "model": "meta-llama/Llama-3.1-8B-Instruct", "dsRepo": "myorg/preference-pairs", "hours": 4, "chatTemplate": "llama3", "fieldPrompt": "prompt", "fieldChosen": "chosen", "fieldRejected": "rejected" }'

GRPO example:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-grpo-alignment", "taskType": "grpo", "model": "meta-llama/Llama-3.1-8B-Instruct", "dsRepo": "myorg/prompts", "hours": 3, "chatTemplate": "llama3" }'

Custom Dataset example:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "custom-data-train", "taskType": "custom_chat", "model": "Qwen/Qwen2.5-7B-Instruct", "datasetUrl": "https://my-server.com/data.jsonl", "hours": 2 }'

Image LoRA example:

curl -X POST https://api.voltagegpu.com/api/volt/fine-tuning \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-flux-lora", "taskType": "image", "model": "black-forest-labs/FLUX.1-dev", "dsRepo": "myorg/product-photos", "hours": 1, "imageModelType": "flux" }'
// Response 201 { "success": true, "job": { "id": "clxyz456...", "gradientsTaskId": "abc-def-ghi", "name": "my-llama-finetune", "baseModel": "meta-llama/Llama-3.1-8B-Instruct", "taskType": "text", "status": "pending", "hoursRequested": 2, "costPerHour": 27.75, "totalCost": 55.50, "createdAt": "2026-03-28T16:00:00Z" } }
Chat Templates

Supported values for chatTemplate: alpaca, chatml, deepseek_v3, gemma3, llama3, llama4, mistral_v3_tekken, phi_4, qwen_25, qwen3.


GET/api/volt/fine-tuning/:id

Get current status of a fine-tuning job. Status is synced live from the training network.

curl https://api.voltagegpu.com/api/volt/fine-tuning/clxyz456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true, "job": { "id": "clxyz456...", "gradientsTaskId": "abc-def-ghi", "name": "my-llama-finetune", "baseModel": "meta-llama/Llama-3.1-8B-Instruct", "taskType": "text", "status": "training", "hoursRequested": 2, "costPerHour": 27.75, "totalCost": 55.50, "datasetRepo": "myorg/support-qa", "outputModelRepo": null, "createdAt": "2026-03-28T16:00:00Z", "startedAt": "2026-03-28T16:03:12Z", "completedAt": null } }
Job Status Flow

pendingpreparing_datalooking_for_nodesreadytrainingevaluatingsuccess. On failure: failure, failure_finding_nodes, node_training_failure. Completed jobs have outputModelRepo set to the HuggingFace repo with your fine-tuned model.


DELETE/api/volt/fine-tuning/:id

Cancel a job. Full refund if training has not started yet (status is pending, preparing_data, idle, or looking_for_nodes).

curl -X DELETE https://api.voltagegpu.com/api/volt/fine-tuning/clxyz456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true, "message": "Job cancelled and $55.50 refunded to your account", "job": { "id": "clxyz456...", "status": "cancelled" } }
Refund Policy

Jobs cancelled before training starts receive a full refund. Once training begins, the full cost is committed (the GPU nodes are reserved for your job). Completed jobs push the fine-tuned model to a HuggingFace repository that you can deploy via the VoltageGPU inference API.


Webhooks

Pass a webhookUrl when creating a job to receive a POST notification when the job reaches a terminal state (success, failure, cancelled).

// Include in your POST /api/volt/fine-tuning body: { "name": "my-finetune", "taskType": "text", "model": "meta-llama/Llama-3.1-8B-Instruct", "dsRepo": "myorg/dataset", "hours": 2, "webhookUrl": "https://your-server.com/webhook/voltagegpu" }

When the job completes, we send a POST to your URL:

// Webhook POST payload { "event": "fine_tuning.job.completed", "jobId": "clxyz456...", "gradientsTaskId": "abc-def-ghi", "status": "success", "baseModel": "meta-llama/Llama-3.1-8B-Instruct", "outputModelRepo": "voltagegpu/my-finetune-abc123", "totalCost": 55.50, "completedAt": "2026-03-28T18:30:00Z" }
Webhook Details

Webhooks are fired once when the job reaches a terminal state (success, failure, cancelled). Your endpoint must respond with a 2xx status within 10 seconds. Webhooks are best-effort — use polling as a fallback for critical workflows. The User-Agent header is set to VoltageGPU-Webhook/1.0.

Docker Credentials

Store private Docker registry credentials so pods can pull custom images.

Registry Credentials

GET/api/volt/docker-credentials

List all stored Docker registry credentials (passwords are redacted)

curl -X GET \ https://api.voltagegpu.com/api/volt/docker-credentials \ -H "X-API-Key: volt_xxx"
// Response 200 { "credentials": [ { "id": "cred_abc123", "name": "GitHub Container Registry", "registry": "ghcr.io", "username": "my-org", "created_at": "2026-02-15T12:00:00Z" } ], "total": 1 }

POST/api/volt/docker-credentials

Add credentials for a private Docker registry

curl -X POST \ https://api.voltagegpu.com/api/volt/docker-credentials \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "AWS ECR Production", "registry": "123456789.dkr.ecr.us-east-1.amazonaws.com", "username": "AWS", "password": "eyJwYXlsb2FkIjoiNGZ..." }'
// Response 201 { "id": "cred_def456", "name": "AWS ECR Production", "registry": "123456789.dkr.ecr.us-east-1.amazonaws.com", "username": "AWS", "created_at": "2026-03-28T16:30:00Z" }

GET/api/volt/docker-credentials/:id

Get details for a specific credential (password is always redacted)

curl -X GET \ https://api.voltagegpu.com/api/volt/docker-credentials/cred_abc123 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "cred_abc123", "name": "GitHub Container Registry", "registry": "ghcr.io", "username": "my-org", "created_at": "2026-02-15T12:00:00Z" }

DELETE/api/volt/docker-credentials/:id

Delete a stored credential. Templates referencing it will fail to pull on next deploy.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/docker-credentials/cred_def456 \ -H "X-API-Key: volt_xxx"
// Response 200 { "id": "cred_def456", "deleted": true, "message": "Docker credential removed." }

API Keys

Programmatically manage your Volt API keys. List, create, and revoke keys without leaving the terminal.

API Key Management

GET/api/volt/api-keys

List all API keys for your account (key values are partially redacted)

curl -X GET \ https://api.voltagegpu.com/api/volt/api-keys \ -H "X-API-Key: volt_xxx"
// Response 200 { "api_keys": [ { "id": "ak_001", "name": "Production Key", "key_preview": "volt_...x7f2", "last_used": "2026-03-28T12:00:00Z", "created_at": "2026-01-05T08:00:00Z" } ], "total": 1 }

POST/api/volt/api-keys

Generate a new API key. The full key is returned only once in this response.

curl -X POST \ https://api.voltagegpu.com/api/volt/api-keys \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "name": "CI/CD Pipeline" }'
// Response 201 { "id": "ak_002", "name": "CI/CD Pipeline", "key": "volt_sk_live_a1b2c3d4e5f6g7h8i9j0...", "created_at": "2026-03-28T17:00:00Z", "message": "Store this key securely. It will not be shown again." }
Save Your Key Immediately

The full API key is only returned in the creation response. Store it in a secrets manager or environment variable. If lost, delete the key and create a new one.


DELETE/api/volt/api-keys

Revoke an API key by ID. Pass the key ID in the request body. Takes effect immediately.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/api-keys \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "key_id": "ak_002" }'
// Response 200 { "id": "ak_002", "deleted": true, "message": "API key revoked. Any requests using this key will now return 401." }

Error Codes

Standard HTTP status codes returned by the Volt API with their meanings.

HTTP Status Reference

CodeStatusDescription
200OKRequest succeeded. Response body contains the requested data.
201CreatedResource created successfully (pods, keys, templates, jobs).
400Bad RequestInvalid request body or missing required fields. Check the message field for details.
401UnauthorizedMissing or invalid API key. Ensure the X-API-Key header is set correctly.
402Payment RequiredInsufficient account balance to perform the action. Add funds via the billing page.
404Not FoundThe requested resource does not exist or does not belong to your account.
429Too Many RequestsRate limit exceeded (1,000 req/hour). Wait for the Retry-After period.
500Internal Server ErrorUnexpected server error. Retry with exponential backoff. Contact support if persistent.
502Bad GatewayUpstream provider (Lium/Targon) temporarily unavailable. Retry after a few seconds.

Error Response Format

// All errors follow this structure { "error": true, "status": 401, "message": "Invalid API key. Generate a new key at Dashboard > API Keys.", "code": "INVALID_API_KEY" }
Retry Strategy

For 429, 500, and 502 errors, implement exponential backoff starting at 1 second with a maximum of 5 retries. The Retry-After header is included on rate-limited responses.

Ready to Build with the Volt API?

Generate your API key and deploy your first pod in under 60 seconds.