Skip to content
API & automation

REST API reference

Server lifecycle, power, snapshots, firewall rules and reverse DNS over REST — the same interface the control panel itself uses, with signed webhooks.

12 min readUpdated

The API is the same interface the control panel uses, which means anything you can do by clicking you can do by script. Base URL https://api.nimbusvps.com/v1.

Authentication

Generate a scoped token in the panel under Account → API tokens. Tokens can be read-only or read-write and can be limited to specific servers.

export NIMBUSVPS_TOKEN="hn_live_..."

curl https://api.nimbusvps.com/v1/servers \
  -H "Authorization: Bearer $NIMBUSVPS_TOKEN"

Rate limits

600 requests per minute per token. Responses carry X-RateLimit-Remaining and X-RateLimit-Reset. Exceeding it returns 429 with a Retry-After header.

Create a server

curl -X POST https://api.nimbusvps.com/v1/servers \
  -H "Authorization: Bearer $NIMBUSVPS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "location": "romania",
    "vcpu": 3,
    "ram_gb": 4,
    "disk_gb": 90,
    "os": "debian-12",
    "hostname": "node-01.example.com",
    "ssh_keys": ["ssh-ed25519 AAAA..."],
    "user_data": "#cloud-config\npackages:\n  - nginx",
    "backups": "weekly",
    "ddos": "advanced"
  }'
{
  "id": "srv_01HQ...",
  "status": "provisioning",
  "ipv4": "89.36.222.101",
  "ipv6": "2a0e:xxxx:xxxx:xxxx::2/64",
  "root_password": "shown once, never again",
  "created_at": "2026-07-20T10:14:22Z"
}

Endpoints

MethodPathPurpose
GET/serversList servers
POST/serversCreate a server
GET/servers/{id}Server detail
DELETE/servers/{id}Destroy a server
POST/servers/{id}/powerstart, stop, reboot, reset
POST/servers/{id}/rebuildReinstall the OS
POST/servers/{id}/resizeChange specification
POST/servers/{id}/migrateMove to another location
GET/servers/{id}/snapshotsList snapshots
POST/servers/{id}/snapshotsTake a snapshot
POST/snapshots/{id}/restoreRestore a snapshot
PUT/servers/{id}/rdnsSet reverse DNS
GET/servers/{id}/metricsCPU, memory, disk, network
GET/servers/{id}/consoleSigned KVM console URL
GET/locationsAvailable locations
GET/imagesAvailable OS templates
GET/invoicesInvoice history

Errors

{
  "error": {
    "code": "insufficient_capacity",
    "message": "No capacity for 32 vCPU in seychelles. Try netherlands or contact sales.",
    "field": "vcpu"
  }
}

Errors are machine-readable in code and human-readable in message. Where a fix exists, the message names it.

Webhooks

Register an endpoint to receive server lifecycle events — server.provisioned, server.suspended, invoice.due, attack.mitigated. Payloads are signed with HMAC-SHA256 in the X-NimbusVPS-Signature header. Verify it against the raw body before trusting anything in the payload.

Deploy in the next five minutes.

Pick a location, size the box, pay in crypto. No account signup wall, no ID, no waiting on a human.

7-day money-back guarantee · No KYC · Cancel any time from the panel