Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions api-reference/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@
"example": "def3a26b-3e84-45b3-84ae-0c0aaf3525f7"
},
"style_id": {
"description": "Specify the [style rule list](/api-reference/style-rules) to use for the translation.\n\n**Important:** The target language has to match the language of the style rule list.\n\n**Note:** Any request with the `style_id` parameter enabled will use `quality_optimized` models. Requests combining `style_id` and `model_type: latency_optimized` will be rejected.",
"description": "Specify the [style rule list](/api-reference/style-rules) to use for the translation.\n\n**Important:** The target language has to match the language of the style rule list.\n\nAll `model_type` values are supported.",
"type": "string",
"example": "7ff9bfd6-cd85-4190-8503-d6215a321519"
},
Expand All @@ -799,7 +799,7 @@
"$ref": "#/components/schemas/TranslationMemoryThreshold"
},
"custom_instructions": {
"description": "Specify a list of instructions to customize the translation behavior. Up to 10 custom instructions can be specified, each with a maximum of 300 characters.\n\n**Important:** The target language must be `de`, `en`, `es`, `fr`, `it`, `ja`, `ko`, `zh` or any variants of these languages.\n\n**Note:** Any request with the `custom_instructions` parameter enabled will default to use the `quality_optimized` model type. Requests combining `custom_instructions` and `model_type: latency_optimized` will be rejected.",
"description": "Specify a list of instructions to customize the translation behavior. Up to 10 custom instructions can be specified, each with a maximum of 300 characters.\n\n**Important:** The target language must be `de`, `en`, `es`, `fr`, `it`, `ja`, `ko`, `zh` or any variants of these languages.",
"type": "array",
"items": {
"type": "string",
Expand Down Expand Up @@ -7685,7 +7685,7 @@
"TranslationMemoryId": {
"type": "string",
"format": "uuid",
"description": "A unique ID assigned to a translation memory.\n\n**Note:** Requests with the `translation_memory_id` parameter must use the `quality_optimized` model type. Requests combining `translation_memory_id` and `model_type: latency_optimized` will be rejected.",
"description": "A unique ID assigned to a translation memory.",
"example": "a74d88fb-ed2a-4943-a664-a4512398b994"
},
"TranslationMemorySourceLanguage": {
Expand Down
6 changes: 1 addition & 5 deletions api-reference/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ paths:

**Important:** The target language has to match the language of the style rule list.

**Note:** Any request with the `style_id` parameter enabled will use `quality_optimized` models. Requests combining `style_id` and `model_type: latency_optimized` will be rejected.
All `model_type` values are supported.
type: string
example: 7ff9bfd6-cd85-4190-8503-d6215a321519
translation_memory_id:
Expand All @@ -598,8 +598,6 @@ paths:
Specify a list of instructions to customize the translation behavior. Up to 10 custom instructions can be specified, each with a maximum of 300 characters.

**Important:** The target language must be `de`, `en`, `es`, `fr`, `it`, `ja`, `ko`, `zh` or any variants of these languages.

**Note:** Any request with the `custom_instructions` parameter enabled will default to use the `quality_optimized` model type. Requests combining `custom_instructions` and `model_type: latency_optimized` will be rejected.
type: array
items:
type: string
Expand Down Expand Up @@ -5517,8 +5515,6 @@ components:
format: uuid
description: |-
A unique ID assigned to a translation memory.

**Note:** Requests with the `translation_memory_id` parameter must use the `quality_optimized` model type. Requests combining `translation_memory_id` and `model_type: latency_optimized` will be rejected.
example: a74d88fb-ed2a-4943-a664-a4512398b994
TranslationMemorySourceLanguage:
description: The source language of the translation memory.
Expand Down
2 changes: 1 addition & 1 deletion api-reference/style-rules.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -936,5 +936,5 @@ curl -X POST 'https://api.deepl.com/v2/translate' \
```

<Info>
Any request with the `style_id` parameter enabled will use `quality_optimized` models. Requests combining `style_id` and `model_type: latency_optimized` will be rejected.
All `model_type` values are supported with style rules.
</Info>
14 changes: 2 additions & 12 deletions api-reference/translate.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,6 @@ Note that we do not include examples for our client libraries in every single se
To ensure accurate automatic language detection, the API uses next-gen models for all requests that omit `source_lang`, regardless of `model_type`. If your source language is known, you can specify `source_lang` to allow classic models to be used where available for your language pair. See [supported languages](/docs/getting-started/supported-languages) for language-specific model availability.
</Warning>

<Info>
[Tag handling v2](/docs/xml-and-html-handling/tag-handling-v2) is compatible only with next-gen models and implicitly sets
`model_type` to `quality_optimized`. Setting both `model_type=latency_optimized` and `tag_handling_version=v2` will return an
error.
</Info>

See [About the model_type parameter](#about-the-model_type-parameter) for more details.
</ParamField>
<ParamField body="split_sentences" type="string">
Expand Down Expand Up @@ -290,7 +284,6 @@ error.
<Info>
The target language has to match the language of the style rule list.

Additionally, any request with the `style_id` parameter enabled will default to use the `quality_optimized` model type. Requests combining `style_id` and `model_type: latency_optimized` will be rejected.
</Info>
</ParamField>
<ParamField body="custom_instructions" type="array[string]">
Expand All @@ -299,15 +292,12 @@ error.
<Info>
The target language must be `de`, `en`, `es`, `fr`, `it`, `ja`, `ko`, `zh` or any variants of these languages.

Any request with the `custom_instructions` parameter enabled will default to use the `quality_optimized` model type. Requests combining `custom_instructions` and `model_type: latency_optimized` will be rejected. You can find best practices on how to write custom instructions [here](/docs/best-practices/custom-instructions).
You can find best practices on how to write custom instructions [here](/docs/best-practices/custom-instructions).
</Info>
To check language support dynamically, call <a href="/api-reference/languages/retrieve-supported-languages-by-resource"><code>GET /v3/languages?resource=translate_text</code></a> and check for the <code>style_rules</code> feature key on the target language.
</ParamField>
<ParamField body="translation_memory_id" type="string">
The [translation memory](/api-reference/translation-memory/list-translation-memories) to use for the translation. The value should be the UUID of a translation memory associated with your account.
<Info>
Requests with the `translation_memory_id` parameter must use the `quality_optimized` model type. Requests combining `translation_memory_id` and `model_type: latency_optimized` will be rejected.
</Info>
</ParamField>
<ParamField body="translation_memory_threshold" type="integer">
The minimum matching percentage required for a translation memory segment to be applied (recommended to be 75% or higher). Accepts values from 0 to 100. Default: `75`.
Expand Down Expand Up @@ -386,7 +376,7 @@ error.
### About the model\_type parameter

The `model_type` parameter lets a user specify if they would like to optimize for speed until a request is served (latency) or translation quality. This is done on a best-effort basis by DeepL, not every language pair and feature must behave differently depending on this parameter.
Currently, the DeepL translation API defaults to the classic models if no `model_type` is included in the requests, except for certain languages (e.g. Thai, which is next-gen only) or certain features (e.g. tag handling v2, which only allows `quality_optimized`).
Currently, the DeepL translation API defaults to `latency_optimized` if no `model_type` is included in the request. All features and language pairs are compatible with all `model_type` values.
Note that the API intentionally does not allow the user to specify a model, but rather their goal, so that the DeepL backend can choose the most suitable model for the user (this avoids users constantly having to update their code with new model versions and learning many different models name and their specifics).

As of December 2025, all source and target languages are supported by next-gen models. Please note that DeepL reserves the right to quietly change which model serves e.g. a `model_type=quality_optimized` request, as long as we think it is a net benefit to the user (e.g. no significant latency increase, but a quality increase, or a significant latency reduction with no or only very slight decrease in quality).
Expand Down
6 changes: 1 addition & 5 deletions docs/best-practices/custom-instructions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,7 @@ When using custom instructions, keep these constraints in mind:
- **Maximum instructions**: Up to 10 custom instructions per request
- **Character limit**: Each instruction can contain a maximum of 300 characters
- **Supported target languages**: `de`, `en`, `es`, `fr`, `it`, `ja`, `ko`, `zh`, or any variants of these languages
- **Model requirement**: Requests with `custom_instructions` automatically use the `quality_optimized` model type

<Warning>
Combining `custom_instructions` with `model_type: latency_optimized` will result in an error. Custom instructions require the quality-optimized model.
</Warning>
- **Model compatibility**: Custom instructions are compatible with all `model_type` values.

## Related documentation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ If you omit the `model_type`, the API normally defaults to `latency_optimized`.
### Special cases

* If your request omits the `source_lang`, the API will use next-generation models to ensure the best possible language detection.
* [tag handling v2](/docs/xml-and-html-handling/tag-handling-v2#whats-new-in-v2) requires next-generation models. Setting both `model_type=latency_optimized` and `tag_handling_version=v2` yields an error.
* [tag handling v2](/docs/xml-and-html-handling/tag-handling-v2#whats-new-in-v2) uses next-generation models. It is compatible with all `model_type` values.
* For some languages, like Thai, the API uses the same model, regardless of requested `model_type`. This behavior may change as our models evolve.

## Limits
Expand Down
11 changes: 10 additions & 1 deletion docs/resources/roadmap-and-release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ rss: true
</Update>

<Update label="June 2026">
## June 17 - `latency_optimized` Now Supported for All Features
- The `latency_optimized` model type is now fully compatible with all Translate API features, including:
- [Tag handling v2](/docs/xml-and-html-handling/tag-handling-v2) (`tag_handling_version=v2`)
- [Style rules](/api-reference/style-rules) (`style_id`)
- [Custom instructions](/docs/best-practices/custom-instructions) (`custom_instructions`)
- [Translation memories](/docs/learning-how-tos/examples-and-guides/how-to-use-translation-memories) (`translation_memory_id`)
- All language pairs, including languages previously restricted to `quality_optimized`
- Previously, combining `model_type=latency_optimized` with these features would return an error. These restrictions have been removed.

## June 15 - API Key Permissions (Private Beta)
- Developer API keys can now be scoped to specific endpoints, so a key can be limited to, for example, translating text or reading glossaries. See [API key permissions](/docs/getting-started/managing-api-keys#api-key-permissions).
- Assign one or more scopes when [creating or editing a key](https://www.deepl.com/your-account/keys). A scoped key returns `403 Forbidden` on any endpoint its scopes don't cover.
Expand Down Expand Up @@ -133,7 +142,7 @@ Use the `DeepL-Auth-Key` header instead.

## January 8 - 81 New Languages in GA
- Promoted all 81 beta languages to standard language support. These languages are now part of the main source and target language lists.
- Note that these languages only work with `quality_optimized` model or when no model is specified, and are not compatible with `latency_optimized` requests.
- These languages are compatible with all `model_type` values including `latency_optimized`.
- The `enable_beta_languages` parameter is maintained for backward compatibility but has no effect.

See [here](../getting-started/supported-languages) for the complete language list.
Expand Down
10 changes: 2 additions & 8 deletions docs/xml-and-html-handling/tag-handling-v2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -112,18 +112,12 @@ Only XML is strictly parsed. HTML is not strictly parsed.

## Compatibility

Tag handling v2 is currently only compatible with the `quality_optimized` model type. Support for `latency_optimized` will be added in a future update.
Tag handling v2 is compatible with all model types.

| Model Type | v1 Support | v2 Support |
|------------|:----------:|:----------:|
| `quality_optimized` | ✅ | ✅ |
| `latency_optimized` | ✅ | ❌ |

When you set `tag_handling_version` to `v2`, the `model_type` is implicitly set to `quality_optimized`.

<Warning>
Requests that specify both `model_type=latency_optimized` and `tag_handling_version=v2` will return an error.
</Warning>
| `latency_optimized` | ✅ | ✅ |

## Migration Guide

Expand Down