# General Translation Platform: Créer ou mettre à jour un tag URL: https://generaltranslation.com/fr/docs/platform/openapi/reference/project/upsert-tag.mdx --- title: Créer ou mettre à jour un tag description: Créez ou mettez à jour un tag sur des versions de fichiers General Translation pour le suivi des releases. Référence de l’API pour Créer ou mettre à jour un tag. method: POST --- Crée un tag sur un ensemble de versions de fichiers, ou remplace un tag existant portant le même ID. Utilisez des tags pour marquer les versions de fichiers qui font partie d’une release. ## Vue d’ensemble [#overview] ```http POST https://api2.gtx.dev/v2/project/tags/create ``` **Autorisation** `project:files:write` · **Limite de requêtes** Par défaut (200/min) Associez un tag nommé à des versions de fichiers spécifiques. Pour résoudre d’abord les références de fichiers, utilisez [Obtenir les informations sur le fichier](/docs/platform/openapi/reference/files/file-info). ## Fonctionnement [#how-it-works] * Chaque référence de fichier (`fileId` + `versionId` + `branchId`) est résolue en un fichier source interne. Un tag existant avec le même `tagId` est remplacé. * Si aucune des références n’est résolue en un fichier source, la requête renvoie `400`. Si certaines références sont résolues en un fichier source et que d'autres non, la requête renvoie `400` et liste les identifiants de fichier non résolus. * La réponse renvoie le tag enregistré, y compris ses horodatages. ## Requête [#request] ### En-têtes | En-tête | Description | Obligatoire | | ----------------- | ------------------------------------------------------------------------- | ----------- | | `x-gt-api-key` | Clé API de Project ou d’Organization. | Oui | | `x-gt-project-id` | ID du projet. Obligatoire lors de l’utilisation d’une clé d’Organization. | Non | ### Corps de la requête **Type de contenu** `application/json` | Champ | Description | Type | Facultatif | Par défaut | | ----------------- | --------------------------------------------------------- | ---------- | ---------- | ---------- | | `tagId` | Identifiant du tag (1 à 255 caractères). | `string` | Non | — | | [`files`](#files) | Versions de fichiers à taguer ; au moins une est requise. | `object[]` | Non | — | | `message` | Message facultatif du tag (255 caractères max.). | `string` | Oui | — | #### `files` [#files] **Type** `object[]` · **Obligatoire** Chaque élément correspond à une version de fichier. Aucune valeur ne peut être vide : | Champ | Description | Type | Facultatif | Par défaut | | ----------- | ------------------------------------------ | -------- | ---------- | ---------- | | `fileId` | Identifiant stable du fichier. | `string` | Non | — | | `versionId` | Identifiant de version. | `string` | Non | — | | `branchId` | Branche à laquelle le fichier est associé. | `string` | Non | — | ## Réponse [#response] **État** `200 OK` ```json title="Response" { "tag": { "id": "tag_...", "tagId": "v1.2.0", "message": "Release 1.2.0", "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" } } ``` ## Erreurs [#errors] | État | Cause | | ----- | -------------------------------------------------------------------------------------------------------------------------------- | | `400` | Corps de la requête invalide, aucun fichier source correspondant ou certaines références de fichiers n’ont pas pu être résolues. | | `401` | Clé API manquante ou invalide. | | `403` | La clé API ne dispose pas de `project:files:write`. | | `429` | Limite de requêtes dépassée. | ## Exemple [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/tags/create \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "tagId": "v1.2.0", "message": "Release 1.2.0", "files": [ { "fileId": "file_...", "versionId": "ver_...", "branchId": "br_..." } ] }' ```