Référence de l'API

Créer un déploiement

Crée un déploiement à partir d'une liste de fichiers.

POST/v13/deployments

Si le projet n'existe pas encore, il est créé sous ce nom. C'est l'appel central de vercel deploy.

Déroulement

  1. Envoyez la liste des fichiers avec leur empreinte SHA1.
  2. Si des fichiers manquent, l'API répond 400 missing_files avec leurs empreintes. Envoyez-les par /v2/files.
  3. 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

Authorizationstringrequis
Bearer ah_…, votre clé d'API.

Corps

namestring
Nom du projet. Requis si project est absent.
projectstring
Identifiant ou nom du projet. Prioritaire sur name.
target"production" | null
production pour 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, encoding valant utf-8 (par défaut) ou base64.
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.
gitMetadataobject
commitRef (branche), commitSha et commitMessage, affichés dans la console.
metaRecord<string, string>
Métadonnées libres. githubCommitRef, githubCommitSha et githubCommitMessage remplacent gitMetadata quand 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

StatutCodeQuand
400bad_requestCorps invalide, ou nom de projet absent. Le message nomme le champ.
400missing_filesDes fichiers sont à envoyer avant de créer le déploiement.
403forbiddenLa clé est limitée à un autre projet.
409deployment_closedLe build CI auquel ces fichiers étaient destinés a été annulé ou a échoué.
413payload_too_largeLes 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.