diff --git a/api-reference/api-reference/retrieve-languages/language-feature-use-cases-beta.mdx b/api-reference/api-reference/retrieve-languages/language-feature-use-cases-beta.mdx
new file mode 100644
index 00000000..7c6ff9a7
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/language-feature-use-cases-beta.mdx
@@ -0,0 +1,170 @@
+---
+title: 'Common use cases [BETA]'
+description: "Pseudocode examples for common language and feature lookup patterns using the v3/languages endpoints."
+---
+
+This page shows how to use the `/v3/languages` endpoints for common integration tasks. Examples are written
+as pseudocode and are product-agnostic unless otherwise noted.
+
+For background on how features and feature dependency types work, see the
+[overview](/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta).
+
+
+ The examples below do not account for language pair exceptions. For most integrations this is fine — exceptions
+ are rare and the API handles them gracefully by disabling the unsupported feature rather than failing. If you
+ need precise feature support for specific language pairs, see
+ [Handling language pair exceptions](#handling-language-pair-exceptions) at the end of this page.
+
+
+---
+
+## Populate source and target language dropdowns
+
+A single call to `GET /v3/languages` returns all languages for a product. Filter by `usable_as_source` and
+`usable_as_target` to populate each dropdown separately.
+
+```
+GET /v3/languages?product=translate_text
+
+languages = response
+
+source_options = languages.filter(l => l.usable_as_source)
+target_options = languages.filter(l => l.usable_as_target)
+
+render source_dropdown(source_options)
+render target_dropdown(target_options)
+```
+
+---
+
+## Show formality options only when supported
+
+`formality` is a target-only feature. Check the selected target language's `features` array — no need to look
+at the source language.
+
+```
+GET /v3/languages?product=translate_text
+
+languages = response
+target = languages.find(l => l.lang == selected_target_lang)
+
+if target.features.includes("formality"):
+ show formality_selector // e.g. ["default", "more", "less"]
+else:
+ hide formality_selector
+```
+
+---
+
+## Check if a glossary can be used for a given language pair
+
+`glossary` is a source-and-target feature — both languages must support it.
+
+```
+GET /v3/languages?product=translate_text
+
+languages = response
+
+source = languages.find(l => l.lang == source_lang)
+target = languages.find(l => l.lang == target_lang)
+
+glossary_allowed = source.features.includes("glossary")
+ and target.features.includes("glossary")
+```
+
+---
+
+## List target languages that accept glossaries from a given source language
+
+Filter to targets where both the source and target support the `glossary` feature.
+
+```
+GET /v3/languages?product=translate_text
+
+languages = response
+source_lang = "en"
+
+source = languages.find(l => l.lang == source_lang)
+
+if not source.features.includes("glossary"):
+ return [] // source doesn't support glossary at all
+
+targets_with_glossary = languages
+ .filter(l => l.usable_as_target)
+ .filter(l => l.features.includes("glossary"))
+```
+
+---
+
+## Show writing style options for the Write product
+
+`writing_style` is a target-only feature on the `write` product. Check the target language's `features` array.
+
+```
+GET /v3/languages?product=write
+
+languages = response
+target = languages.find(l => l.lang == selected_target_lang)
+
+if target.features.includes("writing_style"):
+ show writing_style_selector
+else:
+ hide writing_style_selector
+```
+
+---
+
+## Determine feature support programmatically
+
+Use `/v3/languages/products` to drive feature checks at runtime — without hardcoding which features are
+target-only or source-and-target into your client.
+
+```
+GET /v3/languages/products
+GET /v3/languages?product=translate_text
+
+products = first response
+languages = second response
+
+product = products.find(p => p.name == "translate_text")
+source = languages.find(l => l.lang == source_lang)
+target = languages.find(l => l.lang == target_lang)
+
+for feature in product.features:
+ supported = true
+ if feature.required_on_source and not source.features.includes(feature.name):
+ supported = false
+ if feature.required_on_target and not target.features.includes(feature.name):
+ supported = false
+```
+
+---
+
+## Handling language pair exceptions
+
+In rare cases, feature support for a specific pair differs from what the individual language objects indicate.
+The `/v3/languages/exceptions` endpoint exposes these cases. When an exception exists for a pair, its `features`
+array is authoritative — use it directly instead of intersecting the individual language `features` arrays.
+
+The example below shows a full glossary pair check that accounts for exceptions:
+
+```
+GET /v3/languages?product=translate_text
+GET /v3/languages/exceptions?product=translate_text
+
+languages = first response
+exceptions = second response
+
+exception = exceptions.find(e => e.source_lang == source_lang && e.target_lang == target_lang)
+
+if exception:
+ features = exception.features
+else:
+ source = languages.find(l => l.lang == source_lang)
+ target = languages.find(l => l.lang == target_lang)
+ features = intersect(source.features, target.features)
+
+glossary_allowed = features.includes("glossary")
+```
+
+The same pattern applies to any feature check — replace `"glossary"` with the feature you are checking.
diff --git a/api-reference/api-reference/retrieve-languages/migrate-from-v2-languages.mdx b/api-reference/api-reference/retrieve-languages/migrate-from-v2-languages.mdx
new file mode 100644
index 00000000..dad9567b
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/migrate-from-v2-languages.mdx
@@ -0,0 +1,102 @@
+---
+title: 'Migrating from v2/languages'
+description: "How to migrate from the v2/languages endpoint to the v3/languages endpoints."
+---
+
+This page covers the differences between the `/v2/languages` endpoint and the v3 endpoints, and how to update your integration.
+
+
+ Only `GET` requests are supported on the v3 endpoints. Unlike `/v2/languages`, POST is not supported.
+
+
+## What changed
+
+### Single endpoint for source and target
+
+v2 uses a single endpoint with a `type` query parameter to distinguish source from target:
+
+```
+GET /v2/languages?type=source
+GET /v2/languages?type=target
+```
+
+v3 uses a single endpoint that returns all languages for a product, with each language indicating whether it is
+usable as a source, a target, or both:
+
+```
+GET /v3/languages?product=translate_text
+```
+
+### New product identifiers
+
+v2 languages are implicitly tied to text and document translation. v3 introduces an explicit `product` parameter that applies across all DeepL API products:
+
+| v2 | v3 `product` value |
+|---|---|
+| *(implicit, text/document translation only)* | `translate_text` |
+| *(implicit, text/document translation only)* | `translate_document` |
+| *(separate `/v2/glossary-language-pairs` endpoint)* | `glossary` |
+| *(not supported)* | `voice` |
+| *(not supported)* | `write` |
+
+The v3 endpoints replace both `/v2/languages` and `/v2/glossary-language-pairs`.
+
+### Features instead of `supports_formality`
+
+v2 target languages include a boolean `supports_formality` field. v3 replaces this with a `features` array that covers additional capabilities per product:
+
+| v2 field | v3 equivalent |
+|---|---|
+| `"supports_formality": true` | `"features": ["formality"]` on the language object |
+
+For example, querying languages for text translation:
+
+```sh
+curl -X GET 'https://api.deepl.com/v3/languages?product=translate_text' \
+--header 'Authorization: DeepL-Auth-Key [yourAuthKey]'
+```
+
+```json Example response (truncated)
+[
+ {
+ "lang": "de",
+ "name": "German",
+ "usable_as_source": true,
+ "usable_as_target": true,
+ "features": ["formality", "tag_handling", "glossary"]
+ },
+ {
+ "lang": "en-US",
+ "name": "English (American)",
+ "usable_as_source": false,
+ "usable_as_target": true,
+ "features": ["tag_handling", "glossary"]
+ }
+]
+```
+
+The response indicates German supports `formality`, but English (American) does not.
+
+See the [overview](/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta) for the full list of features per product.
+
+### Response field names
+
+| v2 field | v3 field |
+|----------------------|------------------------|
+| `language` | `lang` |
+| `name` | `name` *(unchanged)* |
+| `supports_formality` | `features["formality]` |
+
+### Language code casing
+
+v2 returned language codes in non-standard casing (e.g. `EN-US`, `ZH-HANT`). v3 returns codes compliant with BCP 47: lowercase base language (`en`, `de`), uppercase region subtag (`en-US`, `pt-BR`), and title-case script subtag (`zh-Hant`).
+
+DeepL accepts language codes case-insensitively as input across all endpoints. However, if your integration stores or compares codes returned by `/v2/languages`, update those comparisons to be case-insensitive or to expect the new casing.
+
+## Migrating glossary language pair queries
+
+If you currently use `/v2/glossary-language-pairs` to discover which language pairs are supported for glossaries, use one of the following:
+
+- `GET /v3/languages?product=glossary` to check which languages support glossary management (i.e. creating a glossary for that language). Filter by `usable_as_source` and `usable_as_target` as needed. Any combination of a valid source and target language is a supported glossary language pair.
+- `GET /v3/languages?product=translate_text` to check which languages support using a glossary during text translation. Languages that include `"glossary"` in their `features` array support the `glossary_id` parameter on the translate endpoint.
+- Similarly, use `product=translate_document` to check glossary support for document translation.
diff --git a/api-reference/api-reference/retrieve-languages/retrieve-language-pair-exceptions-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-language-pair-exceptions-beta.mdx
new file mode 100644
index 00000000..41b56a89
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/retrieve-language-pair-exceptions-beta.mdx
@@ -0,0 +1,4 @@
+---
+openapi: get /v3/languages/exceptions
+title: "Retrieve language pair exceptions [BETA]"
+---
diff --git a/api-reference/api-reference/retrieve-languages/retrieve-languages-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-languages-beta.mdx
new file mode 100644
index 00000000..8c4ae59b
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/retrieve-languages-beta.mdx
@@ -0,0 +1,4 @@
+---
+openapi: get /v3/languages
+title: "Retrieve languages [BETA]"
+---
diff --git a/api-reference/api-reference/retrieve-languages/retrieve-products-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-products-beta.mdx
new file mode 100644
index 00000000..8dcabb4f
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/retrieve-products-beta.mdx
@@ -0,0 +1,4 @@
+---
+openapi: get /v3/languages/products
+title: "Retrieve language products [BETA]"
+---
diff --git a/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta.mdx
new file mode 100644
index 00000000..05526246
--- /dev/null
+++ b/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta.mdx
@@ -0,0 +1,232 @@
+---
+title: 'Retrieve supported languages by product [BETA]'
+sidebarTitle: 'Overview'
+description: "API reference for retrieving supported languages with the DeepL API across all products."
+---
+
+Get information about all currently supported languages across all DeepL API products.
+
+
+ The `/v3/languages` endpoints provide a single source of truth for language and feature support across all DeepL
+ API products. They replace the `/v2/languages` and `/v2/glossary-language-pairs` endpoints.
+
+ If you're currently using `/v2/languages` or `/v2/glossary-language-pairs`, see the
+ [migration guide](/api-reference/api-reference/retrieve-languages/migrate-from-v2-languages)
+ for a full list of differences and code examples.
+
+
+We also provide auto-generated API specs from DeepL's OpenAPI file, for use with API clients and code generation tools:
+- [Retrieve languages](/api-reference/api-reference/retrieve-languages/retrieve-languages-beta)
+- [Retrieve products](/api-reference/api-reference/retrieve-languages/retrieve-products-beta)
+- [Retrieve language pair exceptions](/api-reference/api-reference/retrieve-languages/retrieve-language-pair-exceptions-beta)
+
+To understand how we'll update these endpoints when we add translation support for a new language or language variant, please see [this article](/docs/resources/language-release-process).
+
+## Products list
+
+To retrieve language support, decide which DeepL product you're building for, then call `GET /v3/languages` with
+the appropriate `product` value. The `product` parameter is required and identifies which DeepL API product you
+are querying language support for:
+
+| Value | Description |
+|---|---|
+| `translate_text` | Text translation via the `/v2/translate` endpoint |
+| `translate_document` | Document translation via the `/v2/document` endpoint |
+| `voice` | Speech transcription and translation via the `/v3/voice` endpoints |
+| `write` | Text improvement via the `/v2/write` endpoints |
+| `glossary` | Glossary management via the `/v2/` and `/v3/glossaries` endpoints |
+
+
+ `glossary` is a product value indicating glossaries can be created for that language, and managed via the glossary
+ management endpoints.
+
+ Support for glossaries within specific products (for example text translation) is indicated by the `glossary`
+ feature value, explained in a later section.
+
+
+## Basic example
+
+Each language in the response includes a `features` array indicating which optional capabilities are available for that
+language — see the [Product features](#product-features) section below for details.
+
+The examples below use our API Pro endpoint `https://api.deepl.com`. If you're an API Free user, remember to update
+your requests to use `https://api-free.deepl.com` instead.
+
+The following example responses are truncated; the full API responses can include over 100 languages.
+
+
+
+
+```sh Example request: languages for text translation
+curl -X GET 'https://api.deepl.com/v3/languages?product=translate_text' \
+--header 'Authorization: DeepL-Auth-Key [yourAuthKey]'
+```
+
+
+
+```http Example request: languages for text translation
+GET /v3/languages?product=translate_text HTTP/2
+Host: api.deepl.com
+Authorization: DeepL-Auth-Key [yourAuthKey]
+User-Agent: YourApp/1.2.3
+```
+
+
+
+```json Example response
+[
+ {
+ "lang": "de",
+ "name": "German",
+ "usable_as_source": true,
+ "usable_as_target": true,
+ "features": [
+ "formality",
+ "tag_handling",
+ "glossary"
+ ]
+ },
+ {
+ "lang": "en",
+ "name": "English",
+ "usable_as_source": true,
+ "usable_as_target": false,
+ "features": [
+ "tag_handling",
+ "glossary"
+ ]
+ },
+ {
+ "lang": "en-US",
+ "name": "English (American)",
+ "usable_as_source": false,
+ "usable_as_target": true,
+ "features": [
+ "tag_handling",
+ "glossary"
+ ]
+ }
+]
+```
+
+## Product features
+
+Each language object includes a `features` array indicating which optional capabilities are supported for that language
+with the requested product.
+
+A feature may be required on the source language, the target language, or both. For example, for text translation:
+
+- **Target-only**: `formality` is required only on the target language. Check that `"formality"` is present in the
+ target language's `features` array.
+- **Source-and-target**: `tag_handling` and `glossary` are required on both languages. Check that the feature is
+ present in *both* the source and target language's `features` arrays.
+
+Source-only features are also supported by the schema, though none exist currently.
+
+In the documentation for API features that are supported for only a subset of languages, we specify
+which language feature value to check, and whether to check the source language, target language, or both.
+
+## Retrieving products programmatically
+
+Use the `/v3/languages/products` endpoint to retrieve the list of products and their features programmatically.
+For each feature, the response indicates whether support is required on the source language, the target language,
+or both — allowing clients to determine feature availability for a language pair by checking the appropriate
+`features` arrays.
+
+```sh
+curl -X GET 'https://api.deepl.com/v3/languages/products' \
+--header 'Authorization: DeepL-Auth-Key [yourAuthKey]'
+```
+
+```json Example response (truncated)
+[
+ {
+ "name": "translate_text",
+ "endpoints": ["v2/translate"],
+ "features": [
+ {
+ "name": "formality",
+ "required_on_target": true
+ },
+ {
+ "name": "custom_instructions",
+ "required_on_target": true
+ },
+ {
+ "name": "tag_handling",
+ "required_on_source": true,
+ "required_on_target": true
+ },
+ {
+ "name": "glossary",
+ "required_on_source": true,
+ "required_on_target": true
+ }
+ ]
+ }
+]
+```
+
+## Language pair exceptions
+
+In rare cases, feature support for a specific language pair may differ from the feature support returned for the source
+and target languages individually. This occurs due to intricacies and language-specifics of DeepL's AI models.
+
+A hypothetical example: text translation formality is supported for source language Ukrainian, and it is also supported
+for target language Russian. However, translating specifically from Ukrainian to Russian does *not* support formality.
+
+When a request uses a feature that is unsupported for the specific language pair, the API attempts to complete the
+request by disabling the unsupported feature rather than failing. However, in some cases information about these
+exceptions may be useful, so this section explains how to retrieve it.
+
+### Retrieving language pair exceptions directly
+
+Language pair exceptions are available directly via the `/v3/languages/exceptions` endpoint. The `product` query
+parameter is required to specify the product for which you want to retrieve exceptions.
+
+The response includes a list of language pairs for which exceptions exist, with their actual feature support.
+
+Continuing the hypothetical example, querying exceptions for text translation shows that Ukrainian-Russian does not
+support formality:
+
+```sh
+curl -X GET 'https://api.deepl.com/v3/languages/exceptions?product=translate_text' \
+--header 'Authorization: DeepL-Auth-Key [yourAuthKey]'
+```
+
+```json Example exceptions response (truncated)
+[
+ {
+ "source_lang": "uk",
+ "target_lang": "ru",
+ "features": ["tag_handling", "glossary"]
+ }
+]
+```
+
+You can apply these exceptions in client logic. The exception's `features` array is the authoritative feature list
+for that pair — it replaces the individual language `features` arrays entirely for that combination, regardless of
+whether a feature is target-only or source-and-target. Skip the normal intersection logic and use the exception
+`features` directly.
+
+## API stability
+
+The v3 language endpoints are designed to be forward-compatible:
+
+- New features may be added to the `features` array
+- New languages will be added as DeepL support expands
+- Existing fields will not be removed or changed in backwards-incompatible ways
+
+
+ Build your integration to gracefully handle new values in the `features` array.
+
+
+## Best practices
+
+1. **Cache responses**: Language support changes infrequently. Consider caching responses for up to 1 hour.
+
+2. **Check features**: Always check the `features` array on language objects rather than assuming support (e.g. for formality, glossary use, or writing style).
+
+3. **Handle forward compatibility**: Ignore unknown values in the `features` array to remain compatible as new capabilities are added.
+
+4. **Use specific variants**: For target languages, prefer specific regional variants (e.g., `"en-US"`, `"en-GB"`) when the distinction matters to your users.
diff --git a/api-reference/languages.mdx b/api-reference/languages.mdx
index 9097163c..70341d22 100644
--- a/api-reference/languages.mdx
+++ b/api-reference/languages.mdx
@@ -210,7 +210,7 @@ curl -X GET 'https://api.deepl.com/v2/languages?type=target' \
```http Example request: supported target languages
GET /v2/languages?type=target HTTP/2
Host: api.deepl.com
-Authorization: DeepL-Auth-Key [yourAuthKey]
+Authorization: DeepL-Auth-Key [yourAuthKey]
User-Agent: YourApp/1.2.3
```
```json Example response
diff --git a/api-reference/languages/retrieve-supported-languages.mdx b/api-reference/languages/retrieve-supported-languages.mdx
index 13b12c48..4e04361d 100644
--- a/api-reference/languages/retrieve-supported-languages.mdx
+++ b/api-reference/languages/retrieve-supported-languages.mdx
@@ -1,4 +1,4 @@
---
openapi: get /v2/languages
title: "Retrieve supported languages"
----
\ No newline at end of file
+---
diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml
index ae87f390..d40baee8 100644
--- a/api-reference/openapi.yaml
+++ b/api-reference/openapi.yaml
@@ -272,7 +272,7 @@ paths:
- key_id
properties:
key_id:
- $ref: '#/components/schemas/ApiKeyId'
+ $ref: '#/components/schemas/ApiKeyId'
responses:
200:
description: The deactivate function returns a JSON representation of the deactivated API key.
@@ -1942,6 +1942,313 @@ paths:
$ref: '#/components/responses/TooManyRequests'
security:
- auth_header: [ ]
+ /v3/languages/products:
+ get:
+ tags:
+ - MetaInformation
+ summary: Retrieve Language Products
+ operationId: getLanguageProducts
+ description: |-
+ Returns all DeepL API products, including the API endpoints they expose, and the features they support.
+
+ For each feature, the response indicates whether support is required on the source language
+ (`required_on_source`), the target language (`required_on_target`), or both. This allows
+ clients to determine feature availability for a language pair by checking the appropriate language's
+ `features` array returned by `GET /v3/languages`.
+ responses:
+ 200:
+ description: JSON array where each item represents a DeepL API product.
+ headers:
+ X-Trace-ID:
+ $ref: '#/components/headers/X-Trace-ID'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: object
+ required:
+ - name
+ - endpoints
+ - features
+ properties:
+ name:
+ description: The product identifier.
+ type: string
+ enum:
+ - translate_text
+ - translate_document
+ - glossary
+ - voice
+ - write
+ example: translate_text
+ endpoints:
+ description: API endpoints associated with this product.
+ type: array
+ items:
+ type: string
+ example:
+ - v2/translate
+ features:
+ description: |-
+ Features supported by this product. Each feature indicates whether support is
+ required on the source language, the target language, or both.
+ type: array
+ items:
+ type: object
+ required:
+ - name
+ properties:
+ name:
+ description: The feature identifier, corresponding to values in the `features` array returned by `GET /v3/languages`.
+ type: string
+ enum:
+ - formality
+ - custom_instructions
+ - tag_handling
+ - glossary
+ - writing_style
+ - tone
+ required_on_source:
+ description: Whether support for this feature is required on the source language. Defaults to `false` if absent.
+ type: boolean
+ required_on_target:
+ description: Whether support for this feature is required on the target language. Defaults to `false` if absent.
+ type: boolean
+ example:
+ - name: translate_text
+ endpoints:
+ - v2/translate
+ features:
+ - name: formality
+ required_on_target: true
+ - name: custom_instructions
+ required_on_target: true
+ - name: tag_handling
+ required_on_source: true
+ required_on_target: true
+ - name: glossary
+ required_on_source: true
+ required_on_target: true
+ - name: voice
+ endpoints:
+ - v3/voice/realtime
+ features:
+ - name: glossary
+ required_on_source: true
+ required_on_target: true
+ 400:
+ $ref: '#/components/responses/BadRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/Forbidden'
+ 429:
+ $ref: '#/components/responses/TooManyRequests'
+ 500:
+ $ref: '#/components/responses/InternalServerError'
+ 503:
+ $ref: '#/components/responses/ServiceUnavailable'
+ security:
+ - auth_header: []
+ /v3/languages:
+ get:
+ tags:
+ - MetaInformation
+ summary: Retrieve Languages
+ operationId: getLanguages
+ description: |-
+ Returns languages supported by the specified DeepL API product. Each language indicates whether it can
+ be used as a source language, a target language, or both, along with the features it supports for that
+ product.
+ parameters:
+ - name: product
+ in: query
+ required: true
+ schema:
+ type: string
+ enum:
+ - translate_text
+ - translate_document
+ - glossary
+ - voice
+ - write
+ description: |-
+ The product to retrieve languages for. Supported values: `translate_text`, `translate_document`,
+ `glossary`, `voice`, `write`.
+ responses:
+ 200:
+ description: JSON array where each item represents a supported language.
+ headers:
+ X-Trace-ID:
+ $ref: '#/components/headers/X-Trace-ID'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: object
+ required:
+ - lang
+ - name
+ - usable_as_source
+ - usable_as_target
+ - features
+ properties:
+ lang:
+ description: The language code (BCP 47).
+ type: string
+ example: de
+ name:
+ description: Name of the language in English.
+ type: string
+ example: German
+ usable_as_source:
+ description: Whether this language can be used as a source language with the specified product.
+ type: boolean
+ usable_as_target:
+ description: Whether this language can be used as a target language with the specified product.
+ type: boolean
+ features:
+ description: |-
+ Features supported for this language with the specified product. Always present;
+ empty array if no optional features are supported. Consult `/v3/languages/products`
+ to determine whether a feature must be present on the source language, target language,
+ or both for a given product.
+ type: array
+ items:
+ type: string
+ enum:
+ - formality
+ - custom_instructions
+ - tag_handling
+ - glossary
+ - writing_style
+ - tone
+ example:
+ - formality
+ - tag_handling
+ - glossary
+ examples:
+ translateTextLanguages:
+ summary: Languages for text translation
+ value:
+ - lang: de
+ name: German
+ usable_as_source: true
+ usable_as_target: true
+ features:
+ - formality
+ - tag_handling
+ - glossary
+ - lang: en
+ name: English
+ usable_as_source: true
+ usable_as_target: false
+ features:
+ - tag_handling
+ - glossary
+ - lang: en-US
+ name: English (American)
+ usable_as_source: false
+ usable_as_target: true
+ features:
+ - tag_handling
+ - glossary
+ 400:
+ $ref: '#/components/responses/BadRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/Forbidden'
+ 429:
+ $ref: '#/components/responses/TooManyRequests'
+ 500:
+ $ref: '#/components/responses/InternalServerError'
+ 503:
+ $ref: '#/components/responses/ServiceUnavailable'
+ security:
+ - auth_header: []
+ /v3/languages/exceptions:
+ get:
+ tags:
+ - MetaInformation
+ summary: Retrieve Language Pair Exceptions
+ operationId: getLanguagePairExceptions
+ description: |-
+ Returns language pairs for which feature support differs from what would be predicted by the
+ feature support of the source and target languages individually.
+
+ The `product` parameter is required. Results are specific to the product, as exceptions may
+ vary across products.
+ parameters:
+ - name: product
+ in: query
+ required: true
+ schema:
+ type: string
+ enum:
+ - translate_text
+ - translate_document
+ - glossary
+ - voice
+ - write
+ description: The product for which to retrieve language pair exceptions. Required.
+ responses:
+ 200:
+ description: JSON array where each item represents a language pair with exceptional feature support.
+ headers:
+ X-Trace-ID:
+ $ref: '#/components/headers/X-Trace-ID'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: object
+ required:
+ - source_lang
+ - target_lang
+ - features
+ properties:
+ source_lang:
+ description: The source language code of the language pair.
+ type: string
+ example: uk
+ target_lang:
+ description: The target language code of the language pair.
+ type: string
+ example: ru
+ features:
+ description: |-
+ The actual features supported for this specific language pair, which differs
+ from the features reported for the source or target language individually.
+ type: array
+ items:
+ type: string
+ example:
+ - tag_handling
+ - glossary
+ example:
+ - source_lang: uk
+ target_lang: ru
+ features:
+ - tag_handling
+ - glossary
+ 400:
+ $ref: '#/components/responses/BadRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/Forbidden'
+ 429:
+ $ref: '#/components/responses/TooManyRequests'
+ 500:
+ $ref: '#/components/responses/InternalServerError'
+ 503:
+ $ref: '#/components/responses/ServiceUnavailable'
+ security:
+ - auth_header: []
/v3/style_rules:
get:
summary: Retrieve style rule lists
@@ -3661,7 +3968,7 @@ components:
- ja
- ko
- zh
- StyleRuleName:
+ StyleRuleName:
description: Name associated with the style rule.
type: string
DocumentTranslationError:
@@ -3957,7 +4264,7 @@ components:
description: |-
When true, the response will include the billed_characters parameter, giving the
number of characters from the request that will be counted by DeepL for billing purposes.
- type: boolean
+ type: boolean
SplitSentencesOption:
description: |-
Sets whether the translation engine should first split the input into sentences.
@@ -3965,7 +4272,7 @@ components:
Possible values are:
* 0 - no splitting at all, whole input is treated as one sentence
* 1 (default when tag_handling is not set to html) - splits on punctuation and on newlines
- * nonewlines (default when tag_handling=html) - splits on punctuation only, ignoring newlines
+ * nonewlines (default when tag_handling=html) - splits on punctuation only, ignoring newlines
type: string
enum:
- '0'
@@ -4111,7 +4418,7 @@ components:
Sets which version of the tag handling algorithm should be used. Options currently available:
* `v1`: Traditional algorithm (currently the default, will become deprecated in the future).
* `v2`: Improved algorithm released in October 2025 (will become the default in the future).
-
+
type: string
enum:
- v1
diff --git a/docs.json b/docs.json
index 325e9b73..1fb9a13d 100644
--- a/docs.json
+++ b/docs.json
@@ -196,6 +196,17 @@
"api-reference/languages/retrieve-supported-languages"
]
},
+ {
+ "group": "Retrieve languages by product [BETA]",
+ "pages": [
+ "api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta",
+ "api-reference/api-reference/retrieve-languages/language-feature-use-cases-beta",
+ "api-reference/api-reference/retrieve-languages/retrieve-languages-beta",
+ "api-reference/api-reference/retrieve-languages/retrieve-products-beta",
+ "api-reference/api-reference/retrieve-languages/retrieve-language-pair-exceptions-beta",
+ "api-reference/api-reference/retrieve-languages/migrate-from-v2-languages"
+ ]
+ },
{
"group": "Admin API",
"pages": [