Confidential Pod API v2

Volt API Reference

Deploy and manage confidential Intel TDX GPU pods, SSH keys, templates, and Docker credentials through a single REST API. Every pod is hardware-sealed with encrypted memory and attestation.

Intel TDX only
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 and delete confidential Intel TDX pods
  • templates — Manage Docker image templates
  • ssh-keys — Add and remove SSH public keys
  • docker-credentials — Store private registry credentials
  • machines — Browse confidential GPU inventory and live 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.

Confidential Pods API

Deploy and manage Intel TDX confidential GPU pods with encrypted memory and hardware attestation.

List & Manage Confidential Pods

GET/api/volt/pods

List all your confidential pods

curl -X GET \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx"
// Response 200 — array of pods (confidential entries flagged) [ { "id": "wl_01h...", "name": "cm_01h...", "status": "RUNNING", "gpu_type": "Confidential GPU", "gpu_count": 1, "hourly_price": 3.60, "created_at": "2026-03-15T10:30:00Z", "updated_at": "2026-03-15T10:31:12Z", "ssh_host": "ssh.deployments.targon.com", "provider": "confidential", "confidential_compute": true } ]

POST/api/volt/pods

Create a confidential Intel TDX pod. Always pass provider: "confidential", then either (a) an explicit resource_name + image pair, or (b) a template_uid from GET /api/volt/templates. Your balance is debited one hour upfront at deploy.

// Option A — explicit image + resource curl -X POST \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "provider": "confidential", "name": "my-confidential-pod", "resource_name": "h200-small", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel", "ssh_key_uids": ["key_abc123"] }'
// Option B — from a curated template curl -X POST \ https://api.voltagegpu.com/api/volt/pods \ -H "X-API-Key: volt_xxx" \ -H "Content-Type: application/json" \ -d '{ "provider": "confidential", "name": "deepseek-infer", "template_uid": "tpl-5npuuq70m1uo" }'
// Response 201 { "success": true, "pod": { "id": "cl_01h...", "workloadUid": "wl_01h...", "name": "my-confidential-pod", "resource_name": "h200-small", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel", "hourlyPrice": 3.60, "status": "RUNNING", "provider": "confidential", "ssh_command": "ssh wl_01h...@ssh.deployments.targon.com" } }
Required fields & billing

provider and name are always required. You must supply EITHER template_uid OR both resource_name and image. Pricing is resolved server-side from the confidential inventory and the VoltageGPU markup is applied automatically — any cost_per_hour sent in the body is ignored. If ssh_key_uids is omitted, one of your existing SSH keys is auto-synced.

Intel TDX Confidential Compute

All pods run on Intel TDX hardware with encrypted memory and Protected PCIe. Data is protected from the host operator and the hypervisor. Available resource_name values come from GET /api/volt/machines (typical values include h200-small, h200-large, b200-small, b200-large — but always read the live inventory).


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 — confidential workload details { "uid": "wl_01h...", "name": "my-confidential-pod", "resource_name": "h200-small", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel", "type": "rental", "status": "RUNNING", "created_at": "2026-03-28T14:00:00Z" }
Connecting over SSH

Confidential pods are reached through the SSH gateway. Use the command returned at creation: ssh <workload_uid>@ssh.deployments.targon.com. No separate IP or port is exposed.


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

Release a confidential pod. For Intel TDX pods this destroys the enclave and is equivalent to DELETE /api/volt/pods/:id. Confidential pods cannot be paused and resumed.

curl -X POST \ https://api.voltagegpu.com/api/volt/pods/pod_def456/stop \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true }

DELETE/api/volt/pods/:id

Permanently destroy a confidential pod and its enclave. This action cannot be undone.

curl -X DELETE \ https://api.voltagegpu.com/api/volt/pods/wl_01h... \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true }
Deletion is Permanent

Destroying a confidential pod tears down the Intel TDX enclave. Everything inside the enclave memory and local filesystem is unrecoverable by design — that is the point of hardware-sealed compute. Push any outputs to external storage before deleting.

Machines

Query available confidential Intel TDX GPU inventory with live pricing and hardware specs.

Available Confidential Machines

GET/api/volt/machines

List all available confidential GPU machines with live pricing and availability

curl -X GET \ https://api.voltagegpu.com/api/volt/machines \ -H "X-API-Key: volt_xxx"
// Response 200 — confidential machines entries [ { "name": "H200 [Confidential]", "price": 3.60, "rental_rate": 3.60, "p_min": 2.40, "p_max": 3.60, "base_price": 2.40, "total_gpu_count": 8, "k": 1, "provider": "confidential", "resource_name": "h200-small", "gpu_type": "H200", "gpu_count": 1, "vcpu": 32, "memory": 256, "confidential_compute": true } ]
Live inventory & resource_name

The resource_name field is what you pass to POST /api/volt/pods. The price already includes VoltageGPU's markup — base_price is the upstream per-hour cost you feed back as cost_per_hour when creating a pod. Only entries flagged confidential_compute: true are eligible for confidential deploys.

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

Curated, read-only Confidential Compute templates maintained by the provider (Jupyter, Ubuntu, DeepSeek-R1, GLM-4.6, Kimi-K2, Qwen3-Coder, GPT-OSS-120B, MiniMax and more). Use a template_uid in POST /api/volt/pods to deploy a pod with a pre-configured image, resource, commands, args and exposed ports.

Template Catalog

GET/api/volt/templates

List all curated public templates (cached 2 minutes)

curl -X GET \ https://api.voltagegpu.com/api/volt/templates \ -H "X-API-Key: volt_xxx"
// Response 200 { "success": true, "items": [ { "uid": "tpl-5npuuq70m1uo", "name": "DeepSeek-R1", "description": "DeepSeek-R1 reasoning model (sglang, 8x H200)", "type": "SERVERLESS", "image": "lmsysorg/sglang:v0.5.5.post3", "resource_name": "h200-xlarge", "visibility": "PUBLIC" }, { "uid": "tpl-ibnkqwo0esy4", "name": "Jupyter Notebook", "description": "Base image for Jupyter Notebook stacks", "type": "RENTAL", "image": "jupyter/base-notebook", "resource_name": "cpu-small", "visibility": "PUBLIC" } ] }

GET/api/volt/templates/:uid

Fetch a single template with the full manifest (commands, args, ports, env)

curl -X GET \ https://api.voltagegpu.com/api/volt/templates/tpl-5npuuq70m1uo \ -H "X-API-Key: volt_xxx"
Curated, read-only

Templates are maintained by the upstream provider and cannot be created, updated or deleted via the API — POST, PUT and DELETE return 405 Method Not Allowed. To run a custom image, skip templates entirely and pass a raw image + resource_name to POST /api/volt/pods.

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 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.