Développeurs
API REST et serveur MCP
Catalogue et prix en CAD, disponibilité, serveurs GPU, clés SSH, sauvegardes, crédit et budget sont accessibles par programme : vos scripts utilisent l’API REST (opérations listées ci-dessous), vos agents IA se connectent au serveur MCP. Les clés d’accès se créent dans la console.
Démarrer en 3 étapes
1
Créez un compte
Inscrivez-vous en ligne. Ajoutez du crédit quand vous êtes prêt à déployer.
Créer un compte2
Créez une clé API
Dans la console, page Paramètres, section Clés API. La clé complète n’est affichée qu’une fois : conservez-la dans un gestionnaire de secrets.
Créer une clé API3
Faites votre premier appel
Listez le catalogue avec vos prix en dollars canadiens et la disponibilité en direct.
curl "https://gpucloud.ca/api/v1/gpu" -H "Authorization: Bearer $GPUCLOUD_API_KEY"Remplacez $GPUCLOUD_API_KEY par votre clé (préfixe gpu_).
Disponibilité publique, sans clé
Pour vérifier si un modèle GPU peut être déployé maintenant. Réponse mise en cache 15 secondes, CORS ouvert.
curl "https://gpucloud.ca/api/v1/availability"Authentification
- Chaque requête porte l’en-tête Authorization: Bearer suivi de votre clé API REST (préfixe gpu_).
- Les clés sont créées depuis la console seulement, jamais par l’API : une clé ne peut pas créer ni supprimer d’autres clés.
- Une clé expire après 90 jours. Seul son préfixe reste visible ; la clé est stockée sous forme d’empreinte SHA-256.
- Deux niveaux : accès complet, ou lecture seule (GET uniquement ; toute autre méthode répond 401).
- Les clés MCP (préfixe gpc_mcp_) sont refusées par l’API REST et réservées au serveur MCP.
Les requêtes d’écriture (POST, PUT, DELETE) doivent aussi envoyer l’en-tête Origin: https://gpucloud.ca, sinon elles répondent 403. Les exemples ci-dessous l’incluent.
Endpoints
URL de base : https://gpucloud.ca/api. Les opérations ci-dessous sont générées depuis la spécification OpenAPI publiée.
Catalogue, prix et disponibilité
GET/api/v1/gpuLister les plans GPUClé API, 60 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/v1/gpu" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"Réponse
{
"data": [
{
"id": "gpu-l40",
"name": "NVIDIA L40",
"gpu": "1x NVIDIA L40 (48 GB GDDR6)",
"gpuModel": "NVIDIA L40",
"gpuCount": 1,
"spot": false,
"hourlyOnly": false,
"specs": {
"vcores": 28,
"ram": 58,
"storage": 100,
"localStorage": 725,
"storageType": "NVMe"
},
"pricing": {
"hourly": 1.57,
"monthly": 1146.1,
"annual": 1146.1,
"currency": "CAD"
},
"priceOnRequest": false,
"available": true,
"purchasable": true,
"autoProvisioning": true,
"eligibility": "deployable"
},
{
"id": "gpu-l40-x2",
"name": "NVIDIA L40 × 2",
"gpu": "2x NVIDIA L40 (48 GB GDDR6)",
"gpuModel": "NVIDIA L40",
"gpuCount": 2,
"spot": false,
"hourlyOnly": false,
"specs": {
"vcores": 60,
"ram": 116,
"storage": 100,
"localStorage": 1550,
"storageType": "NVMe"
},
"pricing": {
"hourly": 3.12,
"monthly": 2277.6,
"annual": 2277.6,
"currency": "CAD"
},
"priceOnRequest": false,
"available": true,
"purchasable": true,
"autoProvisioning": true,
"eligibility": "deployable"
}
]
}GET/api/v1/availabilityDisponibilité publique des GPUPublic, 60 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/v1/availability"Réponse
{
"data": {
"region": "canada-montreal",
"updatedAt": "2026-09-28T12:00:00.000Z",
"models": [
{
"slug": "h100",
"name": "NVIDIA H100 PCIe",
"sizes": [
{
"id": "gpu-h100",
"gpuCount": 1,
"spot": false,
"available": true,
"priceOnRequest": false
},
{
"id": "gpu-h100-x2",
"gpuCount": 2,
"spot": false,
"available": false,
"priceOnRequest": false
}
]
},
{
"slug": "h200",
"name": "NVIDIA H200 SXM",
"sizes": [
{
"id": "gpu-h200-sxm-x8",
"gpuCount": 8,
"spot": false,
"available": false,
"priceOnRequest": false
}
]
}
]
}
}GET/api/v1/catalogCatalogue public des prix des GPUPublic, 60 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/v1/catalog"GET/api/v1/stockDisponibilité par modèle et par taille (même vue que /v1/availability).Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/v1/stock" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/v1/regionsRégions servies.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/v1/regions" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/v1/flavorsTailles de machine du catalogue.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/v1/flavors" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/v1/imagesImages de système d’exploitation.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/v1/images" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/v1/environmentsEnvironnements où vos serveurs sont déployés.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/v1/environments" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/servers/deploy-quoteCe que coûtera un déploiement pour votre compte (prix et crédit requis), sans rien créer.Clé API, 60 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/servers/deploy-quote?productId=gpu-l40" -H "Authorization: Bearer $GPUCLOUD_API_KEY"Serveurs : créer, lister, démarrer, arrêter, supprimer
GET/api/serversLister les serveursClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"Réponse
{
"data": [
{
"id": "clxyz123456",
"name": "gpu-abc12345-1719000000000",
"status": "ACTIVE",
"gpu": "L40",
"specs": {
"vcores": 28,
"ram": 58,
"storage": 100
},
"ipv4": "1.2.3.4",
"region": "canada-montreal",
"monthlyCost": 1146.1,
"createdAt": "2026-06-24T12:00:00.000Z"
}
]
}POST/api/serversCréer un serveurClé API, 5 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"productId":"gpu-l40","sshKeyId":"clxyz123456","name":"my-ml-server","region":"canada-montreal"}'Réponse
{
"data": {
"id": "clxyz123456",
"name": "gpu-abc12345-1719000000000",
"status": "PROVISIONING",
"gpu": "L40"
}
}GET/api/servers/{id}Obtenir un serveurClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"DELETE/api/servers/{id}Supprimer un serveurClé API, 5 requêtes par minute
Requête
curl -X DELETE "https://gpucloud.ca/api/servers/<id>" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca"POST/api/servers/{id}/actionsAction sur un serveurClé API, 5 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers/<id>/actions" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"action":"reboot"}'PUT/api/servers/{id}/threshold-actionChoisir l’action au seuilClé API, 10 requêtes par minute
Requête
curl -X PUT "https://gpucloud.ca/api/servers/<id>/threshold-action" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"onFundsExhausted":"DELETE"}'GET/api/servers/{id}/metricsMétriques d’un serveurClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/metrics" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/servers/{id}/firewallLister les règles de pare-feuClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/firewall" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/servers/{id}/firewallAjouter une règle de pare-feuClé API, 5 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers/<id>/firewall" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"direction":"ingress","protocol":"tcp","portRangeMin":8080,"portRangeMax":8080,"remoteIpPrefix":"0.0.0.0/0"}'DELETE/api/servers/{id}/firewallSupprimer une règle de pare-feuClé API, 5 requêtes par minute
Requête
curl -X DELETE "https://gpucloud.ca/api/servers/<id>/firewall" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"ruleId":123}'GET/api/servers/{id}/backupsLister les sauvegardesClé API, 60 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/backups" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/servers/{id}/backupsSauvegarder maintenantClé API, 5 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers/<id>/backups" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca"PUT/api/servers/{id}/backupsOption de sauvegardeClé API, 10 requêtes par minute
Requête
curl -X PUT "https://gpucloud.ca/api/servers/<id>/backups" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"hourLocal":3,"retention":7,"expectedMonthlyPriceCad":14.99}'DELETE/api/servers/{id}/backups/{backupId}Supprimer une sauvegardeClé API, 10 requêtes par minute
Requête
curl -X DELETE "https://gpucloud.ca/api/servers/<id>/backups/<backupId>" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca"GET/api/servers/{id}/backups/{backupId}/restorePrix de la restaurationClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/backups/<backupId>/restore" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/servers/{id}/backups/{backupId}/restoreRestaurer vers un nouveau serveurClé API, 3 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers/<id>/backups/<backupId>/restore" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"name":"train-restored"}'GET/api/servers/{id}/migrateChangement de GPU : optionsClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/migrate" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/servers/{id}/migrateMigrer vers un autre GPUClé API, 3 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/servers/<id>/migrate" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"targetProductId":"gpu-a100-pcie","source":"fresh","expectedHourlyRateCad":2.09}'GET/api/reservationsLister les réservationsClé API, 60 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/reservations" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/reservationsRéserver un GPUClé API, 10 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/reservations" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"productId":"gpu-h100-x8","sshKeyId":"clxyz123456","maxHourlyCad":25,"validityDays":7,"acceptAlternative":false,"consent":true,"consentVersion":"2026-10-10","consentLang":"en"}'DELETE/api/reservations/{reservationId}Annuler une réservationClé API, 20 requêtes par minute
Requête
curl -X DELETE "https://gpucloud.ca/api/reservations/<reservationId>" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca"POST/api/reservations/{reservationId}/renewRenouveler une réservationClé API, 20 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/reservations/<reservationId>/renew" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"validityDays":7}'GET/api/servers/{id}/eventsJournal d’activité d’un serveur.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/events" -H "Authorization: Bearer $GPUCLOUD_API_KEY"Clés SSH
GET/api/settings/ssh-keysLister les clés SSHClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/settings/ssh-keys" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"POST/api/settings/ssh-keysAjouter une clé SSHClé API, 5 requêtes par minute
Requête
curl -X POST "https://gpucloud.ca/api/settings/ssh-keys" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca" \
-H "Content-Type: application/json" \
-d '{"name":"my-laptop","publicKey":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExample user@laptop"}'DELETE/api/settings/ssh-keysSupprimer une clé SSHClé API, 5 requêtes par minute
Requête
curl -X DELETE "https://gpucloud.ca/api/settings/ssh-keys?id=<id>" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY" \
-H "Origin: https://gpucloud.ca"Facturation et budget
GET/api/creditsSolde de crédit et transactions (summary=1 pour le solde seul).Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/credits" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/servers/{id}/usageFacturation heure par heure d’un serveur.Clé API, 30 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/usage" -H "Authorization: Bearer $GPUCLOUD_API_KEY"GET/api/servers/{id}/budgetLimite mensuelle d’un serveur et son coût du mois.Clé API, 60 requêtes par minute
Lecture seule, pas encore dans la spécification OpenAPI.
Requête
curl -X GET "https://gpucloud.ca/api/servers/<id>/budget" -H "Authorization: Bearer $GPUCLOUD_API_KEY"Clés API
GET/api/v1/api-keysLister les clés APIClé API, 30 requêtes par minute
Requête
curl -X GET "https://gpucloud.ca/api/v1/api-keys" \
-H "Authorization: Bearer $GPUCLOUD_API_KEY"Réponse
{
"data": [
{
"id": "clxyz123456",
"name": "CI/CD Pipeline",
"prefix": "gpu_k_abc1",
"lastUsedAt": "2026-06-24T10:00:00.000Z",
"createdAt": "2026-06-01T12:00:00.000Z"
}
]
}La création et la révocation des clés API se font uniquement depuis la console, connecté à votre compte : une clé API ne peut ni créer ni supprimer de clé. Gérer mes clés API dans la console
Limites de débit
Chaque opération est limitée par adresse IP et par minute. Au-delà, la réponse est 429 Too many requests : attendez la minute suivante avant de réessayer. La limite de chaque opération est indiquée à côté d’elle ci-dessus.
Codes d’erreur
- 400
- Requête invalide (paramètre manquant ou hors limites).
- 401
- Clé absente (NO_API_KEY) ou invalide, expirée, révoquée, ou en lecture seule sur une écriture (INVALID_API_KEY). La réponse donne le lien pour créer un compte et une clé.
- 402
- Crédit insuffisant, carte requise (PAYMENT_REQUIRED) ou plafond de budget atteint (BUDGET_CAP_REACHED). La réponse donne le lien direct pour payer ou relever le plafond.
- 403
- Requête d’écriture sans en-tête Origin autorisé.
- 404
- Ressource introuvable ou qui n’appartient pas à votre compte.
- 409
- Conflit, par exemple un modèle GPU indisponible en ce moment.
- 429
- Limite de débit atteinte.
- 500
- Erreur interne : réessayez plus tard ou écrivez au support.
Les erreurs sont du JSON avec au moins un champ error (code ou message), parfois accompagné d’un champ message et de détails.
Compte ou paiement : quoi faire, avec le lien
Quand une requête échoue pour une raison de compte ou de paiement, la réponse contient un objet accountAction : un code stable, un message clair (en français si votre en-tête Accept-Language le demande, sinon en anglais), l’action à faire avec son lien absolu, tous les liens utiles et, quand il est connu, le montant minimum en dollars canadiens pour couvrir une heure du GPU demandé. Ajoutez votre carte et des crédits au lien donné, relancez la même requête : vous aurez votre GPU.
- NO_API_KEY
- 401 : aucune clé envoyée. Créez un compte, puis une clé API dans la console.
- INVALID_API_KEY
- 401 : clé invalide, expirée, révoquée ou sans la permission requise. Créez une nouvelle clé.
- PAYMENT_REQUIRED
- 402 : crédit insuffisant, aucune carte enregistrée ou carte refusée. Ajoutez une carte et des crédits ; minimumCad indique le prix d’une heure du GPU demandé.
- BUDGET_CAP_REACHED
- 402 : limite de budget du compte ou du serveur, ou plafond d’une clé MCP, atteint. Rien n’est facturé ; le lien mène au réglage du plafond.
Compatibilité : le champ error garde sa valeur d’avant (une chaîne, par exemple Unauthorized ou INSUFFICIENT_CREDITS), comme message et les détails existants ; accountAction est ajouté à côté. Lisez accountAction.code pour le code stable.
Agents IA (MCP) : la réponse HTTP reste 200, comme le veut le protocole MCP, et le refus revient dans le résultat d’outil en erreur (isError). structuredContent.error.httpStatus vaut 402, structuredContent.error.accountAction est le même objet, et le texte du message contient le lien, lisible par l’IA.
Exemple de réponse 402 :
{
"error": "INSUFFICIENT_CREDITS",
"message": "Payment required. You need a paid order or at least enough credits for 1 hour of usage.",
"requiredCredits": 1.57,
"currentBalance": 0,
"accountAction": {
"code": "PAYMENT_REQUIRED",
"message": "Paiement requis. Ajoutez votre carte et des crédits ici, puis relancez la même requête : vous aurez votre GPU. https://gpucloud.ca/fr/console/billing?addCredits=25 Il faut au moins 1.57 $ CAD pour couvrir une heure de ce GPU (achat de crédits minimum : 25 $ CAD).",
"action": {
"label": "Ajouter une carte et des crédits",
"url": "https://gpucloud.ca/fr/console/billing?addCredits=25"
},
"links": {
"signup": "https://gpucloud.ca/fr/auth/register",
"login": "https://gpucloud.ca/fr/auth/login",
"apiKeys": "https://gpucloud.ca/fr/console/settings#api-keys",
"billing": "https://gpucloud.ca/fr/console/billing",
"addCredits": "https://gpucloud.ca/fr/console/billing?addCredits=25",
"paymentMethod": "https://gpucloud.ca/fr/console/billing?addCredits=25#payment-method",
"budget": "https://gpucloud.ca/fr/console/billing#budget-limit",
"documentation": "https://gpucloud.ca/fr/developers#errors"
},
"minimumCad": 1.57,
"minimumTopupCad": 25
}
}Exemple de résultat d’outil MCP (structuredContent) :
{
"isError": true,
"structuredContent": {
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Paiement requis. Ajoutez votre carte et des crédits ici, puis relancez la même requête : vous aurez votre GPU. https://gpucloud.ca/fr/console/billing?addCredits=25 Il faut au moins 1.57 $ CAD pour couvrir une heure de ce GPU (achat de crédits minimum : 25 $ CAD).",
"details": {
"requiredCredits": 1.57
},
"httpStatus": 402,
"accountAction": {
"code": "PAYMENT_REQUIRED",
"message": "Paiement requis. Ajoutez votre carte et des crédits ici, puis relancez la même requête : vous aurez votre GPU. https://gpucloud.ca/fr/console/billing?addCredits=25 Il faut au moins 1.57 $ CAD pour couvrir une heure de ce GPU (achat de crédits minimum : 25 $ CAD).",
"action": {
"label": "Ajouter une carte et des crédits",
"url": "https://gpucloud.ca/fr/console/billing?addCredits=25"
},
"links": {
"signup": "https://gpucloud.ca/fr/auth/register",
"login": "https://gpucloud.ca/fr/auth/login",
"apiKeys": "https://gpucloud.ca/fr/console/ai",
"billing": "https://gpucloud.ca/fr/console/billing",
"addCredits": "https://gpucloud.ca/fr/console/billing?addCredits=25",
"paymentMethod": "https://gpucloud.ca/fr/console/billing?addCredits=25#payment-method",
"budget": "https://gpucloud.ca/fr/console/billing#budget-limit",
"documentation": "https://gpucloud.ca/fr/developers#errors"
},
"minimumCad": 1.57,
"minimumTopupCad": 25
}
}
}
}Crédit, budget et plafonds
- La facturation à l’heure est prélevée sur votre solde de crédit prépayé en dollars canadiens ; un déploiement à l’heure exige au moins une heure de crédit.
- GET /api/servers/deploy-quote indique le prix et le crédit requis avant de créer un serveur.
- Un serveur en hibernation libère son GPU mais conserve son disque principal : il coûte alors de 0,02 $ à 0,19 $ par heure (environ 14,60 $ à 138,70 $ par mois), selon la machine. Supprimez-le pour ne plus rien payer. GET /api/servers/{id} donne ce coût sous hibernationFee, et l’action hibernate le renvoie avec le message à afficher.
- Vous pouvez fixer une limite de budget mensuelle (et quotidienne) pour le compte : une fois atteinte, les serveurs à l’heure en marche sont mis en hibernation sans perte de données et les nouveaux déploiements sont refusés.
- Chaque serveur à l’heure peut aussi avoir sa propre limite mensuelle, lisible par GET /api/servers/{id}/budget.
- Les clés MCP ont leurs propres plafonds, choisis à leur création (voir la section Agents IA).
Agents IA (MCP)
GPU Cloud expose un serveur Model Context Protocol : un agent IA (Claude, Cursor, VS Code ou tout client MCP) peut consulter le catalogue, préparer un devis, déployer et gérer vos serveurs GPU, dans les limites que vous fixez.
Endpoint (Streamable HTTP, POST)
https://gpucloud.ca/api/mcpAuthentification : Authorization: Bearer suivi d’une clé MCP (préfixe gpc_mcp_). Les clés API REST y sont refusées.
Créer une clé MCP dans la consoleEssayer sans clé
Sans clé, le serveur MCP répond à initialize, tools/list et ping, et les outils de catalogue (gpucloud_list_products, gpucloud_get_product, gpucloud_get_stock, gpucloud_list_regions, gpucloud_list_images, gpucloud_list_templates) donnent les prix en CAD, la disponibilité en direct, les images système et les modèles en un clic, comme l’API publique. Les autres outils demandent un compte gratuit et une clé MCP.
curl -s https://gpucloud.ca/api/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "MCP-Protocol-Version: 2025-11-25" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"gpucloud_list_products","arguments":{}}}'Configuration des clients
Claude Code
Dans un terminal
claude mcp add --transport http gpucloud https://gpucloud.ca/api/mcp --header "Authorization: Bearer gpc_mcp_YOUR_KEY"Cursor
Fichier ~/.cursor/mcp.json
{
"mcpServers": {
"gpucloud": {
"url": "https://gpucloud.ca/api/mcp",
"headers": {
"Authorization": "Bearer gpc_mcp_YOUR_KEY"
}
}
}
}VS Code
Fichier <project>/.vscode/mcp.json
{
"servers": {
"gpucloud": {
"type": "http",
"url": "https://gpucloud.ca/api/mcp",
"headers": {
"Authorization": "Bearer gpc_mcp_YOUR_KEY"
}
}
}
}Claude Desktop
Fichier claude_desktop_config.json
{
"mcpServers": {
"gpucloud": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://gpucloud.ca/api/mcp",
"--header",
"Authorization: Bearer ${GPUCLOUD_KEY}"
],
"env": {
"GPUCLOUD_KEY": "gpc_mcp_YOUR_KEY"
}
}
}
}Streamable HTTP
Tout client MCP qui accepte une URL et des en-têtes
{
"mcpServers": {
"gpucloud": {
"type": "streamable-http",
"url": "https://gpucloud.ca/api/mcp",
"headers": {
"Authorization": "Bearer gpc_mcp_YOUR_KEY"
}
}
}
}Sécurité et dépenses
- Chaque clé MCP a ses permissions : lancer des serveurs, supprimer, débiter la carte enregistrée.
- Plafonds par clé : tarif horaire maximal par serveur, coût horaire total, nombre de serveurs simultanés, dépense mensuelle, montant maximal par paiement et total mensuel des paiements.
- Plafond atteint : les nouveaux lancements sont refusés, et selon votre choix les serveurs créés par la clé sont arrêtés.
- Toute action qui coûte de l’argent se fait en deux temps : un devis renvoie le prix et un jeton à usage unique valable 10 minutes, puis l’agent confirme après votre accord.
- Les tentatives d’authentification ratées sont limitées par adresse IP.
Outils disponibles
Le serveur MCP expose 63 outils, listés ici depuis leur définition.
Catalogue et stock
gpucloud_list_products: Lister les produits GPUgpucloud_get_product: Obtenir un produit GPUgpucloud_get_stock: Stock des GPUgpucloud_list_regions: Lister les régionsgpucloud_list_images: Lister les images de système d’exploitationgpucloud_list_templates: Lister les modèles en un clic
Serveurs
gpucloud_list_servers: Lister les serveursgpucloud_get_server: Obtenir un serveurgpucloud_quote_server: Estimer le prix d’un serveurgpucloud_create_server: Lancer un serveur (dépense)gpucloud_start_server: Démarrer un serveur (dépense)gpucloud_restore_server: Restaurer un serveur en hibernation (dépense)gpucloud_stop_server: Arrêter un serveurgpucloud_reboot_server: Redémarrer un serveurgpucloud_hibernate_server: Mettre un serveur en hibernationgpucloud_delete_server: Supprimer un serveur (irréversible)gpucloud_cancel_server: Annuler un serveur (irréversible)gpucloud_renew_server: Renouveler un serveur prépayé (débite la carte)gpucloud_set_server_threshold_action: Choisir l’action au seuilgpucloud_get_console_url: Ouvrir la console Webgpucloud_get_server_metrics: Métriques du serveurgpucloud_list_server_volumes: Volumes du serveurgpucloud_list_server_snapshots: Instantanés du serveurgpucloud_list_firewall_rules: Règles de pare-feugpucloud_add_firewall_rule: Ajouter une règle de pare-feugpucloud_delete_firewall_rule: Supprimer une règle de pare-feugpucloud_reserve_server: Réserver un GPU (lancement automatique au retour du stock)gpucloud_list_reservations: Lister les réservations de GPUgpucloud_cancel_reservation: Annuler une réservation de GPUgpucloud_list_monthly_rentals: Lister les locations de H100 au moisgpucloud_list_contracts: Lister les locations de H100 au mois (ancien nom)gpucloud_list_server_backups: Sauvegardes du serveurgpucloud_create_server_backup: Sauvegarder un serveur maintenantgpucloud_restore_server_backup: Restaurer une sauvegarde vers un nouveau serveur (dépense)gpucloud_set_server_backup_policy: Option de sauvegarde d’un serveurgpucloud_migrate_server: Migrer un serveur vers un autre GPU (dépense)
Clés SSH
gpucloud_list_ssh_keys: Lister les clés SSHgpucloud_add_ssh_key: Ajouter une clé SSH publiquegpucloud_generate_ssh_key: Générer une paire de clés SSHgpucloud_delete_ssh_key: Supprimer une clé SSH
Facturation, budget et commandes
gpucloud_get_server_usage: Historique de facturation du serveurgpucloud_get_balance: Solde de créditsgpucloud_list_transactions: Transactions de créditsgpucloud_list_invoices: Lister les facturesgpucloud_get_invoice: Obtenir une facturegpucloud_topup_credits: Acheter des crédits (débite la carte)gpucloud_get_payment_method: Carte de paiement enregistréegpucloud_add_payment_method: Ajouter une carte de paiement (lien vers la console)gpucloud_get_auto_reload: Réglages de la recharge automatiquegpucloud_set_auto_reload: Modifier la recharge automatiquegpucloud_list_orders: Lister les commandesgpucloud_get_order: Obtenir une commandegpucloud_quote_order: Estimer le prix d’une commandegpucloud_create_order: Passer une commande (débite la carte)gpucloud_get_budget: Limite de budget du comptegpucloud_set_budget: Fixer la limite de budget du compte
Compte et support
gpucloud_whoami: Qui suis-jegpucloud_get_profile: Obtenir le profilgpucloud_update_profile: Modifier le profilgpucloud_list_tickets: Lister les billets de soutiengpucloud_create_ticket: Ouvrir un billet de soutiengpucloud_reply_ticket: Répondre à un billet de soutiengpucloud_set_notices: Activer ou désactiver les avis de GPU Cloud
Fichiers de découverte
- https://gpucloud.ca/api/v1/openapi.json : Spécification OpenAPI 3 de l’API REST
- https://gpucloud.ca/.well-known/mcp.json : Métadonnées du serveur MCP
- https://gpucloud.ca/.well-known/mcp/server-card.json : Fiche du serveur MCP (outils et schémas)
- https://gpucloud.ca/llms.txt : Résumé du site pour les modèles de langage
- https://gpucloud.ca/api/v1/availability : Disponibilité publique en JSON
Prix indicatifs, révisés chaque heure selon le marché et le taux de change.