Skip to main content
The /v3/languages endpoint tells you which languages are available for a given DeepL API resource, and which optional features (formality, glossary support, tag handling, and more) each language supports. Call it at startup or on a schedule to populate language dropdowns and feature toggles in your integration, rather than hardcoding lists that go stale when DeepL adds new languages.
GET /v3/languages replaces the deprecated GET /v2/languages endpoint. If you’re still using v2, see the migration guide.
This guide shows you how to:
  • Fetch all languages for the translate_text resource
  • Separate languages that are valid as source vs. target
  • Check whether a specific feature (formality) is available for a language

Prerequisites

If you’re on the Free plan, replace https://api.deepl.com with https://api-free.deepl.com in every request below.

Step 1: Fetch languages for a resource

Call GET /v3/languages with the resource parameter set to the DeepL product you’re building for. This example uses translate_text. The resource parameter is required — pass the value that matches the DeepL product you are integrating (for example, translate_text for text translation). For all supported values, see the GET /v3/languages reference.
The response is a JSON array. Each object represents one language:
Notice that en (English as a base code) is only valid as a source language, while en-US (the regional variant) is only valid as a target language. Some languages like de are valid in both directions.
Do not hardcode assumptions about language code format. Codes follow BCP 47 and can include region or script subtags of varying length. Treat the lang value as an opaque identifier. See Language codes and the release process for details.

Step 2: Build source and target language lists

Filter the response by usable_as_source and usable_as_target to populate the appropriate selectors in your UI.
Example output (truncated):

Step 3: Check feature availability for a language pair

Before enabling a feature in your UI (for example, a formality selector), check that the target language supports it. Features appear as keys in the features object.
For a complete picture of which languages must support a feature (source, target, or both) for a given resource, call GET /v3/languages/resources. See Using the Languages API for details on that endpoint.

Step 4: Include beta languages (optional)

By default, the endpoint returns only stable languages. To also include beta languages, add include=beta to your request:
Languages returned with "status": "beta" are functional but not yet stable. Check the status field before displaying them to end users, since beta languages may change.

Next steps