deepl
deepl
DeepL REST API v2 — machine translation, document translation, glossary management, text improvement (Write), and usage tracking
Source: DeepL REST API v2
Coverage
78% (14 of ~18 endpoints)
Focus: text translation, document translation, glossaries, text improvement (Write), languages, usage
Missing: admin API (key management, org usage), voice API (WebSocket), style rules CRUD
Setup
- Sign up for a DeepL API account at https://www.deepl.com/pro-api
- Choose API Free (500k chars/month) or API Pro (pay-per-use)
- Navigate to Account → API Keys
- Copy your Authentication Key (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:fx for Free, without :fx for Pro)
Environment variable: CREDENTIAL_DEEPL_AUTH_KEY
Free API keys end with ":fx" and must use api-free.deepl.com. Pro keys use api.deepl.com. Legacy auth via query param auth_key was deprecated Nov 2025. All auth must use the Authorization header with "DeepL-Auth-Key" scheme. Rate limits are not publicly documented but 429 responses include Retry-After header.
Install
Add to your backends.yaml:
- name: deepl
transport: rest
dadl: /app/dadl/deepl.dadl
url: "https://api.deepl.com/v2" # use https://api-free.deepl.com/v2 for Free plan
Set the credential:
CREDENTIAL_DEEPL_AUTH_KEY=your-token-here Tools (13)
POST translate Translate text into a target language. Supports up to 50 texts per request (max 128 KiB body). Auto-detects source language if not specified. POST upload_document Upload a document for translation. Returns document_id and document_key for status polling and download. Supports docx, pptx, xlsx, pdf, html, txt, xliff, srt, jpg, png. POST check_document_status Check the translation status of an uploaded document. Status: queued, translating, done, error. Poll until done. POST download_document Download the translated document. Only available when status is 'done'. Document is auto-deleted after download (one-time retrieval). GET list_glossaries List all glossaries for the authenticated account POST create_glossary Create a new glossary with term pairs. Entries are TSV or CSV formatted (one pair per line). GET get_glossary Retrieve metadata of a single glossary (name, languages, entry count, creation time) GET get_glossary_entries Retrieve all term pairs of a glossary as tab-separated values DELETE delete_glossary Permanently delete a glossary. This action cannot be undone. GET list_glossary_language_pairs List all supported source-target language pairs for glossaries POST rephrase_text Improve and rephrase text without changing the language (max 10 KiB body). Supports writing styles and tones. Does NOT translate — source and target language must match. GET list_languages List supported languages. Use type=source for source languages, type=target for target languages (includes regional variants and formality support info). GET get_usage Retrieve character usage and quota for the current billing period. Returns character_count (consumed) and character_limit (max allowed).