Second opérateur de transit actif à Chișinău — 20 Gbps de capacité mixte. 20 Gbps de liaison montante mixte, désormais active Pourquoi la Moldavie

Un jeton, et tout ce que le panel peut faire

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

Tout, en cinq groupes

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

GET /servers Chaque service du compte, avec son état, son offre et ses adresses.
POST /servers Créez-en un. Renvoie immédiatement un identifiant de build ; le serveur est joignable environ une minute plus tard.
GET /servers/{id} Un service, avec l’usage des ressources en direct sur la dernière heure.
PATCH /servers/{id} Changer d’offre. Redimensionne sans reconstruction, quand le disque le permet.
DELETE /servers/{id} Le détruire. Les disques sont conservés 14 jours, puis effacés avant réattribution.
POST /servers/{id}/actions reboot · shutdown · start · rebuild · rescue · reset-password.

Stockage

GET /servers/{id}/snapshots Snapshots d’un seul service, les plus récents en premier.
POST /servers/{id}/snapshots Prenez-en un. Léger, donc rapide, et qui ne double pas l’utilisation de votre disque.
POST /snapshots/{id}/restore Restaurer sur place, ou vers un autre service de même offre ou supérieure.
DELETE /snapshots/{id} Supprimer un instantané.

Réseau

GET /servers/{id}/addresses Des adresses routées vers un service, en v4 et en v6.
POST /servers/{id}/addresses Demandez une adresse supplémentaire, ou un /29.
PUT /addresses/{ip}/rdns Configurez le DNS inversé. Prend effet en une minute, pas au prochain rafraîchissement de zone.
GET /servers/{id}/bandwidth Compteurs de transfert. Informatifs — il n’y a pas de quota à dépasser.

Catalogue

GET /plans Chaque offre avec sa spécification et son prix. La même source à partir de laquelle ce site s’affiche.
GET /images Images et ISO disponibles, y compris celles que vous avez téléversées.
POST /images Importez une ISO par URL. Démarre avec une console attachée.

Facturation

GET /invoices Factures, payées et impayées, avec la cryptomonnaie et la transaction blockchain.
POST /invoices/{id}/pay Générez une adresse de paiement pour l’une des 8 cryptomonnaies acceptées.
GET /credits Crédits de SLA appliqués, avec l’incident à l’origine de chacun.

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

Quatre décisions que vous remarquerez en moins d’une heure

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

Authentification, et à quoi ressemble une erreur

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 buildingrunning. 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

Le jeton est dans le panel, et le panel est fourni avec le premier serveur

Aucun compte développeur, aucune validation, aucun bac à sable qui se comporte différemment de la production.

Langue

Lisez ce site dans votre langue

Disponible en 28 langues aujourd’hui. Les autres sont en cours de traduction.