Reference · Tools
DeepL
Translate text between languages using the DeepL translation API
The DeepL node translates text between languages using the DeepL neural translation API, with options for formality level, sentence splitting, and formatting preservation. You can use it to build workflows that localize content automatically — for example, routing incoming support tickets through DeepL before passing them to a language-specific queue. Each input item is translated once and returns both the translated text and the detected source language.
- Node type
- Action
- Parameters
- 6
- Outputs
- Output, Error
- Credentials
- DeepL API
DeepL
Translate text between languages using DeepL
Overview
DeepL is a neural machine translation service known for high-quality translations. This tool translates text between languages using the DeepL API. It supports both the Pro and Free API plans (which use different base URLs), automatic source language detection, formality control, sentence splitting options, and formatting preservation. The tool processes one translation per input item and returns the translated text along with the detected source language.
Category: Utility
Tool Name: deepl
Version: 1
Appearance: Icon: si-deepl | Color: #0F2B46
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires DeepL API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Language | language |
Operations
| Operation | Value | Description |
|---|---|---|
| Translate | translate | Translate text to another language |
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Text | string | Yes | — | Input text to translate. Supports expressions like {{ $json.body }}. (shown when Operation is translate) |
| Target Language | string | Yes | — | Target language code (e.g., “DE” for German, “FR” for French, “ES” for Spanish, “EN-GB” for British English, “EN-US” for American English, “JA” for Japanese, “ZH” for Chinese). See DeepL API docs for the full list of supported language codes. Supports expressions. (shown when Operation is translate) |
| Additional Fields | collection | No | {} | Optional settings that refine how DeepL translates. Supports expressions inside its fields. (shown when Operation is translate) |
| — Source Language | string | No | — | Source language code (e.g., “EN”, “DE”, “FR”). Leave empty for automatic detection. Note: “EN-GB” and “EN-US” are automatically normalized to “EN” for the source language. |
| — Split Sentences | options | No | 1 | How the translation engine should split sentences. |
Options: nonewlines (split on interpunction only, ignoring newlines), 0 (treat all text as a single sentence), 1 (split on interpunction and newlines) | ||||
| — Preserve Formatting | options | No | 0 | Whether the translation engine should respect the original formatting, even if it would usually correct some aspects. |
Options: 0 (apply corrections — fix punctuation at the beginning and end of sentences and fix lower/upper casing at the beginning), 1 (do not correct — keep text as similar as possible to the original) | ||||
| — Formality | options | No | default | How formal or informal the target text should be. May not be supported with all languages. |
Options: more (formal), less (informal), default (neutral) | ||||
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
One output item per input item. DeepL returns one translation per request, and that translation object is merged into the item JSON at the top level — the incoming fields stay addressable alongside it, and binary data is forwarded.
The merged object carries the translated text and the source language DeepL detected for it, so a downstream node reads the translation straight off the item rather than from a nested wrapper. Because the merge happens at the top level, an incoming field with the same name as one of DeepL’s response keys is overwritten; rename such fields upstream if you need to keep both.
Setting Formality to default sends no formality preference at all, which is why some languages accept it while rejecting more/less.
Usage Examples
- Translate English text to German
- Translate a document to French with formal tone
- Auto-detect source language and translate to Spanish
- Translate text preserving original formatting
Example Configuration
Translate a field into German and let DeepL detect the source language:
{
"type": "deepl",
"parameters": {
"resource": "language",
"operation": "translate",
"text": "{{ $json.message }}",
"translateTo": "DE"
}
}
Translate customer correspondence formally, keeping the original formatting:
{
"type": "deepl",
"parameters": {
"resource": "language",
"operation": "translate",
"text": "{{ $json.emailBody }}",
"translateTo": "DE",
"additionalFields": {
"sourceLang": "EN",
"preserveFormatting": "1",
"formality": "more"
}
}
}
Translate casual copy into French with an informal register:
{
"type": "deepl",
"parameters": {
"resource": "language",
"operation": "translate",
"text": "{{ $json.caption }}",
"translateTo": "FR",
"additionalFields": {
"formality": "less",
"splitSentences": "nonewlines"
},
"maxConcurrency": 5
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Translate text between languages using the DeepL neural translation API, with options for formality, sentence splitting, and formatting preservation.
- Free and Pro plans use different endpoints. The plan recorded on the credential decides which one the node calls, so a key from the wrong plan fails to authenticate even when it is valid.
- Leave Source Language empty to auto-detect. Set it only when you already know the language and want to rule out a misdetection.
- Regional English is a target-only distinction.
EN-GBandEN-USare valid targets, but as a source language both are normalized toEN. - Additional Fields is a collection. Its fields nest under the
additionalFieldskey rather than sitting at the top level of the parameters object.
Frequently asked questions
Do I need a different credential for the Free plan versus the Pro plan?
Yes. DeepL's Free and Pro plans use different API endpoints, and the node picks the correct one based on the plan recorded on your credential. If you configure a Free API key under a Pro credential (or vice versa), authentication will fail even though the key itself is valid. Make sure the plan setting on your DeepL API credential in BusyBot matches the plan your key was issued under.
Should I set the Source Language, or leave it blank?
Leave it empty unless you have a strong reason to override it. DeepL's automatic detection is reliable for most inputs, and leaving the field blank lets the API detect the language without risk of locking in the wrong one. Set it explicitly only when you know the source language with certainty and want to prevent a potential misdetection — for example, when translating very short strings that could be ambiguous.
Can I use EN-GB or EN-US as a source language?
Not meaningfully. Regional English variants like EN-GB and EN-US are only valid as target languages. If you specify either as a source, DeepL normalizes it to plain EN anyway. Use the regional codes only in the target language field when you need British or American English output specifically.
Where do formality, sentence splitting, and formatting options live in the node?
These options are inside the Additional Fields collection rather than at the top level of the node's parameters. When the node builds its API request, those fields are grouped under an additionalFields key, so look for the Additional Fields section to expand it and access formality control, sentence splitting, and formatting preservation settings.
What does the node return, and what happens if the translation fails?
On success, the node sends data through the Output branch, including the translated text and the detected source language. If the API call fails — for example, due to an invalid credential or an unsupported language code — the node routes execution through the Error output instead, so you can handle failures separately without stopping the rest of your workflow.
Build with the DeepL node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need DeepL API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.