Un seul jeton, créé dans le panel
Envoyé comme jeton porteur (bearer token). Limitez-le en lecture seule ou à un seul service si vous le souhaitez ; les jetons sont indépendants de votre mot de passe, et en révoquer un ne vous déconnecte jamais.
JSON sur HTTPS. Aucun SDK requis, aucun compte développeur séparé, et aucun endpoint qui existe dans le panel mais pas ici.
Créer un serveur
curl -X POST https://api.vpsoffshore.com/v1/servers \
-H "Authorization: Bearer $TOKEN" \
-d '{"plan":"reef","image":"debian-13"}'Renvoie immédiatement un identifiant de build. La machine répond en SSH environ soixante secondes plus tard, et l’adresse est routée avant l’envoi des identifiants.
20 points de terminaison
URL de base https://api.vpsoffshore.com/v1. Versionnée dans le chemin ; v1 continuera de fonctionner quand v2 existera, et la date d’arrêt sera annoncée un an à l’avance.
Serveurs
Stockage
Réseau
Catalogue
Facturation
Tout ce que le panel peut faire est ici, et rien ici ne manque au panel. Quand les deux divergent, c’est un bug — dites-le-nous depuis le panel et c’est corrigé plutôt que documenté comme un comportement voulu.
Comment ça se comporte
Une API se juge sur ses mauvais chemins, pas sur les bons. Trois des quatre points ci-dessous portent sur ce qui se passe quand quelque chose tourne mal.
Un seul jeton, créé dans le panel
Envoyé comme jeton porteur (bearer token). Limitez-le en lecture seule ou à un seul service si vous le souhaitez ; les jetons sont indépendants de votre mot de passe, et en révoquer un ne vous déconnecte jamais.
JSON en entrée, JSON en sortie, aucun SDK nécessaire
Du HTTPS pur, sans enveloppe propriétaire, sans repli XML et sans rituel de signature. Si curl peut le faire, vous avez un client. Des bibliothèques officielles existent pour Go, Python et TypeScript, et aucune n’est obligatoire.
Des limites de débit que vous n’atteindrez pas par accident
600 requêtes par minute et par jeton, 60 pour les appels de création. Chaque réponse porte le budget restant dans un en-tête, et le dépasser renvoie 429 avec le nombre de secondes à attendre — jamais un abandon silencieux.
Des erreurs qui disent quoi faire
Un 4xx contient un code exploitable par une machine, une phrase compréhensible, et le champ en cause. Nous préférons renvoyer une erreur longue plutôt qu’une erreur courte que vous devez deviner.
Les deux choses que vous ne renseignez qu’une fois
Les deux valent la peine d’être lus avant d’écrire le premier appel, plutôt qu’après le premier échec.
Authentification
curl https://api.vpsoffshore.com/v1/servers \
-H "Authorization: Bearer $TOKEN"
Les tokens sont créés dans le panel et peuvent être limités en lecture seule ou à un seul service. Ils sont indépendants de votre mot de passe, et en révoquer un ne vous déconnecte nulle part.
Consulter la limite de débit
X-RateLimit-Remaining: 574
X-RateLimit-Reset: 41
Sur chaque réponse, pas seulement sur celle qui échoue. Dépasser la limite renvoie 429 avec le nombre de secondes à attendre, jamais un abandon silencieux et jamais une réponse tronquée.
Une erreur vous indique le champ
{"error":"plan_unknown",
"message":"No plan named 'reff'. Did you mean 'reef'?",
"field":"plan"}
Un code lisible par une machine, une phrase lisible par un humain, et le champ en cause. Les erreurs longues coûtent moins cher que les erreurs courtes qu’il faut deviner.
Suivre l’état d’une mise en service
curl https://api.vpsoffshore.com/v1/servers/$ID \
-H "Authorization: Bearer $TOKEN" | jq .state
Passe de building → running. Il n’y a pas de webhook à enregistrer avant de pouvoir créer quoi que ce soit, et interroger une fois par seconde reste dans la limite.
Rien à demander
Aucun compte développeur, aucune validation, aucun bac à sable qui se comporte différemment de la production.