Crie, inspecione, power, redimensionexclua seus servidores VPS. Os servidores são identificados pelo seu uuid.
Devolve os servidores na sua conta, mais recente, 25 por página. Os servidores que estão sendo excluídos não estão incluídos.
Permissão requerida: servers:list
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page |
integer | Não | Número de página, a partir de 1 |
page_size |
integer | Não | Resultados por página (por defeito 25, máximo 100) |
curl -X GET "https://admin.vps.org/api/v1/servers/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
response = requests.get(url, headers=headers)
for server in response.json()["results"]:
print(server["uuid"], server["hostname"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});
const data = await response.json();
console.log(data.results);
$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_TOKEN']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
foreach ($data['results'] as $server) {
echo $server['hostname'] . ' ' . $server['status'] . "\n";
}
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
"hostname": "web-01",
"status": "on",
"error_description": null,
"location_name": "New Jersey",
"plan_name": "1 vCPU / 2 GB RAM / 10 GB",
"os_name": "Ubuntu",
"ipv4_addresses": ["203.0.113.10"],
"ipv6_addresses": ["2001:db8:2:dd::f9:6b"],
"created_at": "2026-07-30T03:54:14.914364Z",
"deployed": true
},
{
"uuid": "2d7e9b40-6c1a-4f3e-8b5d-9a0c1e2f3b4d",
"hostname": "db-01",
"status": "queue",
"error_description": null,
"location_name": "New Jersey",
"os_name": "Debian",
"ipv4_addresses": [],
"ipv6_addresses": [],
"created_at": "2026-09-14T19:33:49.426508Z",
"deployed": false
}
]
}
| Campo | Tipo | Descrição |
|---|---|---|
uuid |
string | Identificador do servidor utilizado em todos os outros endpoints do servidor |
hostname |
string | Nome de máquina que escolheu ao criar o servidor |
status |
string | Estado atual. Veja os valores do estado do servidor abaixo. |
error_description |
string | null | Detalhes da última falha quando o estado é erro, caso contrário nulo |
location_name |
string | Nome da localização em que o servidor é executado |
os_name |
string | Nome do sistema operacional, sem a versão |
plan_name |
string | Resumo de plano legível, por exemplo 1 vCPU / 2 GB RAM / 10 GB |
ipv4_addresses |
array | Direcções IPv4 como strings. Vazio até que o servidor seja implantado, e em planos sem IPv4. |
ipv6_addresses |
array | Direcções IPv6 como strings. Vazio até que o servidor seja implantado. |
created_at |
datetime | Hora de criação (ISO 8601, UTC) |
deployed |
boolean | Verdadeira uma vez que a provisão terminou |
| 200 | Lista de servidores recuperada com sucesso. |
| 403 | Token API faltante ou inválida, ou o token carece da permissão requerida |
Encadeia um novo servidor para a implantação e o devolve imediatamente com a fila de estado. O fornecimento continua no fundo: pesquisar o endpoint de estado até que o implantado seja verdadeiro. Quando o servidor está pronto, seus detalhes de login são enviados por email ao proprietário da conta.
Sua conta precisa de um método de pagamento salvo. Dependendo do seu histórico de conta, um depósito temporário pré-autorização de cerca de uma semana do preço do plano ( pelo menos 1 USD) pode ser colocado no seu cartão antes de o servidor ser criado.
Permissão requerida: servers:create
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
hostname |
string | Sim | Pelo menos 3 caracteres. Cartas, dígitos, ínfimos e períodos apenas. |
location_id |
integer | Sim | O id de uma localização ativa da API de Localizações |
plan_uuid |
string | Sim | O uuid de um plano ativo da API Plans |
operating_system_version_uuid |
string | Sim | O uuid de uma entrada ativa na lista de versões de um sistema operacional |
ssh_key_uuids |
array | Não | UUIDs de chaves SSH da API de chaves SSH para instalar no servidor |
ssh_key_ids |
array | Não | Identificadores enteiros das chaves SSH, como alternativa para ssh_key_uuids. Se ambos forem enviados, ssh_key_ids é usado. |
ssh_key_uuid, ssh_key_id |
string, integer | Não | Corta para uma única chave SSH |
auth_method |
string | Não | Senha, ssh_key ou ambos. O padrão para senha, ou para ambas quando as teclas SSH são fornecidas. |
curl -X POST "https://admin.vps.org/api/v1/servers/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hostname": "web-01",
"location_id": 1,
"plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
"operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
"ssh_key_uuids": ["YOUR_SSH_KEY_UUID"]
}'
import requests
url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {
"hostname": "web-01",
"location_id": 1,
"plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
"operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
"ssh_key_uuids": ["YOUR_SSH_KEY_UUID"],
}
response = requests.post(url, headers=headers, json=data)
server = response.json()
print(response.status_code, server["uuid"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
hostname: 'web-01',
location_id: 1,
plan_uuid: '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
operating_system_version_uuid: 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
ssh_key_uuids: ['YOUR_SSH_KEY_UUID']
})
});
const server = await response.json();
console.log(server.uuid, server.status);
$data = [
'hostname' => 'web-01',
'location_id' => 1,
'plan_uuid' => '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
'operating_system_version_uuid' => 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
'ssh_key_uuids' => ['YOUR_SSH_KEY_UUID']
];
$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer YOUR_API_TOKEN',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server = json_decode(curl_exec($ch), true);
curl_close($ch);
201 Criado com o objeto do servidor completo descrito em Obter Detalhes do Servidor. Os endereços e vmid são preenchidos uma vez que termina a implantação.
{
"uuid": "5f0c8e2a-6b1d-4c3e-9a7f-2d4b6c8e0a1f",
"hostname": "web-01",
"vmid": null,
"status": "queue",
"error_description": null,
"location": {
"id": 1,
"name": "New Jersey",
"country_name": "United States",
"is_active": true
},
"plan": {
"uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
"cpu": 1,
"ram": 2,
"ram_unit": "GB",
"disk_space": 10,
"disk_space_total": 10240,
"transfer": 500,
"price": "3.50",
"cpu_type_name": "Shared",
"is_active": true,
"hourly_price": "0.005",
"monthly_price": "3.50",
"is_gpu": false,
"gpu_count": 0,
"gpu_model": ""
},
"operating_system": {
"id": 1,
"name": "Ubuntu",
"svg_icon": "<svg ...>",
"versions": [ ... ]
},
"operating_system_version": {
"uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
"name": "24.04 LTS x64",
"os_name": "Ubuntu",
"os_svg_icon": "<svg ...>",
"is_active": true
},
"ipv4_addresses": [],
"ipv6_addresses": [],
"deployed": false,
"created_at": "2026-09-14T21:02:11.402113Z",
"recent_actions": []
}
| 201 | Servidor criado e en espera para a implantação |
| 400 | Erro de validação, por exemplo, uma localização inactiva, uma versão do sistema operacional ou planejar |
| 402 | Não foi declinado o método de pagamento no arquivo, facturas não pagas ou pré-autorização do cartão |
| 403 | Token API faltante ou inválida, ou o token carece da permissão requerida |
| 429 | Sua conta atingiu o seu limite de criação do servidor |
Devolve um servidor com sua localização, plano, sistema operacional, endereços IP e as cinco ações mais recentes.
Permissão requerida: servers:list
curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
"hostname": "web-01",
"vmid": 1042,
"status": "on",
"error_description": null,
"location": {
"id": 1,
"name": "New Jersey",
"country_name": "United States",
"is_active": true
},
"plan": {
"uuid": "14186969-fbaf-43e1-9ab2-b1f1aeb66674",
"cpu": 1,
"ram": 2,
"ram_unit": "GB",
"disk_space": 25,
"disk_space_total": 25600,
"transfer": 1,
"price": "5.00",
"cpu_type_name": "Shared",
"is_active": true,
"hourly_price": "0.007",
"monthly_price": "5.00",
"is_gpu": false,
"gpu_count": 0,
"gpu_model": ""
},
"operating_system": {
"id": 1,
"name": "Ubuntu",
"svg_icon": "<svg ...>",
"versions": [ ... ]
},
"operating_system_version": {
"uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
"name": "24.04 LTS x64",
"os_name": "Ubuntu",
"os_svg_icon": "<svg ...>",
"is_active": true
},
"ipv4_addresses": [
{
"ip": "203.0.113.10",
"gateway": "203.0.113.1",
"subnet": "203.0.113.0",
"rdns": "web-01.example.com"
}
],
"ipv6_addresses": [
{
"ip": "2001:db8:2:dd::f9:6b",
"gateway": "2001:db8:2:dd::f9:1",
"subnet": "2001:db8:2:dd::f9:0",
"rdns": "web-01.example.com"
}
],
"deployed": true,
"created_at": "2026-07-30T03:54:14.914364Z",
"recent_actions": [
{
"id": 17028,
"action": "create",
"action_display": "Create",
"description": "Server deployed with VMID 1042",
"user_email": "you@example.com",
"created_at": "2026-07-30T03:54:32.860854Z"
}
]
}
Marcação de ícones SVG e a lista de versões são abreviadas aqui.
| Campo | Tipo | Descrição |
|---|---|---|
vmid |
integer | null | Número de máquina virtual, definido durante a implantação |
location |
object | Objeto de localização, conforme retornado pela API de Localizações |
plan |
object | Planeie objeto, conforme retornado pela API Plans |
operating_system, operating_system_version |
object | Sistema operacional e versão instalada, conforme devolvido pela API de Sistemas Operacionais |
ipv4_addresses, ipv6_addresses |
array | Um objeto por endereço com ip, gateway, subnet e rdns (o host host DNS reverso) |
recent_actions |
array | Até cinco últimas ações: id, ação, ação_display, descrição, user_email, created_at |
| 200 | Detalhes do servidor obtidos com sucesso |
| 404 | Não encontrado, ou pertence a outra conta |
Uma chamada leve para votar depois de criar, poder ou mudar de dimensão de um servidor.
curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/status/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"status": "on",
"deployed": true,
"resizing": false
}
| Valor | Descrição |
|---|---|
queue |
Uma ação (desenvolvimento, poder, redimensionamento, restauração) é encadeada ou em andamento |
deploying |
Ser provisório. Os servidores criados a partir do painel de controle usam este estado; os servidores criados através da API permanecem na fila até estarem prontos. |
on |
Executar |
off |
Apagado |
error |
A última ação falhou. Veja erro_description. |
suspended_payment |
Suspendido devido a facturas não pagas |
Encadeia uma ação de energia. O estado do servidor muda para a fila de espera até que a ação termine.
Permissão requerida: servers:power
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
action |
string | Sim |
start: energia ligadashutdown: desligamento gracioso, forçado se o hóspede não pararrestart: ciclo de energia dura (parar, depois começar)stop: atualmente executa o mesmo ciclo de energia que reiniciar. Use o desligar para deixar um servidor desligado.
|
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/power/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "restart"}'
import requests
server_uuid = "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b"
url = f"https://admin.vps.org/api/v1/servers/{server_uuid}/power/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
response = requests.post(url, headers=headers, json={"action": "restart"})
print(response.json())
{
"message": "Server restart queued"
}
| 200 | A ação foi posta na fila |
| 400 | Ação não suportada ou desativada |
| 402 | início recusado porque a conta tem facturas não pagas |
| 404 | Não encontrado, ou pertence a outra conta |
Move o servidor para outro plano ativo. O novo plano não pode ter menos espaço de disco do que o actual, e o corpo de pedido deve incluir ação definida para mudar de dimensão. A capacidade de hipervisor para o novo plano é verificada antes de qualquer coisa ser posta em fila, por isso um pedido recusado deixa o servidor inalterado.
O servidor é desligado enquanto é redimensionado e iniciado novamente depois. Se a redimensionação falhar, o servidor é colocado de novo no seu plano anterior e iniciado novamente se estava a executar. O crescimento do disco não pode ser desfeito.
Permissão requerida: servers:resize
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
action |
string | Sim | Deve ser redimensionado |
new_plan_uuid |
string | Sim | O uuid do plano para mudar para |
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/resize/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "resize", "new_plan_uuid": "5e26a4a6-bd0c-467c-abca-da036c811c3f"}'
{
"message": "Resize queued successfully"
}
Exemplo de uma redimensionação recusada (409):
{
"error": "Not enough hypervisor capacity for the selected plan; the server was not changed"
}
| 200 | A ação foi posta na fila |
| 400 | Falta ação ou novo_plan_uuid, plano inválido ou inativo, um plano com menos espaço no disco ou um plano GPU (os planos GPU não podem ser redimensionados através da API) |
| 404 | Não encontrado, ou pertence a outra conta |
| 409 | Uma mudança de redimensionamento ou armazenamento já está em andamento, ou não há capacidade de hipervisor suficiente para o novo plano |
| 503 | A capacidade não foi verificada neste momento. O servidor não foi alterado; tente mais tarde. |
Gera uma nova senha de root, devolve na resposta e colalteração no servidor. A nova senha também é enviada por email para você. O servidor deve ser implantado. Não é necessário nenhum corpo de pedido.
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/reset-password/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"message": "Password reset queued. New password will also be emailed to you.",
"password": "generated-password",
"job_id": "b6f1c7e2-3a4d-4f5e-8b9c-0d1e2f3a4b5c"
}
| 200 | A ação foi posta na fila |
| 400 | O servidor ainda não está implantado |
| 404 | Não encontrado, ou pertence a outra conta |
O GET lista o host host DNS reverso de cada endereço IPv4 e IPv6 no servidor. O POST define-o para um endereço. Enviar um host host vazio reinicia o endereço para o seu nome DNS reverso padrão.
Permissão requerida: servers:update
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ip |
string | Sim | Um endereço IPv4 ou IPv6 atribuído a este servidor |
hostname |
string | Não | O nome do host do PTR. Deixe vazio para reiniciar o padrão. |
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/rdns/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "203.0.113.10", "hostname": "mail.example.com"}'
{
"message": "Reverse DNS for 203.0.113.10 set to mail.example.com",
"ip": "203.0.113.10",
"hostname": "mail.example.com"
}
Resposta GET:
{
"rdns": [
{"ip": "203.0.113.10", "hostname": "mail.example.com"},
{"ip": "2001:db8:2:dd::f9:6b", "hostname": "mail.example.com"}
]
}
| 400 | falta ip, ou o nome de máquina não pôde ser configurado |
| 404 | O endereço IP não é atribuído a este servidor |
Executar um comando de shell dentro do servidor através do agente convidado QEMU e espera que ele termine. O servidor deve ser implantado e executado, e qemu-free-agent deve ser instalado e executado no convidado.
Permissão requerida: servers:exec
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
command |
string | Sim | Linha de comando executada com /bin/sh -c, até 2000 caracteres |
timeout |
integer | Não | Segundos para esperar pelo comando, 1 a 300 (por defeito 30) |
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/exec/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"command": "uptime", "timeout": 30}'
{
"stdout": " 21:14:03 up 46 days, 2:10, 0 users, load average: 0.08, 0.03, 0.01\n",
"stderr": "",
"exit_code": 0,
"timed_out": false
}
Se o comando ainda estiver em execução quando o tempo de expiração expira, a resposta tem tempo_out definido para true e out_code configurado para nulo.
| 200 | Comando terminado ou esgotado |
| 400 | Servidor não implantado ou não executado, ou parâmetros inválidos |
| 409 | O agente convidado QEMU não está a executar-se no servidor |
| 503 | Problema de conexão temporária. Volte a tentar após o cabeçalho de Voltar a seguir. |
Encadea o servidor para a exclusão permanente. O servidor desaparece da lista imediatamente e não pode ser recuperado.
Permissão requerida: servers:delete
curl -X DELETE "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"message": "Server deletion queued"
}
| 202 | Aceito: o pedido foi encadeado |
| 404 | Não encontrado, ou pertence a outra conta |
Armazene chaves SSH públicas na sua conta e depois passe seus uuids como ssh_key_uuids ao criar um servidor. GET lista suas chaves (25 por página); POST adiciona uma.
Permissão requerida: ssh-keys:list (GET), ssh-keys:create (POST)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Sim | Um nome para reconhecer a chave por, até 100 caracteres |
public_key |
string | Sim | A chave pública no formato OpenSSH, por exemplo, o conteúdo de id_ed25519.pub |
curl -X POST "https://admin.vps.org/api/v1/ssh-keys/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop"}'
import requests
url = "https://admin.vps.org/api/v1/ssh-keys/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
with open("/home/you/.ssh/id_ed25519.pub") as f:
data = {"name": "laptop", "public_key": f.read().strip()}
response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json()["uuid"])
{
"id": 19,
"uuid": "6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c",
"name": "laptop",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop",
"fingerprint": "0b:4c:9b:48:76:e7:1d:07:b9:ac:71:90:70:f7:9a:69",
"created_at": "2026-08-23T19:16:11.547183Z",
"last_used_at": null
}
| Campo | Tipo | Descrição |
|---|---|---|
id, uuid |
integer, string | Identificadores de chaves. Use uuid em ssh_key_uuids e na URL abaixo; o id funciona em ssh_key_ids. |
fingerprint |
string | Impressão digital MD5 da chave, calculada pela plataforma |
last_used_at |
datetime | null | Quando a chave foi instalada pela última vez em um novo servidor |
| 201 | Chave adicionada |
| 400 | Nome faltante, ou a chave pública não é uma chave pública SSH válida |
O GET devolve uma chave com os campos acima. DELETE remove-a da sua conta e retorna 204 sem corpo. Se apagar uma chave não remove-a dos servidores que já foi instalado. As chaves não podem ser editadas: apagar e adicionar novamente.
Permissão requerida: ssh-keys:list (GET), ssh-keys:delete (DELETE)
curl -X DELETE "https://admin.vps.org/api/v1/ssh-keys/6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Criar um backup ou um instantâneo é também uma ação do servidor:
POST /api/v1/servers/{uuid}/backup/: API de backupsPOST /api/v1/servers/{uuid}/snapshot/: API de Snapshots