VPS
Vos serveurs : lecture, alimentation, mesures et journal.
Lister les VPS
/v1/compute/vpsPermission : vps:read
Paramètres de requête
| Champ | Type | Description |
|---|---|---|
region | texte | Exemple : "fr-lys-1". |
status | texte | Valeurs : provisioning, running, stopped, reinstalling, restoring, suspended, error. |
limit | entier | Nombre d’éléments par page (1 à 100) Par défaut : 20. De 1 à 100. |
cursor | texte | Curseur renvoyé par la page précédente (`next_cursor`) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
data | liste de objet | |
data[].id | texte | Identifiant du VPS. Exemple : "vps-7c2e4a91". |
data[].hostname | texte | Nom d’hôte. Exemple : "vps-7c2e4a91.vps.corce.link". |
data[].status | texte | État du VPS ; unknown si l’hyperviseur ne répond pas. Valeurs : provisioning, running, stopped, reinstalling, restoring, suspended, error, unknown. |
data[].plan | objet | Offre. |
data[].plan.id | texte | Exemple : "vps-start". |
data[].plan.name | texte | Exemple : "VPS Start". |
data[].region | texte ou null | Exemple : "fr-lys-1". |
data[].image | objet | Système installé. |
data[].image.id | texte | Exemple : "debian-13". |
data[].image.name | texte | Exemple : "Debian 13". |
data[].resources | objet | Ressources de l’offre. |
data[].resources.vcpus | entier | Exemple : 2. |
data[].resources.memory_gb | entier | Exemple : 4. |
data[].resources.disk_gb | entier | Exemple : 50. |
data[].ip_addresses | liste de objet | Adresses IPv4 et IPv6. |
data[].ip_addresses[].address | texte | Adresse IPv4 ou IPv6. Exemple : "192.0.2.23". |
data[].ip_addresses[].prefix_length | entier ou null | Longueur du préfixe ; null si l’hyperviseur ne répond pas. Exemple : 24. |
data[].ip_addresses[].version | entier | Version du protocole. Valeurs : 4, 6. |
data[].ip_addresses[].primary | booléen | Adresse principale du VPS. |
data[].ip_addresses[].gateway | texte ou null | Exemple : "192.0.2.1". |
data[].ip_addresses[].reverse_dns | texte ou null | Exemple : "www.studio-laurent.fr". |
data[].firewall | objet | Résumé du pare-feu (détail seulement). |
data[].firewall.enabled | booléen | |
data[].firewall.rules_count | entier | Exemple : 4. |
data[].private_networks | liste de texte | Réseaux privés auxquels le VPS est relié. |
data[].billing | objet | Facturation du service. |
data[].billing.billing_cycle | texte | Valeurs : monthly, quarterly, semiannually, annually, biennially, triennially, one_time. |
data[].billing.price | objet | |
data[].billing.next_due_date | texte ou null | |
data[].billing.renewal | texte | Réglé par la carte par défaut, ou à chaque facture. Valeurs : automatic, invoice. |
data[].created_at | texte | Date de création. |
has_more | booléen | |
next_cursor | texte ou null |
Erreurs
invalid_parameterParamètre invalideinvalid_cursorCurseur invalide- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl "https://api.corcelink.fr/v1/compute/vps" \
-H "Authorization: Bearer $CORCELINK_API_KEY"
import os, uuid, requests
r = requests.get(
"https://api.corcelink.fr/v1/compute/vps",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}` },
});
console.log(res.status, await res.json());
Réponse 200
{
"data": [
{
"id": "vps-6fc6b7e2",
"hostname": "serveur-camille",
"status": "stopped",
"plan": {
"id": "vps-start",
"name": "VPS Start"
},
"region": "fr-lys-1",
"image": {
"id": "unknown",
"name": ""
},
"resources": {
"vcpus": 2,
"memory_gb": 4,
"disk_gb": 50
},
"ip_addresses": [
{
"address": "192.0.2.23",
"prefix_length": 24,
"version": 4,
"primary": true,
"gateway": "192.0.2.1",
"reverse_dns": null
},
{
"address": "2001:db8:42::2",
"prefix_length": 64,
"version": 6,
"primary": false,
"gateway": "2001:db8:42::1",
"reverse_dns": null
}
],
"billing": {
"billing_cycle": "monthly",
"price": {
"amount": 790,
"currency": "EUR"
},
"next_due_date": "2026-11-08",
"renewal": "invoice"
},
"created_at": "2026-10-08T00:00:00Z"
},
{
"id": "vps-7c2e4a91",
"hostname": "vps-7c2e4a91.vps.corce.link",
"status": "running",
"plan": {
"id": "vps-start",
"name": "VPS Start"
},
"region": "fr-lys-1",
"image": {
"id": "debian-13",
"name": "Debian 13"
},
"resources": {
"vcpus": 2,
"memory_gb": 4,
"disk_gb": 50
},
"ip_addresses": [
{
"address": "192.0.2.23",
"prefix_length": 24,
"version": 4,
"primary": true,
"gateway": "192.0.2.1",
"reverse_dns": null
},
{
"address": "2001:db8:42::2",
"prefix_length": 64,
"version": 6,
"primary": false,
"gateway": "2001:db8:42::1",
"reverse_dns": null
}
],
"billing": {
"billing_cycle": "monthly",
"price": {
"amount": 790,
"currency": "EUR"
},
"next_due_date": "2026-11-08",
"renewal": "invoice"
},
"created_at": "2026-10-08T00:00:00Z"
}
],
"has_more": false,
"next_cursor": null
}
Essayer avec votre clé
Votre clé reste dans ce navigateur et n’est envoyée qu’à api.corcelink.fr.
Lire un VPS
/v1/compute/vps/{vps_id}Permission : vps:read
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
Réponse 200
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant du VPS. Exemple : "vps-7c2e4a91". |
hostname | texte | Nom d’hôte. Exemple : "vps-7c2e4a91.vps.corce.link". |
status | texte | État du VPS ; unknown si l’hyperviseur ne répond pas. Valeurs : provisioning, running, stopped, reinstalling, restoring, suspended, error, unknown. |
plan | objet | Offre. |
plan.id | texte | Exemple : "vps-start". |
plan.name | texte | Exemple : "VPS Start". |
region | texte ou null | Exemple : "fr-lys-1". |
image | objet | Système installé. |
image.id | texte | Exemple : "debian-13". |
image.name | texte | Exemple : "Debian 13". |
resources | objet | Ressources de l’offre. |
resources.vcpus | entier | Exemple : 2. |
resources.memory_gb | entier | Exemple : 4. |
resources.disk_gb | entier | Exemple : 50. |
ip_addresses | liste de objet | Adresses IPv4 et IPv6. |
ip_addresses[].address | texte | Adresse IPv4 ou IPv6. Exemple : "192.0.2.23". |
ip_addresses[].prefix_length | entier ou null | Longueur du préfixe ; null si l’hyperviseur ne répond pas. Exemple : 24. |
ip_addresses[].version | entier | Version du protocole. Valeurs : 4, 6. |
ip_addresses[].primary | booléen | Adresse principale du VPS. |
ip_addresses[].gateway | texte ou null | Exemple : "192.0.2.1". |
ip_addresses[].reverse_dns | texte ou null | Exemple : "www.studio-laurent.fr". |
firewall | objet | Résumé du pare-feu (détail seulement). |
firewall.enabled | booléen | |
firewall.rules_count | entier | Exemple : 4. |
private_networks | liste de texte | Réseaux privés auxquels le VPS est relié. |
billing | objet | Facturation du service. |
billing.billing_cycle | texte | Valeurs : monthly, quarterly, semiannually, annually, biennially, triennially, one_time. |
billing.price | objet | |
billing.price.amount | entier | Montant en centimes. Exemple : 790. |
billing.price.currency | texte | Devise ISO 4217. Exemple : "EUR". |
billing.next_due_date | texte ou null | |
billing.renewal | texte | Réglé par la carte par défaut, ou à chaque facture. Valeurs : automatic, invoice. |
created_at | texte | Date de création. |
Erreurs
not_foundRessource introuvable- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91" \
-H "Authorization: Bearer $CORCELINK_API_KEY"
import os, uuid, requests
r = requests.get(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}` },
});
console.log(res.status, await res.json());
Réponse 200
{
"id": "vps-7c2e4a91",
"hostname": "vps-7c2e4a91.vps.corce.link",
"status": "running",
"plan": {
"id": "vps-start",
"name": "VPS Start"
},
"region": "fr-lys-1",
"image": {
"id": "debian-13",
"name": "Debian 13"
},
"resources": {
"vcpus": 2,
"memory_gb": 4,
"disk_gb": 50
},
"ip_addresses": [
{
"address": "192.0.2.23",
"prefix_length": 24,
"version": 4,
"primary": true,
"gateway": "192.0.2.1",
"reverse_dns": null
},
{
"address": "2001:db8:42::2",
"prefix_length": 64,
"version": 6,
"primary": false,
"gateway": "2001:db8:42::1",
"reverse_dns": null
}
],
"billing": {
"billing_cycle": "monthly",
"price": {
"amount": 790,
"currency": "EUR"
},
"next_due_date": "2026-11-08",
"renewal": "invoice"
},
"created_at": "2026-10-08T00:00:00Z",
"firewall": {
"enabled": true,
"rules_count": 3
}
}
Essayer avec votre clé
Votre clé reste dans ce navigateur et n’est envoyée qu’à api.corcelink.fr.
Démarrer un VPS
/v1/compute/vps/{vps_id}/startPermission : vps:write
Démarre un VPS arrêté.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
not_foundRessource introuvableinvalid_stateAction impossible dans l’état actuelservice_not_activeService inactifoperation_in_progressOpération déjà en coursresource_busyModification en coursservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/start" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/start",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/start", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52GMJVCY89C",
"type": "vps.start",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
}
Redémarrer un VPS
/v1/compute/vps/{vps_id}/rebootPermission : vps:write
Redémarre proprement le système.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
not_foundRessource introuvableinvalid_stateAction impossible dans l’état actuelservice_not_activeService inactifoperation_in_progressOpération déjà en coursresource_busyModification en coursservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reboot" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reboot",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reboot", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52GMJVCY89C",
"type": "vps.reboot",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
}
Arrêter un VPS
/v1/compute/vps/{vps_id}/shutdownPermission : vps:write
Demande au système de s’éteindre proprement.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
not_foundRessource introuvableinvalid_stateAction impossible dans l’état actuelservice_not_activeService inactifoperation_in_progressOpération déjà en coursresource_busyModification en coursservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/shutdown" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/shutdown",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/shutdown", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52GMJVCY89C",
"type": "vps.shutdown",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
}
Forcer l’arrêt d’un VPS
/v1/compute/vps/{vps_id}/stopPermission : vps:write
Coupe le VPS immédiatement, comme un débranchement. À réserver à un système qui ne répond plus.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
not_foundRessource introuvableinvalid_stateAction impossible dans l’état actuelservice_not_activeService inactifoperation_in_progressOpération déjà en coursresource_busyModification en coursservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/stop" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/stop",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/stop", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52GMJVCY89C",
"type": "vps.stop",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
}
Lire les mesures d’un VPS
/v1/compute/vps/{vps_id}/metricsPermission : vps:read
Processeur, mémoire, réseau et disque sur la période choisie.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
Paramètres de requête
| Champ | Type | Description |
|---|---|---|
period | texte | Valeurs : 1h, 24h, 7d, 30d. Par défaut : "24h". |
Réponse 200
| Champ | Type | Description |
|---|---|---|
period | texte | Période demandée. Valeurs : 1h, 24h, 7d, 30d. |
interval_seconds | entier | Écart entre deux points. Exemple : 1200. |
cpu | objet | Processeur, en pourcentage. |
cpu.unit | texte | Unité des valeurs. Exemple : "percent". |
cpu.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
cpu.current | nombre | Dernière valeur. |
cpu.peak | nombre | Plus haute valeur de la période. |
memory | objet | Mémoire utilisée, en octets. |
memory.unit | texte | Unité des valeurs. Exemple : "percent". |
memory.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
memory.current | nombre | Dernière valeur. |
memory.peak | nombre | Plus haute valeur de la période. |
network_in | objet | Trafic entrant, en octets par seconde. |
network_in.unit | texte | Unité des valeurs. Exemple : "percent". |
network_in.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
network_in.current | nombre | Dernière valeur. |
network_in.peak | nombre | Plus haute valeur de la période. |
network_out | objet | Trafic sortant, en octets par seconde. |
network_out.unit | texte | Unité des valeurs. Exemple : "percent". |
network_out.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
network_out.current | nombre | Dernière valeur. |
network_out.peak | nombre | Plus haute valeur de la période. |
disk_read | objet | Lecture disque, en octets par seconde. |
disk_read.unit | texte | Unité des valeurs. Exemple : "percent". |
disk_read.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
disk_read.current | nombre | Dernière valeur. |
disk_read.peak | nombre | Plus haute valeur de la période. |
disk_write | objet | Écriture disque, en octets par seconde. |
disk_write.unit | texte | Unité des valeurs. Exemple : "percent". |
disk_write.points | liste de liste de nombre | Couples [horodatage Unix, valeur]. |
disk_write.current | nombre | Dernière valeur. |
disk_write.peak | nombre | Plus haute valeur de la période. |
Erreurs
invalid_parameterParamètre invalidenot_foundRessource introuvableoperation_in_progressOpération déjà en coursservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/metrics" \
-H "Authorization: Bearer $CORCELINK_API_KEY"
import os, uuid, requests
r = requests.get(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/metrics",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/metrics", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}` },
});
console.log(res.status, await res.json());
Réponse 200
{
"period": "1h",
"interval_seconds": 60,
"cpu": {
"unit": "percent",
"points": [
[
1793088000,
5
],
[
1793088060,
5.1
],
[
1793088120,
5.2
]
],
"current": 11.9,
"peak": 11.9
},
"memory": {
"unit": "bytes",
"points": [
[
1793088000,
1200000000
],
[
1793088060,
1201000000
],
[
1793088120,
1202000000
]
],
"current": 1269000000,
"peak": 1269000000
},
"network_in": {
"unit": "bytes_per_second",
"points": [
[
1793088000,
1000
],
[
1793088060,
1001
],
[
1793088120,
1002
]
],
"current": 1069,
"peak": 1069
},
"network_out": {
"unit": "bytes_per_second",
"points": [
[
1793088000,
500
],
[
1793088060,
501
],
[
1793088120,
502
]
],
"current": 569,
"peak": 569
},
"disk_read": {
"unit": "bytes_per_second",
"points": [
[
1793088000,
10
],
[
1793088060,
10
],
[
1793088120,
10
]
],
"current": 10,
"peak": 10
},
"disk_write": {
"unit": "bytes_per_second",
"points": [
[
1793088000,
20
],
[
1793088060,
21
],
[
1793088120,
22
]
],
"current": 89,
"peak": 89
}
}
Essayer avec votre clé
Votre clé reste dans ce navigateur et n’est envoyée qu’à api.corcelink.fr.
Lire le journal d’un VPS
/v1/compute/vps/{vps_id}/eventsPermission : vps:read
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
Paramètres de requête
| Champ | Type | Description |
|---|---|---|
limit | entier | Nombre d’éléments par page (1 à 100) Par défaut : 20. De 1 à 100. |
cursor | texte | Curseur renvoyé par la page précédente (`next_cursor`) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
data | liste de objet | |
data[].id | texte | Identifiant de l’événement. Exemple : "evt-9c1d2e". |
data[].occurred_at | texte | Date de création. |
data[].type | texte | Type d’événement. Exemple : "firewall.rule_created". |
data[].description | texte | Libellé, dans la langue demandée. Exemple : "Règle ajoutée : Web (80, 443)". |
data[].actor | texte | Origine : vous (espace client), api ou la plateforme. Valeurs : you, api, platform. |
data[].result | texte | Résultat. Valeurs : succeeded, failed, running, sent. |
has_more | booléen | |
next_cursor | texte ou null |
Erreurs
not_foundRessource introuvableinvalid_cursorCurseur invalide- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/events" \
-H "Authorization: Bearer $CORCELINK_API_KEY"
import os, uuid, requests
r = requests.get(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/events",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/events", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}` },
});
console.log(res.status, await res.json());
Réponse 200
{
"data": [
{
"id": "evt-f1cd7da4dc",
"occurred_at": "2026-10-27T17:03:37Z",
"type": "vps.stop",
"description": "Arrêt forcé",
"actor": "api",
"result": "sent"
},
{
"id": "evt-5aeaa59752",
"occurred_at": "2026-10-27T17:03:37Z",
"type": "vps.reboot",
"description": "Redémarrage",
"actor": "api",
"result": "sent"
}
],
"has_more": false,
"next_cursor": null
}
Essayer avec votre clé
Votre clé reste dans ce navigateur et n’est envoyée qu’à api.corcelink.fr.
Réinstaller un VPS
/v1/compute/vps/{vps_id}/reinstallPermission : vps:write
Installe un système neuf. Toutes les données du disque sont effacées. L’adresse IP, les règles de pare-feu, le reverse DNS et les réseaux privés sont conservés. Le nouveau mot de passe root est transmis par un lien à usage unique dans le résultat de l’opération.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
image_idobligatoire | texte | Exemple : "debian-13". |
ssh_keys | liste de texte | |
confirmobligatoire | booléen | Doit valoir true : confirme l’effacement des données. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
confirmation_requiredConfirmation requisevalidation_failedDonnées invalidesfeature_unavailableFonction non incluseoperation_in_progressOpération déjà en coursoperation_refusedOpération refuséerate_limitedTrop de requêtesservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reinstall" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"image_id": "debian-13", "confirm": true}'
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reinstall",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"image_id": "debian-13", "confirm": True},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reinstall", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json" },
body: JSON.stringify({"image_id": "debian-13", "confirm": true}),
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52H1H7DF75Q",
"type": "vps.reinstall",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null,
"result": {
"password_url": "https://secret.corcelink.fr/s/7Hq2mZ",
"password_expires_at": "2026-10-28T17:03:37Z"
}
}
Générer un nouveau mot de passe root
/v1/compute/vps/{vps_id}/reset-root-passwordPermission : vps:write
Le serveur redémarre pour appliquer le mot de passe, transmis par un lien à usage unique.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
operation | objet | |
operation.id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
operation.type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
operation.status | texte | État. Valeurs : pending, running, succeeded, failed. |
operation.resource | objet | Ressource concernée. |
operation.resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
operation.resource.id | texte | Exemple : "vps-7c2e4a91". |
operation.created_at | texte | Date de création. |
operation.started_at | texte ou null | Date de création. |
operation.completed_at | texte ou null | Date de création. |
operation.error | objet ou null | Erreur au format RFC 9457. |
operation.error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
operation.error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
operation.error.status | entier | Code HTTP. Exemple : 404. |
operation.error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
operation.error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
operation.error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
operation.error.errors | liste de objet | Erreurs de validation, champ par champ. |
operation.result | objet | Résultat propre à certaines opérations ; absent sinon. |
operation.result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
operation.result.password_expires_at | texte | Date de création. |
password_url | texte | Lien à usage unique vers le nouveau mot de passe. |
expires_at | texte | Date de création. |
Erreurs
operation_in_progressOpération déjà en coursoperation_refusedOpération refuséerate_limitedTrop de requêtesservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reset-root-password" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reset-root-password",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/reset-root-password", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"operation": {
"id": "op-01M5Z52H1QSPKJ7V",
"type": "vps.root_password_reset",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
},
"password_url": "https://secret.corcelink.fr/s/7Hq2mZ",
"expires_at": "2026-10-28T17:03:37Z"
}
Lire les clés SSH
/v1/compute/vps/{vps_id}/ssh-keysPermission : vps:read
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
Réponse 200
| Champ | Type | Description |
|---|---|---|
keys | liste de texte |
Erreurs
not_foundRessource introuvablefeature_unavailableFonction non incluse- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys" \
-H "Authorization: Bearer $CORCELINK_API_KEY"
import os, uuid, requests
r = requests.get(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}` },
});
console.log(res.status, await res.json());
Réponse 200
{
"keys": [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIQTyDmIFaLeIwZCdDPPmMFpgx2xZMu4kETFCE8Np0tA camille@studio-laurent"
]
}
Essayer avec votre clé
Votre clé reste dans ce navigateur et n’est envoyée qu’à api.corcelink.fr.
Remplacer les clés SSH
/v1/compute/vps/{vps_id}/ssh-keysPermission : vps:write
Les clés sont installées à la prochaine réinstallation.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
If-Match | texte | `ETag` reçu à la lecture : la modification est refusée (412) si la ressource a changé entre-temps. |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
keysobligatoire | liste de texte |
Réponse 200
| Champ | Type | Description |
|---|---|---|
keys | liste de texte |
Erreurs
validation_failedDonnées invalidesfeature_unavailableFonction non incluseprecondition_failedLa ressource a changéservice_not_activeService inactif- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X PUT "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"keys": ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK3m camille@studio-laurent"]}'
import os, uuid, requests
r = requests.put(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"keys": ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK3m camille@studio-laurent"]},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/ssh-keys", {
method: "PUT",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json" },
body: JSON.stringify({"keys": ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK3m camille@studio-laurent"]}),
});
console.log(res.status, await res.json());
Réponse 200
{
"keys": [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIQTyDmIFaLeIwZCdDPPmMFpgx2xZMu4kETFCE8Np0tA camille@studio-laurent"
]
}
Ouvrir la console
/v1/compute/vps/{vps_id}/consolePermission : vps:write
Renvoie une adresse à usage unique, valable une minute, vers la console du serveur.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
Réponse 201
| Champ | Type | Description |
|---|---|---|
url | texte | Lien de la console, à ouvrir dans un navigateur : il ne sert qu’une fois. |
expires_at | texte | Expiration du lien (une minute après sa création). |
Erreurs
not_foundRessource introuvableinvalid_stateAction impossible dans l’état actuelservice_not_activeService inactifrate_limitedTrop de requêtesservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/console" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/console",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/console", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 201
{
"url": "https://kvm.corcelink.fr/s/a0e0gF6YyvihXba253YrB1rtWDBpjWvJRZUPrnoG",
"expires_at": "2026-10-27T17:04:40Z"
}
Démarrer sur une image ISO
/v1/compute/vps/{vps_id}/iso/bootPermission : vps:write
Le serveur est arrêté, puis redémarré sur l’image.
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
image_idobligatoire | texte | Exemple : "debian-13-netinst". |
wipe_disk | booléen | Par défaut : false. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
validation_failedDonnées invalidesfeature_unavailableFonction non incluseoperation_in_progressOpération déjà en coursoperation_refusedOpération refusée- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/boot" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"image_id": "debian-13-netinst"}'
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/boot",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"image_id": "debian-13-netinst"},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/boot", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json" },
body: JSON.stringify({"image_id": "debian-13-netinst"}),
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52H1W0JM4S3",
"type": "vps.iso_boot",
"status": "running",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": null,
"error": null
}
Éjecter l’image ISO
/v1/compute/vps/{vps_id}/iso/ejectPermission : vps:write
Paramètres de chemin
| Champ | Type | Description |
|---|---|---|
vps_idobligatoire | texte | Format : ^vps-[0-9a-f]{8}$. Exemple : "vps-7c2e4a91". |
En-têtes
| Champ | Type | Description |
|---|---|---|
Idempotency-Key | texte | Clé unique (UUID conseillé) : une requête répétée avec la même clé renvoie la même réponse, sans refaire l’opération. 255 caractères au plus. |
Réponse 202
| Champ | Type | Description |
|---|---|---|
id | texte | Identifiant de l’opération. Exemple : "op-01JB7X5R1M". |
type | texte | Nature de l’opération (vps.reboot…). Exemple : "vps.reinstall". |
status | texte | État. Valeurs : pending, running, succeeded, failed. |
resource | objet | Ressource concernée. |
resource.type | texte | Valeurs : vps, private_network, dedicated_server, web_hosting, email, domain, other, backup. |
resource.id | texte | Exemple : "vps-7c2e4a91". |
created_at | texte | Date de création. |
started_at | texte ou null | Date de création. |
completed_at | texte ou null | Date de création. |
error | objet ou null | Erreur au format RFC 9457. |
error.type | texte | Adresse de la page de documentation de l’erreur. Exemple : "https://docs.corcelink.fr/api/erreurs/#vps_not_found". |
error.title | texte | Résumé de l’erreur, dans la langue demandée. Exemple : "VPS introuvable". |
error.status | entier | Code HTTP. Exemple : 404. |
error.code | texte | Code stable, à utiliser dans vos programmes. Exemple : "vps_not_found". |
error.detail | texte | Explication et correction possible. Exemple : "Aucun VPS vps-7c2e4a91 sur ce compte.". |
error.request_id | texte | Identifiant de la requête, à citer au support. Exemple : "req-01JB7X4M2Q9KZ3". |
error.errors | liste de objet | Erreurs de validation, champ par champ. |
error.errors[].field | texte | Exemple : "rules[0].ports". |
error.errors[].code | texte | Exemple : "invalid_port". |
error.errors[].message | texte | Exemple : "Port invalide : utilisez 443, 80,443 ou 8000:8100.". |
result | objet | Résultat propre à certaines opérations ; absent sinon. |
result.password_url | texte | Lien à usage unique vers le nouveau mot de passe root (réinstallation). |
result.password_expires_at | texte | Date de création. |
Erreurs
feature_unavailableFonction non incluseservice_not_activeService inactifservice_unavailableService momentanément indisponible- Et les erreurs communes :
missing_api_key,invalid_api_key,missing_scope,ip_not_allowed,rate_limited.
curl -X POST "https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/eject" \
-H "Authorization: Bearer $CORCELINK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
import os, uuid, requests
r = requests.post(
"https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/eject",
headers={"Authorization": f"Bearer {os.environ['CORCELINK_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.corcelink.fr/v1/compute/vps/vps-7c2e4a91/iso/eject", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CORCELINK_API_KEY}`, "Idempotency-Key": crypto.randomUUID() },
});
console.log(res.status, await res.json());
Réponse 202
{
"id": "op-01M5Z52H1Y8XMS8S",
"type": "vps.iso_eject",
"status": "succeeded",
"resource": {
"type": "vps",
"id": "vps-7c2e4a91"
},
"created_at": "2026-10-27T17:03:37Z",
"started_at": "2026-10-27T17:03:37Z",
"completed_at": "2026-10-27T17:03:37Z",
"error": null
}