Skip to content
API Reference

Servers API

List your servers from your own tools: plan, location, operating system, status, IP address and billing term, the same servers the Servers page of the dashboard shows. The API is read-only; deploy, power, extend and delete servers in the dashboard.

What Is Listed

  • Both endpoints need your API key in the X-API-Key header (or as Authorization: Bearer YOUR_API_KEY), see Authentication. Base URL: https://api.zentislabs.com/api/v1.
  • Only servers on your account are listed. Passwords, keys and console links are never part of the answer.
  • Deleted servers are left out of the list unless you ask for status=all.

List Your Servers

GET/api/v1/servers

Your servers, newest first.

Parameters

status
query · string · optional
active (default: every server that is not deleted) or all (deleted servers too).
bash
curl "https://api.zentislabs.com/api/v1/servers" \
-H "X-API-Key: YOUR_API_KEY"
json
{
"success": true,
"count": 1,
"servers": [
{
"id": "6c1e2f0a-8d4b-4e57-9a3c-2b7d5e9f1a04",
"name": "web-1",
"hostname": "web-1",
"plan": { "id": "business", "name": "Business VPS", "ai": false },
"specs": { "cpu": "4 vCPU", "cpuType": "A", "ram": "8GB", "storage": "150GB NVMe", "port": "10 Gbps" },
"location": { "key": "eu-frankfurt", "city": "Frankfurt", "country": "Germany", "continent": "Europe" },
"os": { "key": "ubuntu-24-04", "name": "Ubuntu 24.04" },
"status": "running",
"ipAddress": "203.0.113.50",
"ips": ["203.0.113.50"],
"createdAt": "2026-11-01T10:12:44.000Z",
"expiresAt": "2026-12-01T10:12:44.000Z",
"billing": { "period": "monthly", "autoRenew": false, "renewsBySubscription": true },
"deletionScheduledAt": null
}
]
}

Errors

400
status is not active or all.
401
Missing or invalid API key, or the account is suspended.
429
More than 3,000 requests in a minute from this API key. Wait for Retry-After seconds.

Get One Server

GET/api/v1/servers/:id

One server, deleted ones included, with the same fields as in the list.

Parameters

id
path · string · required
The server id from GET /servers.
bash
curl "https://api.zentislabs.com/api/v1/servers/6c1e2f0a-8d4b-4e57-9a3c-2b7d5e9f1a04" \
-H "X-API-Key: YOUR_API_KEY"
json
{
"success": true,
"server": {
"id": "6c1e2f0a-8d4b-4e57-9a3c-2b7d5e9f1a04",
"name": "web-1",
"hostname": "web-1",
"plan": { "id": "business", "name": "Business VPS", "ai": false },
"specs": { "cpu": "4 vCPU", "cpuType": "A", "ram": "8GB", "storage": "150GB NVMe", "port": "10 Gbps" },
"location": { "key": "eu-frankfurt", "city": "Frankfurt", "country": "Germany", "continent": "Europe" },
"os": { "key": "ubuntu-24-04", "name": "Ubuntu 24.04" },
"status": "running",
"ipAddress": "203.0.113.50",
"ips": ["203.0.113.50"],
"createdAt": "2026-11-01T10:12:44.000Z",
"expiresAt": "2026-12-01T10:12:44.000Z",
"billing": { "period": "monthly", "autoRenew": false, "renewsBySubscription": true },
"deletionScheduledAt": null
}
}

Errors

404
No server with this id on your account (a server of another account answers the same).
401
Missing or invalid API key, or the account is suspended.
429
More than 3,000 requests in a minute from this API key. Wait for Retry-After seconds.

Fields

id
Server id, for GET /servers/:id.
name / hostname
The hostname you gave the server.
plan
Plan id and name; ai is true for AI VPS plans. A server our team set up with a custom size shows Custom.
specs
vCPUs, CPU type (A shared, B physical), RAM, storage and port speed.
location
Location key (the one used when deploying), city, country and continent; null if unknown.
os
Operating system or app image. An image our team installed for you shows as custom or windows-custom.
status
provisioning, running, stopped, error or terminated (deleted).
ipAddress / ips
Public IPv4 address; null and an empty list until the server is set up.
expiresAt
End of the paid period (ISO 8601).
billing.period
daily, 3days, weekly or monthly; null when not known (for example a server set up by our team).
billing.autoRenew
The saved card is charged to extend the server before it expires.
billing.renewsBySubscription
A monthly server paid by a subscription; each paid renewal extends it.
deletionScheduledAt
When an expired, stopped server will be deleted if it is not renewed; null otherwise.

Example: Servers Expiring This Week

python
from datetime import datetime, timedelta, timezone
import requests
API = "https://api.zentislabs.com/api/v1"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
servers = requests.get(f"{API}/servers", headers=HEADERS, timeout=30).json()["servers"]
soon = datetime.now(timezone.utc) + timedelta(days=7)
for s in servers:
if s["expiresAt"] and datetime.fromisoformat(s["expiresAt"].replace("Z", "+00:00")) < soon:
city = s["location"]["city"] if s["location"] else "-"
print(s["hostname"], s["ipAddress"], city, "expires", s["expiresAt"])