> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Languages

> Didit supports 54 languages for the verification UI and email notifications, with browser auto-detection and a single source of truth for accepted codes.

This page is the **live source of truth** for the language codes accepted by the Didit API. It is referenced from the OpenAPI specs for both the session-level `language` field and the `contact_details.email_lang` field on [Create Session](/sessions-api/create-session).

## Where these codes apply

The same set of codes is accepted everywhere a language is configurable:

| Field                        | Where                                        | What it controls                                                             |
| ---------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------- |
| `language`                   | `POST /v3/session/` body                     | Language of the **verification UI** shown to the end user.                   |
| `contact_details.email_lang` | `POST /v3/session/` body                     | Language of **email notifications** (invitation, reminders, status updates). |
| `email_language`             | `PATCH /v3/session/{id}/update-status/` body | Language of the status-change email when `send_email=true`.                  |

If the user's browser locale is supported, the verification UI auto-detects it; otherwise it falls back to **English** (`en`). If you do not pass `email_lang`, emails fall back to `en`. All values are case-sensitive — use the exact codes from the table below.

## All supported languages

The set below mirrors the keys of `EMAIL_TRANSLATIONS` in the service — both the verification UI and email-localization layers read from the same dictionary, so any code in this table works for both `language` and `email_lang`.

| #  | Language              | Native name        | Code    | Direction |
| -- | --------------------- | ------------------ | ------- | --------- |
| 1  | Albanian              | Shqip              | `sq`    | LTR       |
| 2  | Arabic                | العربية            | `ar`    | **RTL**   |
| 3  | Armenian              | Հայերեն            | `hy`    | LTR       |
| 4  | Bengali               | বাংলা              | `bn`    | LTR       |
| 5  | Bosnian               | Bosanski           | `bs`    | LTR       |
| 6  | Bulgarian             | Български          | `bg`    | LTR       |
| 7  | Catalan               | Català             | `ca`    | LTR       |
| 8  | Chinese (generic)     | 中文                 | `zh`    | LTR       |
| 9  | Chinese (Simplified)  | 简体中文               | `zh-CN` | LTR       |
| 10 | Chinese (Traditional) | 繁體中文               | `zh-TW` | LTR       |
| 11 | Croatian              | Hrvatski           | `hr`    | LTR       |
| 12 | Czech                 | Čeština            | `cs`    | LTR       |
| 13 | Danish                | Dansk              | `da`    | LTR       |
| 14 | Dutch                 | Nederlands         | `nl`    | LTR       |
| 15 | English               | English            | `en`    | LTR       |
| 16 | Estonian              | Eesti              | `et`    | LTR       |
| 17 | Finnish               | Suomi              | `fi`    | LTR       |
| 18 | French                | Français           | `fr`    | LTR       |
| 19 | Georgian              | ქართული            | `ka`    | LTR       |
| 20 | German                | Deutsch            | `de`    | LTR       |
| 21 | Greek                 | Ελληνικά           | `el`    | LTR       |
| 22 | Hebrew                | עברית              | `he`    | **RTL**   |
| 23 | Hindi                 | हिन्दी             | `hi`    | LTR       |
| 24 | Hungarian             | Magyar             | `hu`    | LTR       |
| 25 | Indonesian            | Bahasa Indonesia   | `id`    | LTR       |
| 26 | Italian               | Italiano           | `it`    | LTR       |
| 27 | Japanese              | 日本語                | `ja`    | LTR       |
| 28 | Kazakh                | Қазақ тілі         | `kk`    | LTR       |
| 29 | Korean                | 한국어                | `ko`    | LTR       |
| 30 | Kyrgyz                | Кыргызча           | `ky`    | LTR       |
| 31 | Latvian               | Latviešu           | `lv`    | LTR       |
| 32 | Lithuanian            | Lietuvių           | `lt`    | LTR       |
| 33 | Macedonian            | Македонски         | `mk`    | LTR       |
| 34 | Malay                 | Bahasa Melayu      | `ms`    | LTR       |
| 35 | Mongolian             | Монгол             | `mn`    | LTR       |
| 36 | Montenegrin           | Crnogorski         | `cnr`   | LTR       |
| 37 | Norwegian             | Norsk              | `no`    | LTR       |
| 38 | Persian (Farsi)       | فارسی              | `fa`    | **RTL**   |
| 39 | Polish                | Polski             | `pl`    | LTR       |
| 40 | Portuguese            | Português          | `pt`    | LTR       |
| 41 | Portuguese (Brazil)   | Português (Brasil) | `pt-BR` | LTR       |
| 42 | Romanian              | Română             | `ro`    | LTR       |
| 43 | Russian               | Русский            | `ru`    | LTR       |
| 44 | Serbian               | Српски / Srpski    | `sr`    | LTR       |
| 45 | Slovak                | Slovenčina         | `sk`    | LTR       |
| 46 | Slovenian             | Slovenščina        | `sl`    | LTR       |
| 47 | Somali                | Soomaali           | `so`    | LTR       |
| 48 | Spanish               | Español            | `es`    | LTR       |
| 49 | Swedish               | Svenska            | `sv`    | LTR       |
| 50 | Thai                  | ไทย                | `th`    | LTR       |
| 51 | Turkish               | Türkçe             | `tr`    | LTR       |
| 52 | Ukrainian             | Українська         | `uk`    | LTR       |
| 53 | Uzbek                 | Oʻzbekcha          | `uz`    | LTR       |
| 54 | Vietnamese            | Tiếng Việt         | `vi`    | LTR       |

Three languages render right-to-left in both the verification UI and emails: **Arabic** (`ar`), **Hebrew** (`he`), and **Persian / Farsi** (`fa`).

<Tip>
  The validators that accept these codes are `BaseSessionSerializer.validate_language` and `ContactDetailsSerializer.validate_email_lang`. Both raise `400` with the message `"Invalid language. Supported languages are: ..."` (or `"Invalid email language..."`) for any value outside the table above.
</Tip>

## Picking a language for a session

The verification UI **auto-detects** the user's browser language. When the browser language is one of the codes above, the interface and emails are served in that language. Otherwise the UI falls back to **English**.

You can also set the language explicitly when creating a session:

```json theme={null}
{
  "workflow_id": "your-workflow-id",
  "language": "es",
  "contact_details": {
    "email": "user@example.com",
    "send_notification_emails": true,
    "email_lang": "es"
  }
}
```

If you only set `language`, emails still default to English unless you also pass `email_lang`. Conversely, setting `email_lang` does not change the in-browser UI language — the two fields are independent.

## Country variants

Three codes are **regional variants** that you should prefer when you know your audience:

* `pt-BR` — Brazilian Portuguese (use instead of generic `pt` for Brazilian users).
* `zh-CN` — Simplified Chinese (mainland China, Singapore).
* `zh-TW` — Traditional Chinese (Taiwan, Hong Kong, Macau).

The generic codes `pt` and `zh` are also accepted; the variant you choose only affects vocabulary and characters, not the underlying verification logic.

## Requesting a new language

If you need a language that is not listed above, contact our support team. We can typically add a new language to `EMAIL_TRANSLATIONS` and the verification UI **within 24 hours** of your request — once added, this page is updated and the new code is immediately accepted by the API.

Contact us via [WhatsApp](https://wa.me/+19544659728) or your usual support channel to request additional language support.

## Related references

<CardGroup cols={2}>
  <Card title="Create Session API" icon="play" href="/sessions-api/create-session">
    Where `language` and `email_lang` are passed when starting a verification.
  </Card>

  <Card title="Update Session Status" icon="pen-to-square" href="/sessions-api/update-status">
    Sets `email_language` for the status-change notification email.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/integration/webhooks">
    Receive verification results — payloads include the chosen `language`.
  </Card>

  <Card title="Data Models" icon="database" href="/reference/data-models">
    Canonical schema for sessions, contact details, and statuses.
  </Card>
</CardGroup>
