# gpu.nz > gpu.nz rents GPU servers in rubles through a REST API. Search offers, rent, manage instances, check the balance, keep SSH and API keys. Send the key in the header Authorization: Bearer gpz_… ## Docs - [Full API reference](https://gpu.nz/docs/api): every endpoint, parameter, example and error - [Quickstart](https://gpu.nz/docs): five steps from a key to a running server - [OpenAPI 3.1](https://gpu.nz/api/v1/openapi.json): machine-readable schema - [gpunz CLI](https://gpu.nz/docs/cli): command-line tool, `gpunz login` device flow - [llms-full.txt](https://gpu.nz/llms-full.txt): the complete reference in one file ## Quickstart 1. Create a key: console → Keys → API keys, or run `gpunz login`. 2. GET /offers?gpu=rtx-4090-24gb&order=price — find an offer and its id. 3. POST /instances with an Idempotency-Key header and the body {offer_id, template, disk_gb}. 4. GET /instances/{id} — once the status is running, read ssh.command. 5. POST /instances/{id}/stop or DELETE /instances/{id}. ## Authentication - Private endpoints require the header Authorization: Bearer gpz_… (the key is 44 characters). - Scopes: user:read, user:write, instances:read, instances:write, billing:read. Top-ups and charges are not available through the API. - Limits: 120 requests per minute per key, 60 per minute per address without a key. Errors: {"error": {"code", "message", "details"}}. ## Account - GET /api/v1/me — Current user (key required · Scope: user:read) - GET /api/v1/balance — Balance and burn rate (key required · Scope: billing:read) - GET /api/v1/transactions — Account transactions (key required · Scope: billing:read) ## Catalog - GET /api/v1/gpus — GPU models (public, no key) - GET /api/v1/offers — Search offers (public, no key) - GET /api/v1/offers/{id} — One offer (public, no key) - GET /api/v1/templates — Templates (with a key: your own templates too) - POST /api/v1/templates — Create an own template (key required · Scope: instances:write) - DELETE /api/v1/templates/{slug} — Delete an own template (key required · Scope: instances:write) ## SSH keys - GET /api/v1/ssh-keys — SSH keys (key required · Scope: user:read) - POST /api/v1/ssh-keys — Add an SSH key (key required · Scope: user:write) - DELETE /api/v1/ssh-keys/{id} — Delete an SSH key (key required · Scope: user:write) ## Instances - GET /api/v1/instances — Instances (key required · Scope: instances:read) - POST /api/v1/instances — Create an instance (key required · Scope: instances:write) - GET /api/v1/instances/{id} — Instance (key required · Scope: instances:read) - PATCH /api/v1/instances/{id} — Rename an instance (key required · Scope: instances:write) - POST /api/v1/instances/{id}/start — Start (key required · Scope: instances:write) - POST /api/v1/instances/{id}/stop — Stop (key required · Scope: instances:write) - DELETE /api/v1/instances/{id} — Destroy (key required · Scope: instances:write) - GET /api/v1/instances/{id}/logs — Logs (key required · Scope: instances:read) ## API keys - GET /api/v1/api-keys — API keys (key required · Scope: user:read) - POST /api/v1/api-keys — Create a key (key required · Scope: user:write) - DELETE /api/v1/api-keys/{id} — Revoke a key (key required · Scope: user:write) ## Terminal login - POST /api/v1/auth/device — Terminal login: start (public, no key) - POST /api/v1/auth/device/token — Terminal login: get the key (public, no key)