---
title: "Add Custom Language"
method: POST
path: "/languages"
tags: ["Languages"]
---

# Add Custom Language

`POST /languages`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/languages`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/docs/languages/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `language` (Read and Write).

## Request body

- LanguageCreateForm
  - `name` string, required: Language name
  - `code` string, required: Custom language code
  - `localeCode` string, required: Custom language locale code
  - `textDirection` 'ltr' | 'rtl', required: Text direction in custom language. Available values: * 'ltr' — left-to-right * 'rtl' — right-to-left
  - `pluralCategoryNames` one,other | one,two,other | one,few,other | one,few,many,other | one,two,few,other | one,two,few,many,other | zero,one,other | zero,one,two,few,many,other | other, required: Array with category names
  - `threeLettersCode` string, required: Custom language 3 letters code __Format:__ ISO 6393 code
  - `twoLettersCode` string: Custom language 2 letters code __Format:__ ISO 6391 code
  - `dialectOf` string: Use if custom language is a dialect. Get `id` via [List Supported Languages](#operation/api.languages.getMany)

## Response `201`

Language was successfully created

- LanguageResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` Language, required: Class LanguageResponseModel
    - `id` string
    - `name` string
    - `editorCode` string: - alias of internal code
    - `twoLettersCode` string: alias of iso6391 code
    - `threeLettersCode` string: alias of iso6393 code
    - `locale` string
    - `androidCode` string
    - `bcp47Code` string
    - `osxCode` string
    - `osxLocale` string
    - `pluralCategoryNames` string[]: plural category names
    - `pluralRules` string: string with plural rules
    - `pluralExamples` string[]: plural examples array
    - `textDirection` 'ltr' | 'rtl'
    - `dialectOf` string, nullable

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `405`: Method Not Allowed

---

[API](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/revisions/dc68744c5384?raw)
