Skip to content

deepl

deepl

DeepL REST API v2 — machine translation, document translation, glossary management, text improvement (Write), and usage tracking

Source: DeepL REST API v2

Credits: Dunkel Cloud GmbH Updated: 2026-03-31

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

Last reviewed: 2026-03-31

Setup

  1. Sign up for a DeepL API account at https://www.deepl.com/pro-api
  2. Choose API Free (500k chars/month) or API Pro (pay-per-use)
  3. Navigate to Account → API Keys
  4. Copy your Authentication Key (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:fx for Free, without :fx for Pro)

Environment variable: CREDENTIAL_DEEPL_AUTH_KEY

Authentication docs ↗

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).