REST API
Everything the dashboard does to servers, the API does too: create and destroy machines, trigger deploys and rollbacks, add SSH keys. Perfect for CI pipelines and fleet automation.
Authentication
Create a token under API Tokens in the dashboard (it's shown once — store it safely) and send it as a bearer token:
curl https://qlingen.com/api/v1/user \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Tokens act as you: they see only your servers and require your plan to be active —
management calls return 402 Payment Required while a subscription has lapsed.
Endpoints
| Method | Path | Does |
|---|---|---|
GET | /api/v1/user | The authenticated user. |
GET | /api/v1/servers | List your servers (paginated). |
POST | /api/v1/servers | Create and provision a server. |
GET | /api/v1/servers/{id} | One server, including both IPs and status. |
DELETE | /api/v1/servers/{id} | Destroy the server at the provider. |
POST | /api/v1/servers/{id}/deploy | Deploy the latest PBX release. |
POST | /api/v1/servers/{id}/rollback | Roll back to the previous release. |
POST | /api/v1/servers/{id}/ssh-keys | Authorize a public key on the machine. |
Creating a server
curl -X POST https://qlingen.com/api/v1/servers \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "main-pbx",
"server_provider_id": 1,
"region": "ewr",
"plan": "vc2-1c-1gb"
}'
The response is 201 Created with the server in provisioning status.
Poll GET /api/v1/servers/{id} until status is online —
the payload then carries ip_address and private_ip_address.
Statuses and errors
401— missing or revoked token.402— no active plan (resubscribe on the Billing page) or the plan's server limit is reached.404— the server doesn't exist or belongs to someone else; the API never confirms other tenants' resources.409— the action needs an online server (deploys, rollbacks, SSH keys).422— validation failed; the body lists the fields.