Price floor Every GPU at least 30% below the market median — re-checked against the marketplace weekly.

See the proof

Developers · REST API

A GPU cloud API you can try before signing up

Pricing and offer search are public endpoints — paste the curl below into any terminal right now. Everything the console does (deploy, stop, destroy, balance) is the same API with a Bearer key.

Basics

Base URLhttps://powergpu.io/v1
AuthAuthorization: Bearer pg_live_…
FormatJSON in, JSON out, UTF-8. Errors: {"error":{"code","message"}}
Rate limits120 req/min (auto-raises with account history) — 429 + Retry-After past it

Public endpoints — try them now

GET /v1/gpus/pricing

The complete price sheet as data: all 76 models, three modes each, market medians and the pricing rule itself.

no key needed
curl https://powergpu.io/v1/gpus/pricing
response (truncated)
{
  "object": "gpu_pricing",
  "currency": "USD",
  "billing": "per_second",
  "price_rule": "market_median * 0.70, rounded down; …",
  "market_snapshot": "2026-09-03",
  "data": [
    {
      "slug": "h100-sxm",
      "name": "NVIDIA H100 SXM",
      "vram_gb": 80,
      "price_per_gpu_hour": {
        "on_demand": 1.587,
        "interruptible": 0.793,
        "reserved": 1.031
      },
      "market_median": 2.2676,
      "available_gpus": 69
    }, …
  ]
}

GET /v1/offers

Live machine inventory. Filters: gpu (slug), region, num_min, price_max ($/hr for the whole machine), limit (≤100).

find 2× RTX 4090 machines
curl "https://powergpu.io/v1/offers?gpu=rtx-4090&num_min=2&limit=3"

Authenticated endpoints

Create a key under Console → API keys (docs), then:

GET /v1/balance

curl -H "Authorization: Bearer " https://powergpu.io/v1/balance

{ "object": "balance", "currency": "USD", "balance": 41.2183, "month_spend": 12.8402 }

POST /v1/instances

Deploy on a machine from /v1/offers. Body: machine_id (required), template, disk_gb, type (od | interruptible | res).

deploy
curl -X POST -H "Authorization: Bearer " \
  -H "Content-Type: application/json" \
  -d '{"machine_id":"m-1d29c04a","template":"vllm","disk_gb":80,"type":"od"}' \
  https://powergpu.io/v1/instances

{ "object": "instance", "id": "i-52ab77c1", "status": "running",
  "hostname": "i-52ab77c1.powergpu.io", "price_hr": 1.5983, … }

GET /v1/instances · GET /v1/instances/{id}

List active instances / fetch one (state, price, hostname, timestamps). Billing is settled at read time, so the numbers are per-second fresh.

POST /v1/instances/{id}/actions

-d '{"action":"stop"}'     # or start | destroy

DELETE /v1/instances/{id}

Alias for the destroy action. Instance disk is erased; attached volumes survive.

Errors

StatuscodeMeaning
401unauthorizedMissing or unknown Bearer key
404not_found / no_routeUnknown instance or endpoint
409deploy_failed / action_failedBusiness rule said no — the message says why (balance, capacity, state)
422missing_machine / bad_actionRequest shape is wrong
429rate_limitedSlow down; honour Retry-After

Prefer a wrapper? The CLI and Python SDK cover this API one-to-one.

Deploy your first GPU in under a minute

Top up in crypto, benchmark us against your current provider. Per-second billing, fixed prices ≥ 30% below market — cancel by just stopping the instance.