All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.28.0 - 2026-02-05
- Updated three tests to be less flakey and reflect new behavior regarding the model type.
- Improved
NotFoundExceptionerror message by removing the misleading "check server_url" suggestion.
- Fixed a bug where translating with style rules would sometimes incorrectly result in a "target_lang must match style rule language" error
- Updated dependencies to fix CVE-2025-66418 and CVE-2025-66471
1.27.0 - 2025-12-10
- Added
tag_handling_versionparameter totranslate_text()to specify which version of the tag handling algorithm to use. Options arev1andv2. - Added an example CLI script for realtime audio translation using DeepL's Voice API.
1.26.0 - 2025-12-03
- Added
custom_instructionsparameter totranslate_text()to customize translation behavior with up to 10 instructions (max 300 characters each). Only supported for target languages:de,en,es,fr,it,ja,ko,zhand their variants. Note: using thecustom_instructionsparameter will use thequality_optimizedmodel type as the default. Requests combiningcustom_instructionsand thelatency_optimizedmodel type will be rejected.
- Fixed the cleanup of multilingual glossaries in the test suite where glossaries were not properly deleted after the test execution
1.25.0 - 2025-11-12
- Added support for the
GET /v3/style_rulesendpoint in the client library, the implementation can be found in theDeepLClientclass. Please refer to the README for usage instructions - Added
style_idoption totranslate_text()which allows text translation with style rules.
1.24.0 - 2025-11-04
extra_body_parameterswill now overwrite already set HTTP parameters
1.23.0 - 2025-09-30
- Added feature to add arbitrary body parameters in
translate_text
- Dropped support for Python 3.8 and older.
- Updated
requestsminimum version to 2.32.4 to resolve security advisories CVE-2024-47081 and CVE-2024-35195.
1.22.0 - 2025-04-30
- Added support for the /v3 Glossary APIs in the client library while providing backwards compatability for the previous /v2 Glossary endpoints. Please refer to the README for usage instructions.
1.21.1 - 2025-03-12
- (beta) optional parameter to specify timeout for document translation calls
1.21.0 - 2025-01-15
- Added support for the Write API in the client library, the implementation
can be found in the
DeepLClientclass. Please refer to the README for usage instructions.
- The main functionality of the library is now also exposed via the
DeepLClientclass. Please change your code to use this over theTranslatorclass whenever convenient.
1.20.0 - 2024-11-15
- Added
model_typeoption totranslate_text()to use models with higher translation quality (available for some language pairs), or better latency. Options are'quality_optimized','latency_optimized', and'prefer_quality_optimized' - Added the
model_type_usedfield totranslate_text()response, that indicates the translation model used when themodel_typeoption is specified.
1.19.1 - 2024-09-17
- Fixed typing issues, black-formatting and a test case failure.
1.19.0 - 2024-09-17
- Added
billed_charactersto response fromtranslate_text().
1.18.0 - 2024-04-26
-
New language available: Arabic (
'ar'). Add language code constants and tests. Arabic is currently supported only for text translation; document translation support for Arabic is coming soon.Note: older library versions also support the new language, this update only adds new code constants.
-
Added a section in the readme on how to configure retry options in
http_client.py
1.17.0 - 2024-02-06
- Added
output_formatparameter for document upload function, that indicates the file extension of the desired file format for the translated document. - Added basic usage example of the library
- Fixed typechecking errors when using
mypy'sstrictmode- Thanks to derlikh-smart and vad for the report in #82
1.16.1 - 2023-11-07
- Fixed typo in error message when no auth key is provided.
- Removed dependency on
packagingby replacing version comparison.
1.16.0 - 2023-11-03
- Add optional
contextparameter for text translation, that specifies additional context to influence translations, that is not translated itself.
- Added notice in Readme that starting in 2024 the library will drop support for Python versions that are officially end-of-life.
- DeepL API calls now send requests with JSON-encoded bodies where possible.
- Catch failures while constructing the user agent string.
- Added
py.typedto the package so that our package is typed for our users. - Fixed most type errors in the package.
1.15.0 - 2023-06-09
- Removed
CHANGELOG.mdandSECURITY.mdfrom the python package. TheLICENSEfile is no longer installed, but still included in package tarball and wheel files.- Thanks to TurtleWilly for the report in #66.
- Fix a dependency error in our CI by updating to a higher poetry version in most cases.
- Fix getUsage request to be a HTTP GET request, not POST.
- Change document translation to poll the server every 5 seconds. This should greatly reduce observed document translation processing time.
1.14.0 - 2023-02-21
- Add example to translate JSON inputs.
- Added platform and python version information to the user-agent string that is sent with API calls, along with an opt-out.
- Added method for applications that use this library to identify themselves in API requests they make.
- Added
verify_ssloption toTranslatorto control underlyingrequestssession.- Thanks to andrefloriani for the suggestion in #60.
1.13.0 - 2023-01-26
-
Add example script to translate Mustache templates.
-
Add support for storing your API Key in a keyring via the
keyringmodule. -
Added a CI check for copyright headers.
-
New languages available: Korean (
'ko') and Norwegian (bokmål) ('nb'). Add language code constants and tests.Note: older library versions also support the new languages, this update only adds new code constants.
- Copyright headers are updated for 2023
- Update
certifito resolve security advisory.certifiis a development-only dependency; library users are unaffected.
1.12.0 - 2023-01-09
- State explicitly that this library supports Python 3.11.
- Added the
should_retryandhttp_status_codeproperties to all exceptions thrown by the library.
- Fix
pydependency by upgradingpytestversion to 7.2.0 for Python 3.7+. For Python 3.6 testspytestneeds to be added manually. - Remove unused
toxdependency. - Update
coveragedependency. - Also send options in API requests even if they are default values.
1.11.0 - 2022-09-26
- Add formality options
PREFER_LESSandPREFER_MORE.
- Requests resulting in
503 Service Unavailableerrors are now retried. Attempting to download a document before translation is completed will now wait and retry (up to 5 times by default), rather than raising an exception.
1.10.0 - 2022-09-09
-
New language available: Ukrainian (
'uk'). Add language code constant and tests.Note: older library versions also support new languages, this update only adds new code constant.
- Add note and workaround to README about Poetry error on Ubuntu 22.04.
- Pull request #48 thanks to FOehlschlaeger.
1.9.0 - 2022-07-07
- Add
Translator.create_glossary_from_csv()allowing glossaries downloaded from website to be easily uploaded to API.
1.8.0 - 2022-06-10
- Optional
filenameparameter added toTranslator.translate_document(), only required if uploading string or bytes containing file content.
- Update contributing guidelines, we can now accept Pull Requests.
- Fix GitLab CI config.
1.7.0 - 2022-05-18
-
New languages available: Indonesian (
'id') and Turkish ('tr'). Add language code constants and tests.Note: older library versions also support the new languages, this update only adds new code constants.
-
Add
limit_reachedandany_limit_reachedproperties toUsageobject returned byget_usage(). -
Add
Translator.translate_document_wait_until_done()to poll translation status until translation is complete or fails. -
Add
auth_key_is_free_account()utility function.
- Improve readme usage examples.
- Deprecate
limit_exceededandany_limit_exceededproperties ofUsageobject returned byget_usage(), uselimit_reachedandany_limit_reachedinstead.
1.6.0 - 2022-04-12
- Add
error_messageproperty toDocumentStatus, describing the error in case of document translation failure.
- Improve error message if
translate_text_with_glossaryis called without an instance ofGlossaryInfo. translate_documentandtranslate_document_from_filepathreturn finalDocumentStatus, allowing the number of billed characters to be queried.
1.5.1 - 2022-04-11
- Fix bug in CLI languages command causing some target languages to be omitted.
- Fix some tests that intermittently failed.
1.5.0 - 2022-02-28
- Add support for HTML tag handling in
translate_text().
DocumentTranslationException.document_requestis deprecated, usedocument_handleinstead.
1.4.1 - 2022-02-04
- Fix bug in
DocumentTranslationExceptionstringize function.
1.4.0 - 2022-01-19
- Add contribution guidelines -- currently we are unable to accept Pull Requests.
- Add
--glossary-idargument for CLI document command.
- Improve README.
- Raise
DocumentNotReadyExceptionwhen attempting to download a document before it has been translated. Previously the base classDeepLExceptionwas thrown.
- Add optional filename argument to
translate_document_upload()to fix uploading file content as string or bytes.
1.3.1 - 2021-11-15
- Limit document status update wait time to 60 seconds, and log wait times.
1.3.0 - 2021-11-15
Note: the PyPI package for 1.3.0 included changes from 1.3.1, so it has been yanked.
- Add glossary support for document translation.
- Add proxy support.
- Fix issues with parallelized tests by changing how test glossaries are created and deleted.
1.2.1 - 2021-10-19
- Add support for Python 3.10.
- Fix bug that caused User-Agent header to be omitted from HTTP requests.
- Fix glossary name prefix used in unit-tests to match git repository name.
- Add workaround for possible issue in datetime.strptime in Python 3.6.
1.2.0 - 2021-10-07
- Add
Translator.get_glossary_languages()to query language pairs supported for glossaries. - Add constants for all supported languages codes, for example:
Language.GERMAN.
- Internal language caching and client-side checking of language codes are removed.
- Some optional arguments related to language caching are now deprecated, and will be removed in a future version:
Translator(): theskip_language_checkargumentTranslator.get_source_languages()andTranslator.get_target_languages(): theskip_cacheargument
- Fix HTTP request retries for document uploads.
1.1.3 - 2021-09-27
- Loosen requirement for requests to 2.0 or higher.
1.1.2 - 2021-09-21
- Improve request exception messages and include exception stacktraces.
- Update unit tests for server error message changes.
1.1.1 - 2021-09-13
- Fix typing.List issue on Python 3.6.
- Add workaround for datetime.strptime bug in Python 3.6.
1.1.0 - 2021-09-13
- Add security policy.
- Add support for glossary API functions.
- README and comments improvements, type hints and other minor fixes.
1.0.1 - 2021-08-13
- Add explicit copyright notice to all source files.
- Force response encoding to UTF-8 to avoid issues with older versions of requests package.
1.0.0 - 2021-08-12
- All API calls use Authorization header instead of auth_key parameter.
0.4.1 - 2021-08-10
- Minor updates to pyproject.toml and README.md.
0.4.0 - 2021-08-05
Version increased to avoid conflicts with old packages on PyPI.
0.3.0 - 2021-08-05
- Package uploaded to PyPI. Thanks to Adrian Freund for transferring the deepl package name.
- Clarify minimum version of requests module to 2.18.
0.2.0 - 2021-07-28
- Improve exception hierarchy.
- Translator() server_url argument works with and without trailing slash.
- Translator.translate_text() accepts a single text argument, which may be a list or other iterable.
- Fix examples in readme to match function interface changes.
0.1.0 - 2021-07-26
Initial version.