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 0000000..cb2bfaa --- /dev/null +++ b/api-reference/api-reference/retrieve-languages/migrate-from-v2-languages.mdx @@ -0,0 +1,92 @@ +--- +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 + +### Separate endpoints for source and target + +v2 uses a single endpoint with a `type` query parameter: + +``` +GET /v2/languages?type=source +GET /v2/languages?type=target +``` + +v3 uses two dedicated endpoints: + +``` +GET /v3/languages/source +GET /v3/languages/target +``` + +### 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` | +| *(not supported — 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 both source and target language (when `product` is specified) | + +For example, querying target languages for text translation: + +```sh +curl -X GET 'https://api.deepl.com/v3/languages/target?product=translate_text' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + +```json Example response (truncated) +[ + { + "lang": "de", + "name": "German", + "features": ["formality", "tag_handling", "glossary_id"] + }, + { + "lang": "en-US", + "name": "English (American)", + "features": ["tag_handling", "glossary_id"] + } +] +``` + +The response indicates German supports `formality`, but English (American) does not. + +The `features` array only appears on a language object when a `product` parameter is specified. See the [overview](/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta) for the full list of features per product. + +### Flat array response + +v2 returns a flat JSON array. v3 also returns a flat array — but each endpoint returns only its own list (sources or targets), so there is no wrapper object. + +### Response field names + +| v2 field | v3 field | +|---|---| +| `language` | `lang` | +| `name` | `name` *(unchanged)* | +| `supports_formality` | `features` *(array, product-specific)* | + +## Migrating glossary language pair queries + +If you currently use `/v2/glossary-language-pairs` to discover which language pairs are supported for glossaries, use `/v3/languages/source` and `/v3/languages/target` with `product=glossary` instead. 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 0000000..41b56a8 --- /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-source-languages-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-source-languages-beta.mdx new file mode 100644 index 0000000..7a231ba --- /dev/null +++ b/api-reference/api-reference/retrieve-languages/retrieve-source-languages-beta.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /v3/languages/source +title: "Retrieve source languages [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 0000000..ac1cf31 --- /dev/null +++ b/api-reference/api-reference/retrieve-languages/retrieve-supported-languages-by-product-beta.mdx @@ -0,0 +1,315 @@ +--- +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 source and target 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 specs that are auto-generated from DeepL's OpenAPI file. You can find them here: +- [Retrieve source languages](/api-reference/api-reference/retrieve-languages/retrieve-source-languages-beta) +- [Retrieve target languages](/api-reference/api-reference/retrieve-languages/retrieve-target-languages-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). + +## Basic example + +You can call the `/v3/languages/source` endpoint to retrieve a list of all supported source languages, +and call the `/v3/languages/target` endpoint to retrieve a list of all supported target languages. + +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. + + + + +```sh Example request: supported source languages +curl -X GET 'https://api.deepl.com/v3/languages/source' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + + + +```http Example request: supported source languages +GET /v3/languages/source HTTP/2 +Host: api.deepl.com +Authorization: DeepL-Auth-Key [yourAuthKey] +User-Agent: YourApp/1.2.3 +``` + + + +The following example response is truncated; the full API response includes over 100 languages. + +```json Example response +[ + { + "lang": "de", + "name": "German", + "products": [ + "translate_text", + "translate_document", + "glossary", + "voice", + "write" + ] + }, + { + "lang": "en", + "name": "English", + "products": [ + "translate_text", + "translate_document", + "glossary", + "voice", + "write" + ] + } +] +``` + +## Filtering by product + +For the `/v3/languages/source` and `/v3/languages/target` endpoints you may also specify the `product` query parameter +as a filter, to return only source or target languages supporting that product. +In this case the `products` array is no longer included in the response. + +Instead, each source or target language includes a `features` array indicating which product-specific capabilities are +supported for the language: + + + + +```sh Example request: target languages for text translation +curl -X GET 'https://api.deepl.com/v3/languages/target?product=translate_text' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + + + + +```http Example request: target languages for text translation +GET /v3/languages/target?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", + "features": [ + "formality", + "tag_handling", + "glossary_id" + ] + }, + { + "lang": "en-US", + "name": "English (American)", + "features": [ + "tag_handling", + "glossary_id" + ] + } +] +``` + +## Products list + +The `product` query parameter 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-to-text and speech-to-speech 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_id` + feature value, explained in the following section. + + +As we add new products to the DeepL API, the `products` list for each supported language will be extended. + +## Product features + +As described earlier, when the `product` query parameter is specified, language objects may include a `features` array. +The included features indicate which optional parameters are supported for that language. + +For example, `["formality", "tag_handling", "glossary_id"]` for German above indicates that when this language is used +as the target language for text translation, the `formality`, `tag_handling` and `glossary_id` parameters are supported. + +Features must be included in *both* the source and target language's `features` array to be supported. For example, if +the source language French (`fr`) includes `"formality"` for text translation, but the target language Greek (`el`) does +not, then text translations from French to Greek are possible but will not support formality. + +API endpoints describe in their documentation which request parameters are language-dependent, and indicate the +feature values to check for in the `features` array. + +## 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. + +It is complex to handle these cases, so we design our API endpoints to perform the "best effort" in such cases. For +example, by ignoring formality support and continuing with the translation rather than failing the request. +However, in some cases information about these exceptions may be useful, so this section explains how to retrieve it. + +### `source_lang` and `target_lang` query parameters + +You may also specify a `source_lang` or `target_lang` query parameter in addition to the `product` query parameter: +- for `/v3/languages/source`, the `target_lang` parameter indicates the target language for which you want to retrieve +language support +- for `/v3/languages/target`, the `source_lang` parameter indicates the source language for which you want to retrieve +language support +These parameters will modify the feature support information returned for each language, applying any of these +exceptional cases as described above. + +Continuing the hypothetical Ukrainian to Russian example: querying target languages for text translation without a +source filter shows Russian with `formality` support, since Russian generally supports formality as a target language: + +```sh +curl -X GET 'https://api.deepl.com/v3/languages/target?product=translate_text' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + +```json Example target languages response (truncated) +[ + { + "lang": "ru", + "name": "Russian", + "features": ["formality", "tag_handling", "glossary_id"] + } +] +``` + +Similarly, querying source languages for text translation without a target filter shows Ukrainian with `formality` +support, since Ukrainian generally supports formality as a source language: + +```sh +curl -X GET 'https://api.deepl.com/v3/languages/source?product=translate_text' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + +```json Example source languages response (truncated) +[ + { + "lang": "uk", + "name": "Ukrainian", + "features": ["formality", "tag_handling", "glossary_id"] + } +] +``` + +However, specifying `source_lang=uk` applies the language-pair exception, and Russian is returned without `formality` indicating +the exception: + +```sh +curl -X GET 'https://api.deepl.com/v3/languages/target?product=translate_text&source_lang=uk' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + +```json Example target languages response, filtering for source_lang=uk (truncated) +[ + { + "lang": "ru", + "name": "Russian", + "features": ["tag_handling", "glossary_id"] + } +] +``` + +Similarly, querying source languages while specifying `target_lang=ru` applies the language-pair exception, and +Ukrainian is returned without `formality` indicating the exception: + +```sh +curl -X GET 'https://api.deepl.com/v3/languages/source?product=translate_text&target_lang=ru' \ +--header 'Authorization: DeepL-Auth-Key [yourAuthKey]' +``` + +```json Example source languages response, filtering for target_lang=ru (truncated) +[ + { + "lang": "uk", + "name": "Ukrainian", + "features": ["tag_handling", "glossary_id"] + } +] +``` + +### Retrieving language pair exceptions directly + +Language pair exceptions are also 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_id"] + } +] +``` + +You can apply these exceptions in client logic, overriding the responses from the `/v3/languages/source` and +`/v3/languages/target` endpoints for those specific language pairs. + +## API stability + +The v3 language endpoints are designed to be forward-compatible: + +- New products may be added to the `products` array +- 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 `products` and `features` arrays. + + +## Best practices + +1. **Cache responses**: Language support changes infrequently. Consider caching responses for up to 1 hour. + +2. **Filter by product**: Use the `product` parameter when you only need languages for a specific product — this reduces response size and includes feature information. + +3. **Check features**: Always check the `features` array on language objects rather than assuming support (e.g. for formality, glossary use, or writing style). + +4. **Handle forward compatibility**: Ignore unknown values in `products` and `features` arrays to remain compatible as new products and capabilities are added. + +5. **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/api-reference/retrieve-languages/retrieve-target-languages-beta.mdx b/api-reference/api-reference/retrieve-languages/retrieve-target-languages-beta.mdx new file mode 100644 index 0000000..6dcc26a --- /dev/null +++ b/api-reference/api-reference/retrieve-languages/retrieve-target-languages-beta.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /v3/languages/target +title: "Retrieve target languages [BETA]" +--- diff --git a/api-reference/languages.mdx b/api-reference/languages.mdx index 9097163..70341d2 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 13b12c4..4e04361 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 ae87f39..78a8ab1 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,380 @@ paths: $ref: '#/components/responses/TooManyRequests' security: - auth_header: [ ] + /v3/languages/source: + get: + tags: + - MetaInformation + summary: Retrieve Source Languages + operationId: getSourceLanguages + description: |- + Returns source languages supported by one or more DeepL API products. + + When no `product` parameter is specified, each language includes a `products` array + indicating which products support it. When `product` is specified, only languages + for that product are returned, the `products` field is omitted, and source languages + may include a `features` array listing product-specific capabilities. + parameters: + - name: product + in: query + required: false + schema: + type: string + enum: + - translate_text + - translate_document + - glossary + - voice + - write + description: |- + Filter languages by product. Supported values: `translate_text`, `translate_document`, + `glossary`, `voice`, `write`. + - name: target_lang + in: query + required: false + schema: + type: string + example: en-US + description: |- + Filter source languages to those compatible with a specific target language. + Must be used together with `product`. Language code must be valid (e.g. `en`, `en-US`, `fr`). + responses: + 200: + description: JSON array where each item represents a supported source language. + headers: + X-Trace-ID: + $ref: '#/components/headers/X-Trace-ID' + content: + application/json: + schema: + type: array + items: + type: object + required: + - lang + - name + properties: + lang: + description: The language code of the given language. + type: string + example: de + name: + description: Name of the language in English. + type: string + example: German + products: + description: |- + Array of product identifiers indicating which products support this language. + Only present when no `product` query parameter is specified. + type: array + items: + type: string + enum: + - translate_text + - translate_document + - glossary + - voice + - write + example: + - translate_text + - translate_document + - glossary + - voice + - write + features: + description: |- + Array of feature strings indicating capabilities for this language with the + specified product. Only present when a `product` query parameter is specified + and the language supports one or more features for that product. + type: array + items: + type: string + enum: + - tag_handling + - glossary_id + example: + - tag_handling + - glossary_id + examples: + allSourceLanguages: + summary: All source languages (no product filter) + value: + - lang: de + name: German + products: + - translate_text + - translate_document + - glossary + - voice + - write + - lang: en + name: English + products: + - translate_text + - translate_document + - glossary + - voice + - write + translateTextSources: + summary: Source languages for text translation + value: + - lang: de + name: German + features: + - tag_handling + - glossary_id + - lang: en + name: English + features: + - tag_handling + - glossary_id + 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/target: + get: + tags: + - MetaInformation + summary: Retrieve Target Languages + operationId: getTargetLanguages + description: |- + Returns target languages supported by one or more DeepL API products. + + When no `product` parameter is specified, each language includes a `products` array + indicating which products support it. When `product` is specified, only languages + for that product are returned, the `products` field is omitted, and target languages + may include a `features` array listing product-specific capabilities. + parameters: + - name: product + in: query + required: false + schema: + type: string + enum: + - translate_text + - translate_document + - glossary + - voice + - write + description: |- + Filter languages by product. Supported values: `translate_text`, `translate_document`, + `glossary`, `voice`, `write`. + - name: source_lang + in: query + required: false + schema: + type: string + example: de + description: |- + Filter target languages to those compatible with a specific source language. + Must be used together with `product`. Language code must be valid (e.g. `de`, `en`, `fr`). + responses: + 200: + description: JSON array where each item represents a supported target language. + headers: + X-Trace-ID: + $ref: '#/components/headers/X-Trace-ID' + content: + application/json: + schema: + type: array + items: + type: object + required: + - lang + - name + properties: + lang: + description: The language code of the given language. + type: string + example: en-US + name: + description: Name of the language in English. + type: string + example: English (American) + products: + description: |- + Array of product identifiers indicating which products support this language. + Only present when no `product` query parameter is specified. + type: array + items: + type: string + enum: + - translate_text + - translate_document + - glossary + - voice + - write + example: + - translate_text + - translate_document + - glossary + - voice + - write + features: + description: |- + Array of feature strings indicating capabilities for this language with the + specified product. Only present when a `product` query parameter is specified + and the language supports one or more features for that product. + type: array + items: + type: string + enum: + - formality + - tag_handling + - glossary_id + - custom_instructions + - writing_style + - tone + example: + - formality + - tag_handling + - glossary_id + examples: + allTargetLanguages: + summary: All target languages (no product filter) + value: + - lang: en-US + name: English (American) + products: + - translate_text + - translate_document + - glossary + - voice + - write + - lang: fr + name: French + products: + - translate_text + - translate_document + - glossary + - voice + - write + translateTextTargets: + summary: Target languages for text translation + value: + - lang: de + name: German + features: + - formality + - tag_handling + - glossary_id + - lang: en-US + name: English (American) + features: + - tag_handling + - glossary_id + - lang: fr + name: French + features: + - formality + - tag_handling + - glossary_id + 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_id + example: + - source_lang: uk + target_lang: ru + features: + - tag_handling + - glossary_id + 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 +4035,7 @@ components: - ja - ko - zh - StyleRuleName: + StyleRuleName: description: Name associated with the style rule. type: string DocumentTranslationError: @@ -3957,7 +4331,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 +4339,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 +4485,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 325e9b7..ea84e60 100644 --- a/docs.json +++ b/docs.json @@ -196,6 +196,16 @@ "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/retrieve-source-languages-beta", + "api-reference/api-reference/retrieve-languages/retrieve-target-languages-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": [