Aller au contenu

Tape un mot pour chercher dans les pages.

↑↓ Choisir↵ OuvrirÉchap Fermer
Ouvrir Host

Référence

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.

ErreurCodeCause
404not_foundAucun 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"}'
ChampTypeRequisDescription
namestringOuiNom du projet, 100 caractères au plus. Il devient le nom dans l’URL, en minuscules
frameworkstring ou nullNonnextjs, 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éé.

ErreurCodeCause
400bad_requestNom absent ou trop long
403forbiddenLa clé est limitée à un projet : elle ne crée rien
409conflictUn projet porte déjà ce nom

L’objet projet

ChampTypeDescription
idstringIdentifiant du projet. C’est la valeur de VERCEL_PROJECT_ID
namestringNom du projet, dans l’URL de la console
accountIdstringIdentifiant de l’organisation propriétaire
frameworkstring ou nullFramework enregistré, ou null pour un site sans framework
rootDirectorystring ou nullDossier de l’app dans le dépôt, pour un monorepo
buildCommandstring ou nullCommande de build imposée. null : celle détectée par vercel build
installCommandstring ou nullCommande d’installation imposée
outputDirectorystring ou nullDossier de sortie imposé
nodeVersion"22.x" ou "24.x"Version de Node.js du build
createdAtnumberDate de création, en millisecondes depuis l’époque Unix
updatedAtnumberMême valeur que createdAt
linkobjectPrésent seulement pour un projet relié à GitHub : type (github), repo (propriétaire/dépôt) et productionBranch
aliasobject[]Adresse de production du projet : domain (<projet>.hgdc.cloud), target (PRODUCTION), environment (production), createdAt, deployment (null). Les domaines personnalisés n’y figurent pas
deploymentExpirationobjectDurées de conservation des déploiements, en jours. Voir PATCH plus bas sur cette page
targets.productionobjectPré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
}
}'
ChampTypeDescription
expirationDaysnumber ou nullDurée des previews, en jours
expirationDaysProductionnumber ou nullDurée des anciennes productions, en jours
expirationDaysCancelednumber ou nullDurée des déploiements annulés, en jours
expirationDaysErrorednumber ou nullDurée des déploiements en erreur, en jours
deploymentsToKeep10Nombre 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.

StatutCause
400Valeur hors de la plage, ou champ autre que deploymentExpiration dans le corps
403Clé de projet posée dans un dépôt : elle ne peut pas changer ces durées

Voir aussi