# General Translation Platform: Create a Project URL: https://generaltranslation.com/en-GB/docs/platform/openapi/reference/project/create-project.mdx --- title: Create a Project description: Create a General Translation Project with an Organisation API key. API reference for Create a Project. method: POST --- Creates a Project in the Organisation associated with an Organisation API key. Returns the new Project's ID, name, Organisation ID, and normalised default locale. ## Overview [#overview] ```http POST https://api2.gtx.dev/v2/projects ``` **Permission** `org:projects:create` ยท **Rate limit** Default (200/min) Use this endpoint to provision Projects through your own automation. Project API keys cannot create other Projects. ## How it works [#how-it-works] * Authentication requires an Organisation API key (`gtx-org-`) with `org:projects:create` permission. * The Organisation is derived from the API key. Do not send an Organisation or Project ID in the request. * The Project name is trimmed and validated. The default locale is validated and normalised, for example, `en-us` to `en-US`. * The new Project inherits the Organisation's locale allowlist and AI provider settings. Existing Organisation members are linked to it. * The request returns `409` without creating a Project when the Organisation has reached its Project limit. ## Request [#request] ### Headers | Header | Description | Required | | ---------------- | ------------------------------------------------ | -------- | | `x-gt-api-key` | Organisation API key with `org:projects:create`. | Yes | | `gt-api-version` | API version. | No | Do not send `x-gt-project-id`. This endpoint derives the Organisation from the API key and creates a new Project within it. ### Body **Content type** `application/json` | Field | Description | Type | Optional | Default | | --------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ------- | | `name` | Project name (1โ€“64 characters). Supports letters, numbers, spaces, dashes, underscores, apostrophes, parentheses and full stops. | `string` | No | โ€” | | `defaultLocale` | Source locale for the Project. | `string` | No | โ€” | Unknown fields are rejected. ## Response [#response] **Status** `201 Created` | Field | Description | Type | | ----------------------- | ----------------------------------------- | -------- | | `project.id` | New Project ID. | `string` | | `project.name` | Validated Project name. | `string` | | `project.orgId` | Organisation ID derived from the API key. | `string` | | `project.defaultLocale` | Normalised source locale. | `string` | ```json title="Response" { "project": { "id": "prj_...", "name": "Customer Portal", "orgId": "org_...", "defaultLocale": "en-US" } } ``` ## Errors [#errors] | Status | Cause | | ------ | --------------------------------------------------------------------------------------------------- | | `400` | Invalid request body, Project name, or default locale. | | `401` | Missing or invalid Organisation API key. | | `403` | The key is not an Organisation key, lacks `org:projects:create`, or is blocked by an access policy. | | `409` | The Organisation has reached its Project limit. | | `429` | Rate limit exceeded. | | `500` | The Project could not be created. | ## Example [#example] ```bash curl -X POST https://api2.gtx.dev/v2/projects \ -H "x-gt-api-key: gtx-org-..." \ -H "gt-api-version: 2026-03-06.v1" \ -H "Content-Type: application/json" \ -d '{ "name": "Customer Portal", "defaultLocale": "en-US" }' ```