Switching from DeepL
Δεν έχει μεταφραστεί ακόμη — εμφανίζεται στα αγγλικά.
The request and response formats are deliberately compatible with DeepL's v2 text API. In most codebases the migration touches configuration, not code.
What changes
| Setting | DeepL | Language API |
|---|---|---|
| Base URL | https://api.deepl.com/v2 or https://api-free.deepl.com/v2 | https://api.langapi.xyz/v1 |
| Key | xxxxxxxx-xxxx-...:fx | la_live_xxxxxxxx |
| Auth header | Authorization: DeepL-Auth-Key <key> | Same header accepted; Authorization: Bearer <key> preferred |
There is one host for all plans and both key modes. Free and paid traffic are not split across different domains.
Official client libraries
Because the DeepL-Auth-Key header is honoured, the DeepL client libraries work with only the server URL changed.
Python:
import deepl
client = deepl.Translator(
"la_live_xxxxxxxx",
server_url="https://api.langapi.xyz/v1",
)
result = client.translate_text(
"Your session has expired. Please sign in again.",
source_lang="EN",
target_lang="SV",
)
print(result.text)
Node:
import * as deepl from 'deepl-node';
const client = new deepl.Translator('la_live_xxxxxxxx', {
serverUrl: 'https://api.langapi.xyz/v1',
});
const result = await client.translateText(
'Your session has expired. Please sign in again.',
'en',
'sv',
);
console.log(result.text);
Raw HTTP with the DeepL header and a form body:
curl https://api.langapi.xyz/v1/translate \
-H "DeepL-Auth-Key: la_live_xxxxxxxx" \
--data-urlencode "text=Your session has expired. Please sign in again." \
--data-urlencode "target_lang=SV"
Compatibility matrix
| Feature | Status |
|---|---|
POST /translate with text, target_lang, source_lang, formality, glossary_id, tag_handling, preserve_formatting, context | Identical |
text as repeated form field or JSON array | Identical |
translations[].text and translations[].detected_source_language | Identical |
GET /languages?type=source and ?type=target with supports_formality | Identical |
GET /usage with character_count and character_limit | Identical, with a billing object added |
Glossary create, list, get, entries, delete and /glossary-language-pairs | Identical, tab-separated entries accepted |
Regional codes EN-GB, EN-US, PT-PT, PT-BR | Identical |
formality: prefer_more / prefer_less | Supported |
split_sentences | Not supported; splitting is internal |
outline_detection | Not supported |
Document translation (/document) | Not available |
| Glossary update | Not available; glossaries are immutable |
Differences you may need to handle
- Error bodies. Errors are RFC 9457 problem documents with a stable
code field rather than {"message": "..."}. Code that inspects DeepL's message strings must switch to code. See Error codes reference.
- Additional response data. The translate response includes
request_id,
characters and an engine token object. The headers X-Request-Id, X-Characters-Billed and X-RateLimit-* are new. Clients that ignore unknown fields are unaffected.
- Free usage. Instead of a separate free host, a verified account receives
credit for 100,000 characters on the regular host.
- Strict formality.
moreandlesson a target without formality
support answer 400, as with DeepL. The prefer_ variants avoid that.
Cutover checklist
- Create a
la_test_key and point staging at the new base URL. - Run the translation tests you already have. Failures here are genuine
incompatibilities, not quality differences.
- Translate a sample of real production strings through both providers and
have someone who reads the target language compare them.
- Switch production. Leave the previous configuration in place for a week so
that reverting is a config change.
- Revoke keys you no longer need, on both sides.
Comparing cost
Both providers charge per source character including whitespace and markup, so the comparison is a multiplication. Take the character volume from a recent invoice and enter it on the pricing page. Note that cache hits are charged here, so a workload with a high repeat rate should be estimated with its full volume.
Αναθεωρήθηκε στις 7 Σεπ 2026, 12:00 π.μ.