Documentation API revendeur
Cette API sert à une chose : vendre nos VPS depuis votre site, sous votre marque. Vous commandez une machine par un appel HTTP, elle est livrée automatiquement, et vous la pilotez à distance — démarrage, arrêt, redémarrage, réinstallation — sans jamais passer par notre interface.
1. Obtenir une clé API
Rendez-vous dans votre espace client, onglet Revendeur → Mes clés API, et générez une clé. Elle n'est affichée qu'une seule fois : copiez-la immédiatement, nous n'en conservons que l'empreinte et personne — nous compris — ne peut la retrouver ensuite.
Vous pouvez maintenir jusqu'à 5 clés actives simultanément. En pratique, prenez-en une par environnement : une pour votre site en production, une pour vos tests. Si l'une fuite, vous la révoquez sans interrompre l'autre.
2. Authentification
Toutes les requêtes se font sur cette base :
https://oneheberge.fr/api/v1
La clé s'envoie au choix dans l'un des deux en-têtes suivants — les deux sont équivalents, prenez celui qui s'intègre le mieux à votre client HTTP :
# au choix X-Api-Key: votre_cle Authorization: Bearer votre_cle
Une requête sans clé valide reçoit un 401. Chaque appel met à jour la date de dernière utilisation de la clé, visible dans votre espace client : c'est le moyen le plus simple de repérer une clé oubliée mais toujours active.
3. Format des réponses et limites
Toutes les réponses sont en JSON et suivent la même enveloppe, succès comme erreur. Votre code n'a donc qu'un seul format à gérer :
{
"success": true,
"message": "Success",
"data": { ... }
}
En cas d'erreur, success vaut false et message contient la raison en clair. Fiez-vous au code HTTP plutôt qu'au texte du message : celui-ci peut être reformulé, pas le code.
Limite de débit
60 requêtes par minute et par adresse IP. Au-delà, l'API répond 429. C'est largement suffisant pour un site marchand : ne bouclez pas sur l'API pour rafraîchir un tableau de bord, mettez les résultats en cache quelques minutes et n'appelez qu'à la demande ou sur événement.
4. Consulter le catalogue
| Méthode | Chemin | Description |
|---|---|---|
| GET | /vps | Liste les VPS que vous avez commandés via l'API. |
| GET | /vps/{id} | Détail d'une machine : état, IP, ressources. |
| GET | /vps/os | Systèmes d'exploitation installables. |
| GET | /products | Offres disponibles à la revente, avec leurs identifiants. |
Commencez toujours par /products : c'est lui qui vous donne le product_id à passer à la commande. Ne codez pas ces identifiants en dur dans votre site — une offre peut être retirée ou remplacée, et votre tunnel de vente doit suivre sans redéploiement.
5. Commander un VPS
| Méthode | Chemin |
|---|---|
| POST | /vps/order |
Corps de la requête :
| Champ | Obligatoire | Description |
|---|---|---|
product_id | oui | Identifiant de l'offre, obtenu via /products. |
label | oui | Votre référence interne. C'est ce que vous verrez dans la liste : mettez-y l'identifiant de votre propre client, pas un nom générique. |
billing_cycle | non | monthly par défaut. |
hostname | non | Nom d'hôte de la machine. |
os | non | Système à installer, parmi /vps/os. |
# commande d'un VPS curl -X POST https://oneheberge.fr/api/v1/vps/order \ -H "X-Api-Key: $ONEHEBERGE_KEY" \ -H "Content-Type: application/json" \ -d '{"product_id": 50, "label": "client-4821", "os": "debian12"}'
label est votre garde-fou. Mettez-y systématiquement l'identifiant du client final de votre côté. Le jour où vous devez rapprocher une facture, retrouver la machine d'un client ou nettoyer des commandes de test, c'est la seule information qui fera le lien entre votre base et la nôtre.
6. Piloter une machine
| Méthode | Chemin | Effet |
|---|---|---|
| POST | /vps/{id}/start | Démarre la machine. |
| POST | /vps/{id}/stop | Arrête la machine. |
| POST | /vps/{id}/reboot | Redémarre la machine. |
| POST | /vps/{id}/reinstall | Réinstalle le système. Efface tout le disque. |
| GET | /vps/{id}/stats | Consommation CPU, mémoire, disque et réseau. |
Ces actions sont asynchrones côté hyperviseur : un 200 signifie « ordre accepté », pas « machine déjà démarrée ». Pour afficher un état fiable, interrogez /vps/{id} quelques secondes plus tard plutôt que de supposer le résultat.
7. Codes d'erreur
| Code | Signification | Que faire |
|---|---|---|
400 | Paramètre manquant ou invalide | Corrigez la requête, ne réessayez pas telle quelle. |
401 | Clé absente, invalide ou désactivée | Vérifiez l'en-tête et l'état de la clé dans votre espace client. |
404 | Ressource introuvable | Offre retirée, ou machine qui ne vous appartient pas. |
429 | Limite de débit atteinte | Attendez, puis espacez vos appels. Ne bouclez pas. |
500 | Erreur de notre côté | Réessayez plus tard. Si ça persiste, ouvrez un ticket avec l'horodatage. |
8. Exemple complet d'intégration
Le scénario type : votre client paie sur votre site, vous commandez la machine, vous stockez son identifiant, puis vous affichez son état dans votre propre interface.
<?php // Cle lue depuis l'environnement, jamais ecrite dans le code $key = getenv('ONEHEBERGE_KEY'); function oh_call($method, $path, $body = null) { global $key; $ch = curl_init('https://oneheberge.fr/api/v1' . $path); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_TIMEOUT => 20, CURLOPT_HTTPHEADER => [ 'X-Api-Key: ' . $key, 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body ? json_encode($body) : null, ]); $raw = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return [$code, json_decode($raw, true)]; } // 1. commande, avec la reference de VOTRE client list($code, $res) = oh_call('POST', '/vps/order', [ 'product_id' => 50, 'label' => 'client-' . $monClientId, 'os' => 'debian12', ]); if ($code !== 200) { // On NE marque PAS la commande comme livree : on alerte et on garde // la trace, sinon le client a paye pour rien. error_log('OneHeberge: ' . ($res['message'] ?? 'echec')); return; } $vpsId = $res['data']['id']; // 2. a enregistrer chez vous : c'est le lien entre vos deux bases enregistrerVps($monClientId, $vpsId); // 3. plus tard, redemarrage demande depuis votre interface oh_call('POST', "/vps/$vpsId/reboot");
if ($code !== 200). Une commande qui échoue silencieusement, c'est un client qui a payé et qui n'a rien reçu — et vous ne l'apprendrez que par son ticket. Journalisez l'échec, alertez-vous, et ne marquez jamais une commande comme livrée sans avoir reçu l'identifiant de la machine.
Besoin d'aide ?
Une question sur un endpoint, un comportement inattendu, un besoin non couvert ? Ouvrez un ticket depuis votre espace client en précisant l'horodatage de la requête : nos journaux d'API permettent de retrouver l'appel exact et de vous répondre précisément.