Free Endpoint
The default DeepLX endpoint. Since v1.2.0, requests are routed through the oneshot endpoint that the official DeepL Chrome extension uses (oneshot-free.www.deepl.com/v1/translate) — a stateless REST endpoint that lives on a much looser rate-limit pool than the legacy JSON-RPC backend.
Anonymous access; no account, cookie, or session required.
/translate
Method: POST
Request Headers
| Header | Description | Value |
|---|---|---|
Content-Type | The content type of the request body. | application/json |
Authorization | Optional. Access token to protect your own DeepLX instance, when DeepLX is started with -token. | Bearer your_access_token |
If you cannot pass Authorization, you can also use a URL parameter instead: /translate?token=your_access_token.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
text | string | The text you want to translate. | true |
target_lang | string | The language code you want to translate to (e.g. DE, EN-US, ZH-HANS). | true |
source_lang | string | The language code of the source text. Set to auto or omit entirely for server-side autodetection. | false |
Response
{
"alternatives": null,
"code": 200,
"data": "Hallo Welt",
"id": 1779423094485,
"method": "Free",
"source_lang": "EN",
"target_lang": "DE"
}TIP
alternatives is always null since v1.2.0 — the oneshot endpoint does not return alternative translations. The field is kept for backward compatibility with clients that still read it.
Error Responses
Since v1.2.1, source and target language codes are validated against the official supported list. Unsupported codes return HTTP 400:
{
"code": 400,
"message": "unsupported target_lang \"XX\"; valid codes: AR, BG, CS, DA, DE, EL, EN, EN-GB, EN-US, ES, ES-419, ET, FI, FR, HE, HU, ID, IT, JA, KO, LT, LV, NB, NL, PL, PT, PT-BR, PT-PT, RO, RU, SK, SL, SV, TR, UK, VI, ZH, ZH-HANS, ZH-HANT"
}| Code | Meaning |
|---|---|
200 | Translation succeeded. |
400 | target_lang or source_lang is invalid (unknown code, empty, or auto used as target). |
404 | text is empty. |
429 | DeepL rate-limited the upstream call. Rare on the oneshot pool; back off and retry. |
503 | Upstream failure or unexpected non-200 response from DeepL. |
Supported Languages
The 38 codes accepted by source_lang / target_lang mirror the language table the official Chrome extension bundles. Codes are case-insensitive.
Target-capable (36): AR, BG, CS, DA, DE, EL, EN-GB, EN-US, ES, ES-419, ET, FI, FR, HE, HU, ID, IT, JA, KO, LT, LV, NB, NL, PL, PT-BR, PT-PT, RO, RU, SK, SL, SV, TR, UK, VI, ZH (Simplified), ZH-HANT (Traditional)
Source-only aliases: EN (resolves to generic English when sent as source_lang, or to EN-US when sent as target_lang), PT (same pattern, defaults to PT-BR as target). ZH-HANS is accepted as an alias for ZH.
For source_lang, the value auto (or omitting the field entirely) lets DeepL autodetect the language; the detected code is echoed back as source_lang in the response.