Skip to main content
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.

Where these codes apply

The same set of codes is accepted everywhere a language is configurable:
FieldWhereWhat it controls
languagePOST /v3/session/ bodyLanguage of the verification UI shown to the end user.
contact_details.email_langPOST /v3/session/ bodyLanguage of email notifications (invitation, reminders, status updates).
email_languagePATCH /v3/session/{id}/update-status/ bodyLanguage 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.
#LanguageNative nameCodeDirection
1AlbanianShqipsqLTR
2ArabicالعربيةarRTL
3ArmenianՀայերենhyLTR
4BengaliবাংলাbnLTR
5BosnianBosanskibsLTR
6BulgarianБългарскиbgLTR
7CatalanCatalàcaLTR
8Chinese (generic)中文zhLTR
9Chinese (Simplified)简体中文zh-CNLTR
10Chinese (Traditional)繁體中文zh-TWLTR
11CroatianHrvatskihrLTR
12CzechČeštinacsLTR
13DanishDanskdaLTR
14DutchNederlandsnlLTR
15EnglishEnglishenLTR
16EstonianEestietLTR
17FinnishSuomifiLTR
18FrenchFrançaisfrLTR
19GeorgianქართულიkaLTR
20GermanDeutschdeLTR
21GreekΕλληνικάelLTR
22HebrewעבריתheRTL
23Hindiहिन्दीhiLTR
24HungarianMagyarhuLTR
25IndonesianBahasa IndonesiaidLTR
26ItalianItalianoitLTR
27Japanese日本語jaLTR
28KazakhҚазақ тіліkkLTR
29Korean한국어koLTR
30KyrgyzКыргызчаkyLTR
31LatvianLatviešulvLTR
32LithuanianLietuviųltLTR
33MacedonianМакедонскиmkLTR
34MalayBahasa MelayumsLTR
35MongolianМонголmnLTR
36MontenegrinCrnogorskicnrLTR
37NorwegianNorsknoLTR
38Persian (Farsi)فارسیfaRTL
39PolishPolskiplLTR
40PortuguesePortuguêsptLTR
41Portuguese (Brazil)Português (Brasil)pt-BRLTR
42RomanianRomânăroLTR
43RussianРусскийruLTR
44SerbianСрпски / SrpskisrLTR
45SlovakSlovenčinaskLTR
46SlovenianSlovenščinaslLTR
47SomaliSoomaalisoLTR
48SpanishEspañolesLTR
49SwedishSvenskasvLTR
50ThaiไทยthLTR
51TurkishTürkçetrLTR
52UkrainianУкраїнськаukLTR
53UzbekOʻzbekchauzLTR
54VietnameseTiếng ViệtviLTR
Three languages render right-to-left in both the verification UI and emails: Arabic (ar), Hebrew (he), and Persian / Farsi (fa).
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.

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:
{
  "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 or your usual support channel to request additional language support.

Create Session API

Where language and email_lang are passed when starting a verification.

Update Session Status

Sets email_language for the status-change notification email.

Webhooks

Receive verification results — payloads include the chosen language.

Data Models

Canonical schema for sessions, contact details, and statuses.