Référence de l'API
Créer un déploiement
Crée un déploiement à partir d'une liste de fichiers.
POST
/v13/deploymentsSi le projet n'existe pas encore, il est créé sous ce nom. C'est l'appel central de vercel deploy.
Déroulement
- Envoyez la liste des fichiers avec leur empreinte SHA1.
- Si des fichiers manquent, l'API répond
400 missing_filesavec leurs empreintes. Envoyez-les par /v2/files. - Renvoyez exactement la même requête. Elle crée le déploiement.
Les petits fichiers peuvent aussi être inclus directement dans le corps (data), sans passer par /v2/files, dans la limite de 20 Mo au total.
Requête
En-têtes
AuthorizationstringrequisBearer ah_…, votre clé d'API.
Corps
namestring- Nom du projet. Requis si
projectest absent. projectstring- Identifiant ou nom du projet. Prioritaire sur
name. target"production" | nullproductionpour la production. Toute autre valeur crée une preview.filesobject[]requis- Fichiers du déploiement, 15 000 au plus. Chaque élément est l'une de ces deux formes :
{ file, sha, size }: chemin relatif, empreinte SHA1 et taille en octets d'un fichier envoyé par/v2/files;{ file, data, encoding }: contenu inclus,encodingvalantutf-8(par défaut) oubase64.
mode(permissions Unix) est accepté et conservé. Un dossier vide ({ file, mode }) est ignoré. projectSettings.frameworkstring | null- Framework, enregistré si le déploiement crée le projet.
gitMetadataobjectcommitRef(branche),commitShaetcommitMessage, affichés dans la console.metaRecord<string, string>- Métadonnées libres.
githubCommitRef,githubCommitShaetgithubCommitMessageremplacentgitMetadataquand il manque.
curl -X POST https://api.host.hgdc.ch/v13/deployments \
-H "Authorization: Bearer $SMARTFLOW_HOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"site-atelier","target":"production","files":[{"file":"index.html","data":"<h1>Bonjour</h1>"}]}'Réponse
200
{
"id": "jd7f2k9m3x8q1p5s6t4v0w7y2z",
"uid": "jd7f2k9m3x8q1p5s6t4v0w7y2z",
"url": "site-atelier-h3k9x2.hgdc.cloud",
"name": "site-atelier",
"projectId": "j97d3k2m8x1q4p6s7t9v0w2y5z",
"ownerId": "k57a1b2c3d4e5f6g7h8j9k0m1n",
"readyState": "QUEUED",
"status": "QUEUED",
"target": "production",
"type": "LAMBDAS",
"createdAt": 1760259600000,
"buildingAt": 1760259601000,
"ready": 1760259604000,
"alias": ["site-atelier-h3k9x2.hgdc.cloud"],
"aliasAssigned": true,
"aliasError": null,
"errorMessage": null,
"inspectorUrl": "https://host.hgdc.ch/atelier/site-atelier/deployments/jd7f2k9m3x8q1p5s6t4v0w7y2z",
"meta": {
"branch": "main",
"commitSha": "4c3e2f1a9b8d7c6e5f4a3b2c1d0e9f8a7b6c5d4e",
"commitMessage": "Nouvelle page Tarifs"
},
"creator": { "uid": "u1a2b3c4d5" }
}Le déploiement naît le plus souvent à l'état QUEUED. Suivez-le avec Lire un déploiement ou Suivre les logs. Les champs sont décrits sur Lire un déploiement.
Erreurs
| Statut | Code | Quand |
|---|---|---|
| 400 | bad_request | Corps invalide, ou nom de projet absent. Le message nomme le champ. |
| 400 | missing_files | Des fichiers sont à envoyer avant de créer le déploiement. |
| 403 | forbidden | La clé est limitée à un autre projet. |
| 409 | deployment_closed | Le build CI auquel ces fichiers étaient destinés a été annulé ou a échoué. |
| 413 | payload_too_large | Les fichiers inclus dépassent 20 Mo au total. |
Toutes les routes peuvent aussi répondre 403 forbidden, 429 rate_limited et 500 internal_server_error. Voir Erreurs.