# General Translation Platform: Create or update a tag URL: https://generaltranslation.com/en-US/docs/platform/openapi/reference/project/upsert-tag.mdx --- title: "Create or update a tag" description: "Create or upsert a tag that points at a set of file versions. API reference for Create or update a tag." method: POST full: true _openapi: method: POST route: /v2/project/tags/create toc: [] structuredData: headings: [] contents: - content: Create or upsert a tag that points at a set of file versions. --- ## `POST https://api.gtx.dev/v2/project/tags/create` Create or upsert a tag that points at a set of file versions. Authentication: send an API key as a bearer token in the `Authorization: Bearer ` header. ### Parameters - `gt-api-version` (header, "2025-01-01.v0" | "2025-11-03.v1" | "2026-02-18.v1" | "2026-03-06.v1", optional): API version. Defaults to the earliest supported version. Latest is `2026-03-06.v1`. - `gt-project-id` (header, string, optional): Target project ID. Required when authenticating with an organization API key. ### Request body Body (`application/json`, object): - `tagId` (string, required) - `files` (object[], required) - `fileId` (string, required) - `versionId` (string, required) - `branchId` (string, required) - `message` (string) ### Responses **200**: Created or updated tag. Response body (`application/json`, object): - `tag` (object) - `id` (string) - `tagId` (string) - `message` (string) - `createdAt` (string) - `updatedAt` (string) **400**: The request was invalid. Response body (`application/json`, object): - `error` (string): Human-readable error message. **401**: Missing or invalid API key. Response body (`application/json`, object): - `error` (string): Human-readable error message. **403**: The API key lacks the required permission, or the action is not allowed on the current plan. Response body (`application/json`, object): - `error` (string): Human-readable error message. The complete OpenAPI 3.1 spec is available at https://generaltranslation.com/openapi.yaml.