Skip to main content

Documentation Index

Fetch the complete documentation index at: https://deepl-c950b784-ae-485-api-key-permissions.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

This recipe shows how to attach a custom reporting tag to translate requests using each official DeepL client library. For an overview of what custom reporting tags are, how they’re stored, and how to query their usage, see How to Use Custom Reporting Tags. The Python, Node.js, Java, .NET, and PHP client libraries let you attach custom HTTP headers when constructing a DeepLClient. The simplest way to tag your requests is to construct one DeepLClient per tag value, configure it with X-DeepL-Reporting-Tag once, and reuse it for every request that should carry that tag. Each DeepLClient instance owns its own HTTP connection pool, so keep instances around and reuse them rather than constructing a new client per request. The Ruby library (deepl-rb, v3.8.0 and later) uses a module-level API and accepts an additional_headers argument on each translate call instead of a client-level option. Pass X-DeepL-Reporting-Tag on every call you want to tag.

Code snippets

The snippets below all send the same translate request ("Welcome to your dashboard." → DE) and tag it as team-billing. Replace YOUR_AUTH_KEY with your DeepL API authentication key.
import deepl

client = deepl.DeepLClient("YOUR_AUTH_KEY")
client.headers["X-DeepL-Reporting-Tag"] = "team-billing"

result = client.translate_text(
    "Welcome to your dashboard.",
    target_lang="DE",
)
print(result.text)
The Python library exposes client.headers as a public dictionary. Setting the key after construction merges with the library-managed Authorization and User-Agent headers.
Output (all snippets):
Willkommen in Ihrem Dashboard.
To confirm X-DeepL-Reporting-Tag is leaving your client correctly, point the SDK at deepl-mock via the server_url / serverUrl option and inspect the headers it logs. Useful for catching configuration mistakes before sending real tagged traffic.

Tagging across many values

The one-client-per-tag pattern works well when your tag dimension is bounded: teams, products, or a handful of business units. If you need to tag with high-cardinality values, such as a unique tag per end customer, holding a DeepLClient instance for every value isn’t practical. Today, none of the client libraries expose per-request custom headers through their public translate methods. The HTTP client layers in deepl-node, deepl-python, and deepl-php already support per-request header injection internally, so the foundation is in place. The Java and .NET libraries support only per-instance headers. Updates to extend per-request custom-header support across the client libraries are planned. Until those updates land, the per-instance pattern above is the supported path.

Next steps