Créez, inspectez, alimentez, redimensionnez et supprimez vos serveurs VPS. Les serveurs sont identifiés par leur uuid.
Retourne les serveurs de votre compte, les plus récents en premier, 25 par page. Les serveurs qui sont supprimés ne sont pas inclus.
Autorisation requise: servers:list
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
page |
integer | Numéro | Page numéro, à partir de 1 |
page_size |
integer | Numéro | Résultats par page (par défaut 25, maximum 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
}
]
}
| Champ | Taper | Désignation des marchandises |
|---|---|---|
uuid |
string | Identifiant de serveur utilisé dans tous les autres paramètres du serveur |
hostname |
string | Nom d'hôte que vous avez choisi lors de la création du serveur |
status |
string | État actuel. Voir les valeurs d'état du serveur ci-dessous. |
error_description |
string | null | Détails de la dernière défaillance lorsque le statut est une erreur, sinon null |
location_name |
string | Nom de l'emplacement dans lequel le serveur fonctionne |
os_name |
string | Nom du système d'exploitation, sans la version |
plan_name |
string | Sommaire du plan lisible, par exemple 1 vCPU / 2 Go RAM / 10 Go |
ipv4_addresses |
array | IPv4 s'adresse comme des chaînes. Videz jusqu'à ce que le serveur soit déployé, et sur les plans sans IPv4. |
ipv6_addresses |
array | IPv6 s'adresse comme des chaînes. Videz jusqu'à ce que le serveur soit déployé. |
created_at |
datetime | Heure de création (ISO 8601, UTC) |
deployed |
boolean | Vrai une fois que la provision est terminée |
| 200 | Liste des serveurs récupérée avec succès |
| 403 | Jeton API manquant ou invalide, ou le jeton manque la permission requise |
En attente d'un nouveau serveur pour le déploiement et le renvoie immédiatement avec la file d'attente d'état. La mise à disposition se poursuit en arrière-plan : sondagez le paramètre d'état jusqu'à ce que le déploiement soit vrai.
Votre compte a besoin d'un mode de paiement sauvegardé. Selon votre historique de compte, une période temporaire de préautorisation d'environ une semaine du prix du forfait (au moins 1 USD) peut être placée sur votre carte avant la création du serveur.
Autorisation requise: servers:create
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
hostname |
string | Oui | Au moins 3 caractères. Lettres, chiffres, tirets et périodes seulement. |
location_id |
integer | Oui | L'identité d'un emplacement actif depuis l'API des emplacements |
plan_uuid |
string | Oui | L'uid d'un plan actif de l'API Plans |
operating_system_version_uuid |
string | Oui | L'uid d'une entrée active dans la liste des versions d'un système d'exploitation |
ssh_key_uuids |
array | Numéro | UUIDs de clés SSH de l'API de clés SSH à installer sur le serveur |
ssh_key_ids |
array | Numéro | Des ids entiers de clés SSH, comme alternative à ssh_key_uuids. Si les deux sont envoyés, ssh_key_ids est utilisé. |
ssh_key_uuid, ssh_key_id |
string, integer | Numéro | Shorthand pour une seule clé SSH |
auth_method |
string | Numéro | par défaut, ou aux deux quand les clés SSH sont fournies. |
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 Créé avec l'objet serveur complet décrit dans Get Server Details. Les adresses et vmid sont remplies une fois le déploiement terminé.
{
"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 | Serveur créé et en attente pour le déploiement |
| 400 | Erreur de validation, par exemple une version inactive de système de localisation, de plan ou de système d'exploitation |
| 402 | Aucun mode de paiement au dossier, factures impayées ou autorisation préalable de la carte n'a été refusé. |
| 403 | Jeton API manquant ou invalide, ou le jeton manque la permission requise |
| 429 | Votre compte a atteint sa limite de création de serveur |
Retourne un serveur avec son emplacement, son plan, son système d'exploitation, ses adresses IP et les cinq actions les plus récentes.
Autorisation requise: 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"
}
]
}
Le balisage de l'icône SVG et la liste des versions sont raccourcis ici.
| Champ | Taper | Désignation des marchandises |
|---|---|---|
vmid |
integer | null | Numéro de machine virtuelle, réglé pendant le déploiement |
location |
object | Objet de localisation, tel que retourné par l'API de localisation |
plan |
object | Objet Plan, tel que retourné par l'API Plans |
operating_system, operating_system_version |
object | Système d'exploitation et version installée, tel que retourné par l'API Systèmes d'exploitation |
ipv4_addresses, ipv6_addresses |
array | Un objet par adresse avec ip, passerelle, sous-net et rdns (le nom d'hôte DNS inverse) |
recent_actions |
array | Jusqu'à cinq dernières actions : id, action, action_display, description, user_email, created_at |
| 200 | Informations du serveur récupérées avec succès |
| 404 | Non trouvé, ou il appartient à un autre compte |
Un appel léger pour le sondage après la création, la puissance ou la redimensionnement d'un serveur.
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
}
| Valeur | Désignation des marchandises |
|---|---|
queue |
Une action (déploiement, puissance, redimensionnement, restauration) est en attente ou en cours |
deploying |
Les serveurs créés à partir du panneau de contrôle utilisent cet état ; les serveurs créés par l'API restent en file d'attente jusqu'à ce qu'ils soient prêts. |
on |
Courir |
off |
Débranché |
error |
La dernière action a échoué. Voir erreur_description. |
suspended_payment |
Suspendu en raison de factures impayées |
Enquête sur une action de puissance. L'état du serveur change en file d'attente jusqu'à ce que l'action soit terminée.
Autorisation requise: servers:power
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
action |
string | Oui |
start: puissanceshutdown: arret gracieux, forcé si l'invité ne s'arrête pasrestart: cycle de puissance dure (arrêt, puis démarrage)stop: Actuellement, le cycle de puissance est le même que le redémarrage. Utilisez l'arrêt pour laisser un serveur hors fonction.
|
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 | L'action a été mise en attente |
| 400 | Action manquante ou non soutenue |
| 402 | début refusé parce que le compte a des factures impayées |
| 404 | Non trouvé, ou il appartient à un autre compte |
Le nouveau plan ne peut pas avoir moins d'espace disque que le présent, et le corps de requête doit inclure une action définie pour redimensionner. La capacité d'hyperviseur du nouveau plan est vérifiée avant que n'importe quoi soit en file d'attente, donc une requête refusée laisse le serveur inchangé.
Le serveur est fermé pendant qu'il est redimensionné et recommencé après. Si le redimensionnement échoue, le serveur est remis sur son plan précédent et recommencé s'il était en cours d'exécution. La croissance du disque ne peut pas être annulée.
Autorisation requise: servers:resize
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
action |
string | Oui | Doit être redimensionné |
new_plan_uuid |
string | Oui | Le projet de passer à |
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"
}
Exemple de redimensionnement refusé (409):
{
"error": "Not enough hypervisor capacity for the selected plan; the server was not changed"
}
| 200 | L'action a été mise en attente |
| 400 | Action manquante ou plan_uuid, plan invalide ou inactif, plan avec moins d'espace disque, ou plan GPU (les plans GPU ne peuvent pas être redimensionnés via l'API) |
| 404 | Non trouvé, ou il appartient à un autre compte |
| 409 | Un changement de taille ou de stockage est déjà en cours, ou il n'y a pas assez de capacité d'hyperviseur pour le nouveau plan |
| 503 | La capacité n'a pas pu être vérifiée en ce moment. Le serveur n'a pas été modifié; reessayez plus tard. |
Génére un nouveau mot de passe racine, le renvoie dans la réponse et fait la queue sur le serveur. Le nouveau mot de passe vous est également envoyé par e-mail. Le serveur doit être déployé. Aucun corps de requête n'est nécessaire.
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 | L'action a été mise en attente |
| 400 | Le serveur n'est pas encore déployé |
| 404 | Non trouvé, ou il appartient à un autre compte |
GET liste le nom d'hôte DNS inverse de chaque adresse IPv4 et IPv6 sur le serveur. POST le définit pour une adresse. L'envoi d'un nom d'hôte vide réinitialise l'adresse à son nom DNS inverse par défaut.
Autorisation requise: servers:update
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
ip |
string | Oui | Une adresse IPv4 ou IPv6 attribuée à ce serveur |
hostname |
string | Numéro | Le nom d'hôte PTR. Laissez vide pour réinitialiser à la valeur par défaut. |
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"
}
Obtenir la réponse :
{
"rdns": [
{"ip": "203.0.113.10", "hostname": "mail.example.com"},
{"ip": "2001:db8:2:dd::f9:6b", "hostname": "mail.example.com"}
]
}
| 400 | ip manquant, ou le nom d'hôte ne peut pas être défini |
| 404 | L'adresse IP n'est pas attribuée à ce serveur |
Exécute une commande shell à l'intérieur du serveur via l'agent invité QEMU et attend qu'il soit terminé. Le serveur doit être déployé et exécuté, et qemu-invité-agent doit être installé et exécuté dans l'invité.
Autorisation requise: servers:exec
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
command |
string | Oui | Ligne de commande avec /bin/sh -c, jusqu'à 2000 caractères |
timeout |
integer | Numéro | Secondes à attendre pour la commande, 1 à 300 (par défaut 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
}
Si la commande est toujours en cours d'exécution lorsque le timeout expire, la réponse est timed_out définie à true et le code exit_definitive définie à null.
| 200 | Commande terminée ou chronométrée |
| 400 | Serveur non déployé ou non en cours d'exécution, ou paramètres invalides |
| 409 | L'agent invité QEMU ne fonctionne pas sur le serveur |
| 503 | Problème de connexion temporaire. Reessayer après l'en-tête Retry-After. |
Queue le serveur pour une suppression permanente. Le serveur disparaît immédiatement de la liste et ne peut pas être récupéré.
Autorisation requise: 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 | Acceptée : la demande a été en attente |
| 404 | Non trouvé, ou il appartient à un autre compte |
Stockez les clés publiques SSH dans votre compte, puis passez leurs uuids comme ssh_key_uuids lorsque vous créez un serveur. GET liste vos clés (25 par page); POST en ajoute une.
Autorisation requise: ssh-keys:list (GET), ssh-keys:create (POST)
| Paramètre | Taper | Requis | Désignation des marchandises |
|---|---|---|---|
name |
string | Oui | Un nom pour reconnaître la clé par, jusqu'à 100 caractères |
public_key |
string | Oui | La clé publique au format OpenSSH, par exemple le contenu 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
}
| Champ | Taper | Désignation des marchandises |
|---|---|---|
id, uuid |
integer, string | Identificateurs de clés. Utilisez uuid dans ssh_key_uuids et dans l'URL ci-dessous; id fonctionne dans ssh_key_ids. |
fingerprint |
string | Empreinte MD5 de la clé, calculée par la plate-forme |
last_used_at |
datetime | null | Quand la clé a été installée pour la dernière fois sur un nouveau serveur |
| 201 | Clé ajoutée |
| 400 | Nom manquant, ou la clé publique n'est pas une clé publique valide SSH |
GET retourne une clé avec les champs ci-dessus. DELETE la supprime de votre compte et renvoie 204 sans corps. La suppression d'une clé ne la supprime pas des serveurs déjà installés. Les clés ne peuvent pas être modifiées: supprimer et ajouter à nouveau.
Autorisation requise: 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"
Créer une sauvegarde ou un instantané est également une action serveur:
POST /api/v1/servers/{uuid}/backup/: API de sauvegardePOST /api/v1/servers/{uuid}/snapshot/: API Snapshots