developers: one key, every way in
The gpu CLI, official Python and TypeScript SDKs, REST API, MCP server, and OpenAI-compatible inference — one API key unlocks all of it. Pick a tool below and make your first call in minutes.
curl -fsSL https://gpu.ai/install | shgpu cli
One binary, no config file. Install it, log in once, and launching a GPU is a command in the shell you already have open.
Install
curl -fsSL https://gpu.ai/install | shFirst call
gpu gpu-types listsdks
Both are generated from the same OpenAPI spec the API serves, so the client can't drift from the endpoint it calls.
# pip install gpuai-sdk
import gpuai_sdk
cfg = gpuai_sdk.Configuration(host="https://api.gpu.ai/v1")
with gpuai_sdk.ApiClient(cfg) as client:
types_page = gpuai_sdk.GpuTypesApi(client).list_gpu_types(limit=5)
for t in types_page.data:
print(f"{t.gpu_type:<12} vram={t.vram_gb}GB")// npm install @gpuai/sdk
const { Configuration, GpuTypesApi } = require('@gpuai/sdk');
async function main() {
const cfg = new Configuration({ basePath: 'https://api.gpu.ai/v1' });
const types = await new GpuTypesApi(cfg).listGpuTypes({ limit: 5 });
for (const t of types.data) {
console.log(`${t.gpuType.padEnd(12)} vram=${t.vramGb}GB`);
}
}
main();rest api
Plain HTTPS and JSON, with cursor pagination and idempotency keys on every mutation. The catalog is public, so your first call needs no key at all.
curl https://api.gpu.ai/v1/gpu-typesinference
Chat, images, and video speak the OpenAI wire format, so the client library you already import keeps working — swap two lines and you're billed per token instead of per hour.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.gpu.ai/v1",
api_key=os.environ["GPUAI_API_KEY"], # never a literal key
)
stream = client.chat.completions.create(
model="gpuai/qwen2.5-7b-instruct",
messages=[{"role": "user", "content": "Explain WireGuard in one sentence"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")mcp
Drop this into .mcp.json and your agent can read the catalog, launch instances, and run inference — 35 tools in three tiers.
{
"mcpServers": {
"gpuai": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@gpuai/mcp@latest"],
"env": {
"GPUAI_API_KEY": "${GPUAI_API_KEY}"
}
}
}
}Reads are free and unconfirmed. Writes take a single confirmation. Anything that costs money quotes the price first and refuses to run until you confirm it. The server enforces that, not the agent's good manners — and it holds on every base URL, staging included.
webhooks
Subscribe an HTTPS endpoint to the event types you care about. Every delivery is HMAC-signed and carries a stable event id you can dedupe on.
Subscribe
curl -X POST https://api.gpu.ai/v1/webhook-endpoints \
-H "Authorization: Bearer $GPUAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/hooks/gpuai",
"event_types":["video.completed","video.failed"]}'What you receive
{
"id": "dc062a1e…",
"type": "video.completed",
"created_at": "2026-08-07T02:39:11Z",
"data": {
"video": {
"id": "41ca1150…",
"object": "video",
"model": "gpuai/wan-2.2-t2v",
"status": "completed"
}
}
}Instance lifecycle events (instance.*) are accepted and validated today, but instance event publishing isn't enabled end to end yet — an endpoint subscribed only to instance.* types won't receive deliveries yet.
curl -fsSL https://gpu.ai/install | sh