API Corenix
Pilotez vos services depuis vos scripts : consulter vos serveurs et factures, mesurer la disponibilité, redémarrer une machine, modifier un reverse DNS ou ouvrir un ticket.
URL de base : https://api.corenix.fr/v1 · Format : JSON (UTF-8) · Protocole : HTTPS uniquement.
Démarrage
- Connectez-vous à votre espace client, rubrique Jetons API.
- Créez un jeton en lecture seule ou en lecture et écriture. Copiez-le : il n’est affiché qu’une fois.
- Envoyez-le à chaque requête.
curl -H "Authorization: Bearer cxk_…" https://api.corenix.fr/v1/services
Authentification
Transmettez le jeton dans l’en-tête Authorization: Bearer cxk_… ou X-Api-Key: cxk_…. Ne l’intégrez jamais à du code public ou à une application distribuée : il donne accès à votre compte dans la limite de ses droits.
Un jeton peut être restreint à des adresses IP (ou réseaux CIDR), limité dans le temps et révoqué à tout moment. Les actions réalisées par l’API apparaissent dans le journal d’activité du compte.
Droits d’un jeton
À la création, vous choisissez le niveau de droits :
| Niveau | Ce que le jeton peut faire |
|---|---|
| Lecture seule | Consulter services, disponibilité, adresses IP, factures, avoirs, tickets et solde. Aucune modification possible. |
| Lecture et écriture | Tout ce qui précède, plus : alimentation des serveurs, reverse DNS, ouverture et réponse aux tickets. |
| Personnalisé | La lecture, plus uniquement les droits d’écriture cochés : Tickets, Alimentation, Reverse DNS. |
Un appel qui dépasse les droits du jeton renvoie 403. Aucun jeton ne permet de payer, de résilier ou de modifier le compte.
Réponses et erreurs
{ "success": true, "data": { … }, "meta": { "page": 1, "limit": 50 } }
{ "success": false, "error": { "message": "Service introuvable.", "code": "not_found" } }
| Code HTTP | Signification |
|---|---|
| 200 / 201 | Succès / ressource créée |
| 400 | Paramètre manquant ou invalide |
| 401 | Jeton absent, invalide, expiré ou révoqué |
| 403 | Droit manquant, adresse IP non autorisée ou compte inactif |
| 404 | Ressource introuvable |
| 409 | Action impossible dans l’état actuel (service inactif, ticket clôturé) |
| 429 | Trop de requêtes |
| 502 / 503 | Infrastructure ou fonction momentanément indisponible |
Limites
- 60 requêtes par minute et par jeton. L’en-tête
X-RateLimit-Remainingindique ce qu’il reste ; en cas de dépassement,Retry-Afterdonne le délai. - Une commande d’alimentation toutes les 8 secondes par compte.
- 10 jetons actifs au maximum par compte.
Identifiants de service. Un service se désigne par son identifiant public de 8 caractères (ex. XQW2MJG8), visible dans l’espace client. L’ancien numéro reste accepté.
Compte
| Méthode | Chemin | Droit | Description |
|---|---|---|---|
| GET | /me | Lecture | Identité du jeton Numéro client, nom, e-mail, société et droits du jeton. |
| GET | /balance | Lecture | Solde du compte Crédit disponible (EUR). |
Services
| Méthode | Chemin | Droit | Description |
|---|---|---|---|
| GET | /services | Lecture | Liste des services Paramètre facultatif : status = pending, active, suspended ou terminated. |
| GET | /services/{id} | Lecture | Détail d’un service Caractéristiques, échéance, engagement et adresses IP. {id} est l’identifiant de service (ex. XQW2MJG8). |
| GET | /services/{id}/status | Lecture | État en direct État d’alimentation, charge processeur et mémoire (serveurs virtualisés). |
| GET | /services/{id}/uptime | Lecture | Disponibilité Pourcentage sur la période et par jour. Paramètre : days (1 à 90, 30 par défaut). |
| POST | /services/{id}/power | Alimentation | Alimentation Corps : {"action":"start|shutdown|stop|reboot|reset"}. Une commande toutes les 8 secondes au maximum. |
| GET | /services/{id}/ips | Lecture | Adresses IP Adresses rattachées au service et leur reverse DNS. |
| PUT | /services/{id}/ips/{ip}/ptr | Reverse DNS | Définir le reverse DNS Corps : {"hostname":"mail.exemple.fr"}. IPv4 uniquement. |
| DELETE | /services/{id}/ips/{ip}/ptr | Reverse DNS | Rétablir le reverse DNS par défaut |
Factures
| Méthode | Chemin | Droit | Description |
|---|---|---|---|
| GET | /invoices | Lecture | Liste des factures Paramètres facultatifs : status = unpaid, paid ou cancelled ; limit (1 à 100) ; page. |
| GET | /invoices/{id} | Lecture | Détail d’une facture {id} accepte le numéro de facture (CORENIX-0000001) ou son identifiant interne. |
| GET | /credit-notes | Lecture | Liste des avoirs Avoirs émis sur votre compte. |
| GET | /credit-notes/{number} | Lecture | Détail d’un avoir Lignes, montant et facture d’origine. |
Tickets
| Méthode | Chemin | Droit | Description |
|---|---|---|---|
| GET | /tickets | Lecture | Liste des tickets Les 100 plus récents. |
| GET | /tickets/{ref} | Lecture | Détail d’un ticket Messages visibles par le client. {ref} : CORE-XXXXX. |
| POST | /tickets | Tickets | Ouvrir un ticket Corps : subject, message (obligatoires) ; department, priority, service_id (facultatifs). |
| POST | /tickets/{ref}/reply | Tickets | Répondre à un ticket Corps : {"message":"…"}. |
Exemples
Lister les services
curl -H "Authorization: Bearer cxk_…" https://api.corenix.fr/v1/services
{ "success": true, "data": [ { "id": "XQW2MJG8", "name": "VPS-1", "status": "active", "ip": "82.29.39.3", "next_due": "2026-11-20", … } ] }
Disponibilité sur 7 jours
curl -H "Authorization: Bearer cxk_…" "https://api.corenix.fr/v1/services/XQW2MJG8/uptime?days=7"
Redémarrer un serveur écriture
curl -X POST -H "Authorization: Bearer cxk_…" -H "Content-Type: application/json" \
-d '{"action":"reboot"}' https://api.corenix.fr/v1/services/XQW2MJG8/power
Modifier un reverse DNS écriture
curl -X PUT -H "Authorization: Bearer cxk_…" -H "Content-Type: application/json" \
-d '{"hostname":"mail.exemple.fr"}' https://api.corenix.fr/v1/services/XQW2MJG8/ips/82.29.39.3/ptr
Python
import requests
API = "https://api.corenix.fr/v1"
H = {"Authorization": "Bearer cxk_…"}
for s in requests.get(f"{API}/services", headers=H, timeout=10).json()["data"]:
print(s["id"], s["name"], s["status"])
PHP
$ch = curl_init('https://api.corenix.fr/v1/invoices?status=unpaid');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Authorization: Bearer cxk_…']]);
$factures = json_decode(curl_exec($ch), true)['data'];