From 1d9d9ef77ef7935c5e801dac474c9196f611b7c0 Mon Sep 17 00:00:00 2001 From: Maxim Brunnmeier Date: Mon, 14 Sep 2026 14:19:58 +0200 Subject: [PATCH 1/2] docs: add style_profile_id to POST /v2/translate A request names a style profile instead of listing its components. Documents how the profile is applied per text once the source language is known, that components which do not fit a text's language pair are left out, the exclusivity with the customizations object and the individual parameters (400), unknown profiles (404), and accounts without style profiles (403). Adds the style profiles row to the customize overview. --- api-reference/openapi.json | 12 ++++++++++++ api-reference/openapi.yaml | 38 +++++++++++++++++++++++++++++++++++++ docs/customize/overview.mdx | 1 + 3 files changed, 51 insertions(+) diff --git a/api-reference/openapi.json b/api-reference/openapi.json index 806fe5ec..3ecf5af4 100644 --- a/api-reference/openapi.json +++ b/api-reference/openapi.json @@ -836,6 +836,12 @@ "example": "Use a friendly, diplomatic tone" } }, + "style_profile_id": { + "description": "Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries,\nstyle rule lists, translation memories and example documents through one ID. The profile is applied\nper text once the source language is known: the glossaries with a dictionary for the text's language\npair, the style rule list for the target language, the translation memories whose source language\nmatches the text, and the example documents written in the target language. A component that does\nnot fit a text's language pair is left out for that text; this is not an error.\n\nA style profile is a complete set of customizations, so it cannot be combined with `customizations`,\n`glossary_id`, `glossary_ids`, `style_id`, `translation_memory_id`, `translation_memory_threshold` or\n`custom_instructions`. A request that combines them is rejected with `400 Bad Request`. A style\nprofile that does not exist or that your account cannot access is rejected with `404 Not Found`.\n\nAvailable for accounts with style profiles enabled; otherwise the request is rejected with\n`403 Forbidden`.", + "type": "string", + "format": "uuid", + "example": "3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47" + }, "tag_handling": { "$ref": "#/components/schemas/TagHandlingOption" }, @@ -938,6 +944,12 @@ "translation_memory_threshold": { "$ref": "#/components/schemas/TranslationMemoryThreshold" }, + "style_profile_id": { + "description": "Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries,\nstyle rule lists, translation memories and example documents through one ID. The profile is applied\nper text once the source language is known: the glossaries with a dictionary for the text's language\npair, the style rule list for the target language, the translation memories whose source language\nmatches the text, and the example documents written in the target language. A component that does\nnot fit a text's language pair is left out for that text; this is not an error.\n\nA style profile is a complete set of customizations, so it cannot be combined with `customizations`,\n`glossary_id`, `glossary_ids`, `style_id`, `translation_memory_id`, `translation_memory_threshold` or\n`custom_instructions`. A request that combines them is rejected with `400 Bad Request`. A style\nprofile that does not exist or that your account cannot access is rejected with `404 Not Found`.\n\nAvailable for accounts with style profiles enabled; otherwise the request is rejected with\n`403 Forbidden`.", + "type": "string", + "format": "uuid", + "example": "3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47" + }, "tag_handling": { "$ref": "#/components/schemas/TagHandlingOption" }, diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index c34eceef..e7be6fc1 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -668,6 +668,25 @@ paths: items: type: string example: "Use a friendly, diplomatic tone" + style_profile_id: + description: |- + Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries, + style rule lists, translation memories and example documents through one ID. The profile is applied + per text once the source language is known: the glossaries with a dictionary for the text's language + pair, the style rule list for the target language, the translation memories whose source language + matches the text, and the example documents written in the target language. A component that does + not fit a text's language pair is left out for that text; this is not an error. + + A style profile is a complete set of customizations, so it cannot be combined with `customizations`, + `glossary_id`, `glossary_ids`, `style_id`, `translation_memory_id`, `translation_memory_threshold` or + `custom_instructions`. A request that combines them is rejected with `400 Bad Request`. A style + profile that does not exist or that your account cannot access is rejected with `404 Not Found`. + + Available for accounts with style profiles enabled; otherwise the request is rejected with + `403 Forbidden`. + type: string + format: uuid + example: 3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47 tag_handling: $ref: '#/components/schemas/TagHandlingOption' tag_handling_version: @@ -755,6 +774,25 @@ paths: $ref: '#/components/schemas/TranslationMemoryId' translation_memory_threshold: $ref: '#/components/schemas/TranslationMemoryThreshold' + style_profile_id: + description: |- + Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries, + style rule lists, translation memories and example documents through one ID. The profile is applied + per text once the source language is known: the glossaries with a dictionary for the text's language + pair, the style rule list for the target language, the translation memories whose source language + matches the text, and the example documents written in the target language. A component that does + not fit a text's language pair is left out for that text; this is not an error. + + A style profile is a complete set of customizations, so it cannot be combined with `customizations`, + `glossary_id`, `glossary_ids`, `style_id`, `translation_memory_id`, `translation_memory_threshold` or + `custom_instructions`. A request that combines them is rejected with `400 Bad Request`. A style + profile that does not exist or that your account cannot access is rejected with `404 Not Found`. + + Available for accounts with style profiles enabled; otherwise the request is rejected with + `403 Forbidden`. + type: string + format: uuid + example: 3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47 tag_handling: $ref: '#/components/schemas/TagHandlingOption' outline_detection: diff --git a/docs/customize/overview.mdx b/docs/customize/overview.mdx index b1184a2c..4491cbbf 100644 --- a/docs/customize/overview.mdx +++ b/docs/customize/overview.mdx @@ -16,6 +16,7 @@ DeepL's customization features let you control terminology, style, and consisten | [Custom instructions](/docs/customize/custom-instructions) | Tone, phrasing, and domain-specific behavior via natural-language directives | Inline per request via `custom_instructions`, or stored in a style rule list | | [Translation memories](/docs/customize/using-translation-memories) | Reuse of your previously approved translations for matching segments | Stored on your account; passed per request via `translation_memory_id` | | [Spoken terms](/docs/customize/improving-transcription-with-spoken-terms) | Recognition of specific terms during Voice API speech transcription | Stored on your account; passed per voice session via `spoken_terms_id` | +| [Style profiles](/api-reference/style-profiles/list-all-style-profiles) | A named bundle of glossaries, style rules, translation memories and example documents for one purpose | Stored on your account; passed per request via `style_profile_id`, which stands in for the individual parameters | Glossaries, style rules, custom instructions, and translation memories work with both [text translation](/docs/translate/translate-text-quickstart) and [document translation](/docs/translate/translate-documents-quickstart), support all `model_type` values, and can be combined in a single request. Spoken terms apply to [Voice API](/docs/voice/overview) sessions, where they can be combined with glossaries. From 59899299a21bf70af9af370ebccd926ad611add9 Mon Sep 17 00:00:00 2001 From: Maxim Brunnmeier Date: Tue, 15 Sep 2026 10:49:54 +0200 Subject: [PATCH 2/2] docs: add style_profile_id to POST /v2/document The document endpoint takes the same style profile parameter as text translation. The profile is applied once the document's source language is known; it cannot be combined with the individual customization parameters (400), and accounts without style profiles get a 403. --- api-reference/openapi.json | 6 ++++++ api-reference/openapi.yaml | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/api-reference/openapi.json b/api-reference/openapi.json index 3ecf5af4..79373f58 100644 --- a/api-reference/openapi.json +++ b/api-reference/openapi.json @@ -1210,6 +1210,12 @@ "translation_memory_threshold": { "$ref": "#/components/schemas/TranslationMemoryThreshold" }, + "style_profile_id": { + "description": "Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries,\nstyle rule lists, translation memories and example documents through one ID. The profile is applied\nonce the document's source language is known: the glossaries with a dictionary for the language\npair, the style rule list for the target language, the translation memories whose source language\nmatches the document, and the example documents written in the target language. A component that\ndoes not fit the language pair is left out; this is not an error.\n\nA style profile is a complete set of customizations, so it cannot be combined with `glossary_id`,\n`glossary_ids`, `style_id`, `translation_memory_id` or `translation_memory_threshold`. A request\nthat combines them is rejected with `400 Bad Request`. A style profile that does not exist or that\nyour account cannot access fails the document translation.\n\nAvailable for accounts with style profiles enabled; otherwise the request is rejected with\n`403 Forbidden`.", + "type": "string", + "format": "uuid", + "example": "3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47" + }, "enable_watermark": { "description": "When `true`, adds a \"Translated by DeepL\" watermark to the translated document.\n\nOnly supported for `docx` and `pdf` output. For all other output formats the parameter is ignored and the document is returned without a watermark.", "type": "boolean", diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index e7be6fc1..899049fa 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -1016,6 +1016,25 @@ paths: $ref: '#/components/schemas/TranslationMemoryId' translation_memory_threshold: $ref: '#/components/schemas/TranslationMemoryThreshold' + style_profile_id: + description: |- + Translate with a [style profile](/api-reference/style-profiles/get-style-profile): its glossaries, + style rule lists, translation memories and example documents through one ID. The profile is applied + once the document's source language is known: the glossaries with a dictionary for the language + pair, the style rule list for the target language, the translation memories whose source language + matches the document, and the example documents written in the target language. A component that + does not fit the language pair is left out; this is not an error. + + A style profile is a complete set of customizations, so it cannot be combined with `glossary_id`, + `glossary_ids`, `style_id`, `translation_memory_id` or `translation_memory_threshold`. A request + that combines them is rejected with `400 Bad Request`. A style profile that does not exist or that + your account cannot access fails the document translation. + + Available for accounts with style profiles enabled; otherwise the request is rejected with + `403 Forbidden`. + type: string + format: uuid + example: 3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47 enable_watermark: description: |- When `true`, adds a "Translated by DeepL" watermark to the translated document.