Référence
Projets
Lister, lire et créer des projets avec l'API Host. Champs de l'objet projet et erreurs.
Un projet correspond à un site. Il a ses variables, ses domaines et son historique de déploiements.
GET /v9/projects
Liste les projets de l’organisation. Avec une clé de projet, la liste ne contient que ce projet. La liste compte 100 projets au plus.
curl https://api.host.hgdc.ch/v9/projects \ -H "Authorization: Bearer $VERCEL_TOKEN"Réponse 200 :
{ "projects": [ { "id": "j97d3k2m8x1q4p6s7t9v0w2y5z", "name": "site-atelier", "accountId": "k57a1b2c3d4e5f6g7h8j9k0m1n", "framework": "astro", "rootDirectory": null, "buildCommand": null, "installCommand": null, "outputDirectory": null, "nodeVersion": "24.x", "createdAt": 1760259600000, "updatedAt": 1760259600000 } ], "pagination": { "count": 1, "next": null, "prev": null }}Le même endpoint répond aussi sous /v10/projects.
GET /v9/projects/:idOrName
Lit un projet, par son identifiant ou son nom, sans tenir compte de la casse.
curl https://api.host.hgdc.ch/v9/projects/site-atelier \ -H "Authorization: Bearer $VERCEL_TOKEN"Réponse 200 : l’objet projet, décrit ci-dessous. Les routes /v9 et /v10 renvoient la même réponse.
| Erreur | Code | Cause |
|---|---|---|
404 | not_found | Aucun projet de ce nom dans l’organisation, ou projet hors de la portée de la clé |
POST /v11/projects
Crée un projet. Tu peux aussi t’en passer : le premier déploiement sur un nom inconnu crée le projet.
curl -X POST https://api.host.hgdc.ch/v11/projects \ -H "Authorization: Bearer $VERCEL_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"site-atelier","framework":"astro"}'| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du projet, 100 caractères au plus. Il devient le nom dans l’URL, en minuscules |
framework | string ou null | Non | nextjs, astro, vite, sveltekit, nuxt, tanstack-start ou react-router. Une autre valeur, ou null, enregistre un site sans framework |
Réponse 200 : l’objet projet créé.
| Erreur | Code | Cause |
|---|---|---|
400 | bad_request | Nom absent ou trop long |
403 | forbidden | La clé est limitée à un projet : elle ne crée rien |
409 | conflict | Un projet porte déjà ce nom |
L’objet projet
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant du projet. C’est la valeur de VERCEL_PROJECT_ID |
name | string | Nom du projet, dans l’URL de la console |
accountId | string | Identifiant de l’organisation propriétaire |
framework | string ou null | Framework enregistré, ou null pour un site sans framework |
rootDirectory | string ou null | Dossier de l’app dans le dépôt, pour un monorepo |
buildCommand | string ou null | Commande de build imposée. null : celle détectée par vercel build |
installCommand | string ou null | Commande d’installation imposée |
outputDirectory | string ou null | Dossier de sortie imposé |
nodeVersion | "22.x" ou "24.x" | Version de Node.js du build |
createdAt | number | Date de création, en millisecondes depuis l’époque Unix |
updatedAt | number | Même valeur que createdAt |
link | object | Présent seulement pour un projet relié à GitHub : type (github), repo (propriétaire/dépôt) et productionBranch |
alias | object[] | Adresse de production du projet : domain (<projet>.hgdc.cloud), target (PRODUCTION), environment (production), createdAt, deployment (null). Les domaines personnalisés n’y figurent pas |
deploymentExpiration | object | Durées de conservation des déploiements, en jours. Voir PATCH plus bas sur cette page |
targets.production | object | Présent une fois une production en ligne : le déploiement servi, avec id, url, alias (["<projet>.hgdc.cloud"]), aliasAssigned (moment de la mise en ligne), readyState, createdAt, readyAt et meta. targets vaut {} avant la première production |
Pour un projet dont le framework n’est pas reconnu, framework vaut null.
PATCH /v9/projects/:id
Change les durées de conservation des déploiements du projet. Portée host:write. :id est l’identifiant du projet. Une clé posée dans un dépôt reçoit 403.
Le corps ne peut contenir que deploymentExpiration. Tout autre champ répond 400.
curl -X PATCH https://api.host.hgdc.ch/v9/projects/j97d3k2m8x1q4p6s7t9v0w2y5z \ -H "Authorization: Bearer $VERCEL_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "deploymentExpiration": { "expirationDays": 90, "expirationDaysProduction": 180, "expirationDaysCanceled": 30, "expirationDaysErrored": 90, "deploymentsToKeep": 10 } }'| Champ | Type | Description |
|---|---|---|
expirationDays | number ou null | Durée des previews, en jours |
expirationDaysProduction | number ou null | Durée des anciennes productions, en jours |
expirationDaysCanceled | number ou null | Durée des déploiements annulés, en jours |
expirationDaysErrored | number ou null | Durée des déploiements en erreur, en jours |
deploymentsToKeep | 10 | Nombre de déploiements gardés quoi qu’il arrive. Seule valeur acceptée : 10 |
Chaque durée est un nombre entier de jours, de 1 à 3650. null veut dire ne jamais effacer. Les règles de conservation sont décrites sur Déploiements.
| Statut | Cause |
|---|---|
400 | Valeur hors de la plage, ou champ autre que deploymentExpiration dans le corps |
403 | Clé de projet posée dans un dépôt : elle ne peut pas changer ces durées |
Voir aussi
- Déploiements : créer un déploiement pour ce projet.
- Erreurs : la liste des codes.
Cette page t'a aidé ?
Merci, c'est noté.