/v3/languages endpoint tells you which languages a given DeepL API resource supports and which optional features (formality, glossaries, tag handling, and more) are available per language. Calling it before you build language selectors or validate user input lets you stay current as DeepL adds languages, without maintaining a hardcoded list.
This guide shows you how to query language support for a resource, read the response, and check whether a specific feature is available for a language pair.
The
resource parameter is required. If you’re migrating from /v2/languages, see the migration guide — the v3 response structure is different.Before you start
You need a DeepL API key. Find yours on the API Keys & Limits page. If you’re on the Free plan, usehttps://api-free.deepl.com instead of https://api.deepl.com in all requests below.
Step 1: Choose your resource
Theresource parameter identifies which DeepL API product you’re querying language support for. Choose the value that matches what you’re building:
Step 2: Fetch supported languages
CallGET /v3/languages with your chosen resource value. This example queries languages for text translation:
enis source-only (usable_as_source: true,usable_as_target: false). For target languages, use a regional variant likeen-USoren-GB.- Language codes follow BCP 47. Don’t assume codes are always two letters — treat them as opaque identifiers.
- The
featuresobject lists optional capabilities available for that language with this resource. A feature’s absence means it isn’t supported.
Step 3: Filter source and target languages
Useusable_as_source and usable_as_target to build your language selectors:
Step 4: Check feature availability for a language pair
Some features, like formality, depend on both the source and target language supporting it. To know which language must support a feature for it to be available, callGET /v3/languages/resources:
formality, only needs_target_support is set. This means you only need to check whether the target language’s features object contains formality — the source language doesn’t matter.
For glossary, both needs_source_support and needs_target_support are set. Both languages in the pair must support glossary for you to use a glossary on that translation.
Here’s a helper that combines both calls to check whether a feature is available for a given pair:
Including beta languages
By default, the endpoint only returns stable languages. To include languages in beta, addinclude=beta to your request:
"status": "beta". Use the status field to decide whether to surface them to end users or restrict them to internal testing.
Next steps
- See the full API reference: Retrieve languages and Retrieve language resources
- Browse all languages the API currently supports: Languages supported
- If you’re coming from
/v2/languages: Migrating from v2/languages