---
title: Create locale
slug: cms-13/api/create-locale
docTags: 
createdAt: 2026-08-28T15:24:16.532Z
---

{
  "id": "qMoHKwKNAtPatwSp3GwWX",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "/_cms/v1/locales",
    "servers": [
      {
        "url": "/_cms/v1/locales",
        "description": "Optimizely CMS API"
      }
    ],
    "name": "Create locale",
    "description": "Create a new locale.",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        },
        {
          "kind": "optional",
          "name": "Prefer",
          "type": "array",
          "example": "[\"return=representation\"]",
          "description": "<p>Indicates client preference for the response content as per IETF RFC7240. Currently only supports 'return=representation' which can be used to indicate a preference to receive a representation of the resource that has been altered in the response.</p>",
          "schema": [],
          "itemType": "string",
          "customType": "string[]"
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "required",
          "name": "body",
          "type": "object",
          "description": "The locale that should be created.",
          "customType": "Locale",
          "schema": [
            {
              "name": "key",
              "kind": "required",
              "type": "string",
              "description": "<p>The unique identifier (key) of the resource. This is the IETF BCP-47 language tag (e.g., \"en\", \"en-US\", \"sv-SE\").</p>",
              "minLength": 1
            },
            {
              "name": "displayName",
              "kind": "required",
              "type": "string",
              "description": "The display name of this locale.",
              "minLength": 1,
              "maxLength": 255
            },
            {
              "name": "isEnabled",
              "kind": "optional",
              "type": "boolean",
              "description": "Indicates whether this locale is enabled and can be used to create content."
            },
            {
              "name": "routeSegment",
              "kind": "required",
              "type": "string",
              "description": "A string that represents the segment that should be used when routing or generate routes to the current locale",
              "minLength": 1,
              "maxLength": 255
            },
            {
              "name": "sortOrder",
              "kind": "optional",
              "type": "integer<int32>",
              "description": "A value that is used when sorting locales.",
              "format": "int32"
            },
            {
              "name": "accessRights",
              "kind": "optional",
              "type": "array",
              "nullable": true,
              "description": "<p>The access rights assigned to this locale that defines who can create content in this locale. If no access rights are assigned, everyone will be able to create content in this locale. An empty array means that no user will be allowed to create or change content in this locale.</p>",
              "modelRef": "#/components/schemas/SecurityIdentity",
              "customType": "SecurityIdentity[]",
              "schema": [
                {
                  "name": "name",
                  "kind": "required",
                  "type": "string",
                  "description": "<p>The unique name of the user, role or application that this identifier references.</p>",
                  "minLength": 1,
                  "maxLength": 255
                },
                {
                  "name": "type",
                  "kind": "optional",
                  "type": "string<user | role | application>",
                  "description": "The type of the security entity that this identifier references. Will default to 'role' if not specified.",
                  "enum": [
                    "user",
                    "role",
                    "application"
                  ]
                }
              ]
            }
          ],
          "modelRef": "#/components/schemas/Locale",
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "apiAuth",
          "name": "apiAuth",
          "kind": "optional",
          "type": "oauth2",
          "description": "Use this scheme to generate an access token that can be used to access the API.",
          "oauth2Flows": {
            "clientCredentials": {
              "tokenUrl": "/_cms/v1/oauth/token",
              "scopes": {
                "api:admin": "Grants full administrative access to the API"
              }
            }
          },
          "requiredScopes": [
            "api:admin"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "201",
        "description": "Created",
        "jsonExample": "",
        "isExpanded": true,
        "headers": [
          {
            "kind": "optional",
            "name": "ETag",
            "type": "string",
            "description": "<p>The RFC7232 ETag header field in a response provides the current entity-tag for the resource. An entity-tag is an opaque identifier for different versions of a resource over time, regardless whether multiple versions are valid at the same time.</p>"
          },
          {
            "kind": "optional",
            "name": "Last-Modified",
            "type": "string<http-date>",
            "description": "The date and time at which the resource was last modified.",
            "format": "http-date"
          },
          {
            "kind": "optional",
            "name": "Location",
            "type": "string",
            "description": "<p>Indicates the URL of the newly-created resource.</p>"
          },
          {
            "kind": "optional",
            "name": "Preference-Applied",
            "description": ""
          }
        ],
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "Represents a locale that can be used for content.",
            "customType": "Locale",
            "schema": [
              {
                "name": "key",
                "kind": "required",
                "type": "string",
                "description": "<p>The unique identifier (key) of the resource. This is the IETF BCP-47 language tag (e.g., \"en\", \"en-US\", \"sv-SE\").</p>",
                "minLength": 1
              },
              {
                "name": "displayName",
                "kind": "required",
                "type": "string",
                "description": "The display name of this locale.",
                "minLength": 1,
                "maxLength": 255
              },
              {
                "name": "isEnabled",
                "kind": "optional",
                "type": "boolean",
                "description": "Indicates whether this locale is enabled and can be used to create content."
              },
              {
                "name": "routeSegment",
                "kind": "required",
                "type": "string",
                "description": "A string that represents the segment that should be used when routing or generate routes to the current locale",
                "minLength": 1,
                "maxLength": 255
              },
              {
                "name": "sortOrder",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "A value that is used when sorting locales.",
                "format": "int32"
              },
              {
                "name": "accessRights",
                "kind": "optional",
                "type": "array",
                "nullable": true,
                "description": "<p>The access rights assigned to this locale that defines who can create content in this locale. If no access rights are assigned, everyone will be able to create content in this locale. An empty array means that no user will be allowed to create or change content in this locale.</p>",
                "modelRef": "#/components/schemas/SecurityIdentity",
                "customType": "SecurityIdentity[]",
                "schema": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>The unique name of the user, role or application that this identifier references.</p>",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  {
                    "name": "type",
                    "kind": "optional",
                    "type": "string<user | role | application>",
                    "description": "The type of the security entity that this identifier references. Will default to 'role' if not specified.",
                    "enum": [
                      "user",
                      "role",
                      "application"
                    ]
                  }
                ]
              },
              {
                "name": "created",
                "kind": "optional",
                "type": "string<date-time>",
                "readOnly": true,
                "description": "A timestamp indicating when this locale was first created.",
                "format": "date-time"
              },
              {
                "name": "createdBy",
                "kind": "optional",
                "type": "string",
                "readOnly": true,
                "description": "The username of the user that created this locale."
              },
              {
                "name": "lastModified",
                "kind": "optional",
                "type": "string<date-time>",
                "readOnly": true,
                "description": "",
                "format": "date-time"
              },
              {
                "name": "lastModifiedBy",
                "kind": "optional",
                "type": "string",
                "readOnly": true,
                "description": "The username of the user that last modified this locale."
              }
            ],
            "modelRef": "#/components/schemas/Locale",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "Bad Request",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "401",
        "description": "Unauthorized",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "403",
        "description": "Forbidden",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "409",
        "description": "Conflict",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "500",
        "description": "Internal Server Error",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "VaPs9dvknhFewJv2YQK4Q",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url /_cms/v1/locales \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data '{\n     \"key\": \"\",\n     \"displayName\": \"\",\n     \"routeSegment\": \"\",\n     \"accessRights\": [\n     {\n     \"name\": \"\"\n     }\n     ]\n     }'"
        },
        {
          "id": "xeZ--dw3tSzYL0Xk5zhhc",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"key\": \"\",\n   \"displayName\": \"\",\n   \"routeSegment\": \"\",\n   \"accessRights\": [\n      {\n         \"name\": \"\"\n      }\n   ]\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"/_cms/v1/locales\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "fB47caDWdYWAtkWbuRejW",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/_cms/v1/locales\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"key\": \"\",\n   \"displayName\": \"\",\n   \"routeSegment\": \"\",\n   \"accessRights\": [\n      {\n         \"name\": \"\"\n      }\n   ]\n})\n\nresponse = http.request(request)\nputs response.read_body\n"
        },
        {
          "id": "igTjomLMETlf-yVpSGCoH",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"/_cms/v1/locales\"\n\npayload = json.dumps({\n   \"key\": \"\",\n   \"displayName\": \"\",\n   \"routeSegment\": \"\",\n   \"accessRights\": [\n      {\n         \"name\": \"\"\n      }\n   ]\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "VaPs9dvknhFewJv2YQK4Q"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-201",
          "language": "201",
          "code": "// Created\n{\n  \"key\": \"\",\n  \"displayName\": \"\",\n  \"isEnabled\": false,\n  \"routeSegment\": \"\",\n  \"sortOrder\": \"\",\n  \"accessRights\": [\n    {\n      \"name\": \"\",\n      \"type\": \"\"\n    }\n  ],\n  \"created\": \"\",\n  \"createdBy\": \"\",\n  \"lastModified\": \"\",\n  \"lastModifiedBy\": \"\"\n}"
        },
        {
          "id": "response-1-400",
          "language": "400",
          "code": "// Bad Request\n"
        },
        {
          "id": "response-2-401",
          "language": "401",
          "code": "// Unauthorized\n"
        },
        {
          "id": "response-3-403",
          "language": "403",
          "code": "// Forbidden\n"
        },
        {
          "id": "response-4-409",
          "language": "409",
          "code": "// Conflict\n"
        },
        {
          "id": "response-5-500",
          "language": "500",
          "code": "// Internal Server Error\n"
        }
      ],
      "selectedLanguageId": "response-0-201"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}