Custom reporting tags let your organization attribute API usage to a team, project, customer, or any other category you care about. You attach a tag to each request, and you can then retrieve usage broken down by those tags in two ways: programmatically via the Get custom tag usage analytics endpoint, or as a custom tag-level CSV export from the account UI.Common use cases:
Multi-tenant applications: attribute translation volume to the end customer making each request
Internal cost allocation: split usage across teams or business units that share a single API key
Only tagged requests appear in custom-tag reports, so tag every request you want to track.
Custom tag data is recorded only for text translation and Voice API requests. Support for additional request types will be added in a future update.
Set the optional X-DeepL-Reporting-Tag header on your translate request. You define the tag value; no registration is required before sending it. See Tag naming guidance and Limitations for the rules tag values must follow.
curl --request POST 'https://api.deepl.com/v2/translate' \--header 'Authorization: DeepL-Auth-Key [your key]' \--header 'X-DeepL-Reporting-Tag: team-billing' \--header 'Content-Type: application/json' \--data '{ "text": ["Welcome to your dashboard."], "target_lang": "DE"}'
Sample response:
{ "translations": [ { "detected_source_language": "EN", "text": "Willkommen in Ihrem Dashboard." } ]}
The translate response is unchanged by tagging. The tag is recorded server-side and surfaces only in custom-tag usage reports: the analytics endpoint and the CSV export.
Set the same header on the session request. The tag applies to the whole session, so all audio streamed over the resulting WebSocket connection is attributed to it.
The WebSocket connection itself carries no headers, so the session request is the only place a tag can be set. You cannot change or add a tag once a session is running, and you cannot tag individual audio chunks within a session. To attribute audio to more than one tag, open a separate session per tag.The tag survives reconnection: audio streamed after you exchange a token for a new streaming URL is still attributed to the tag set on the original session request, and you do not resend the header.
Tags are caller-defined strings. The API records the value you send after applying the normalization rules below.
Before storage, the API trims leading and trailing whitespace and lowercases the value, so " Sample-Tag" is recorded as sample-tag and appears that way in analytics responses.
After normalization, characters are matched exactly. team-billing and team_billing report as two separate tags.
Pick a convention and stick to it. Examples: team-billing, customer-{id}, project-{id}.
A custom tag is independent of the API key that sent the request. The same tag value can be used across multiple API keys in your organization, and usage from every key that sends team-billing rolls up to a single team-billing row in the analytics response.The custom-tag analytics endpoint groups by tag only. Combined breakdowns such as tag-by-API-key or API-key-by-tag are not supported. For a per-key view of usage, use the Get usage analytics endpoint instead.Tags are a reporting feature only. You cannot use them to enforce limits, quotas, or any per-request controls. If you need separate controls across workloads, such as capping staging consumption or disabling translation for a specific environment, use a separate API key for each workload and configure cost control limits per key.
Tag values are limited to 100 characters. Requests with longer values are rejected with a 400 response.
Tag values must use ASCII characters only, with no internal whitespace and no control characters. Values like sample tag, sample-tág, or sample\ntag are rejected with a 400 response. Leading and trailing whitespace is trimmed before validation (see Tag naming guidance).
Each request accepts one tag. Sending multiple values in the header is not supported.
For the Voice API, a tag covers a whole session and can only be set on the session request. See How to tag a Voice API session.
Untagged requests are not included in custom-tag analytics. They still count toward your overall usage, which you can retrieve through the Get usage analytics endpoint.
Get the bigger picture: Read the usage data guide to understand how custom-tag reporting fits alongside the other usage data sources.
Explore other optional translate parameters: Learn how to use the context parameter to improve translation accuracy for ambiguous content.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"DeepL Documentation","description":"Developer documentation for the DeepL API: translate text and documents, transcribe and translate speech in real time, improve text, and customize output with glossaries, style rules, and translation memories.","colors":{"primary":"#0f2b46","light":"#ffffff","dark":"#0f2b46"},"logo":{"light":"https://mintcdn.com/deepl-c950b784/QiF37QSCmRj62dXZ/_assets/logo/light_with_text.svg?fit=max\u0026auto=format\u0026n=QiF37QSCmRj62dXZ\u0026q=85\u0026s=2dfc0d736effb479c0ac145abe2ab2c3","dark":"https://mintcdn.com/deepl-c950b784/QiF37QSCmRj62dXZ/_assets/logo/dark_with_text.svg?fit=max\u0026auto=format\u0026n=QiF37QSCmRj62dXZ\u0026q=85\u0026s=1c796b7a29370a15d010c5f6cda342f3"},"favicon":"https://mintcdn.com/deepl-c950b784/QiF37QSCmRj62dXZ/_assets/favicon.svg?fit=max\u0026auto=format\u0026n=QiF37QSCmRj62dXZ\u0026q=85\u0026s=b46ca099e325b1b5f0ce2f0fc351e394","api":{"openapi":"api-reference/openapi.yaml","asyncapi":"api-reference/voice/voice.asyncapi.yaml","playground":{"proxy":false},"examples":{"defaults":"required","languages":["curl"]}},"appearance":{"default":"light","strict":false},"background":{"color":{"light":"#ffffff"}},"navbar":{"links":[{"href":"https://www.deepl.com/en/pro#api","label":"Pricing"}],"primary":{"type":"button","label":"Free API Key","href":"https://www.deepl.com/en/checkout?is_api=true"}},"footer":{"socials":{"facebook":"https://www.facebook.com/DeepLcom","linkedin":"https://www.linkedin.com/company/deepl","github":"https://github.com/DeepL","instagram":"https://www.instagram.com/deeplhq"},"links":[{"items":[{"label":"API Status","href":"https://status.deepl.com/?tab=api"},{"label":"DeepL Status","href":"https://status.deepl.com"},{"label":"Contact","href":"/docs/resources/contact"}]}]},"seo":{"metatags":{"google-site-verification":"0VDGg3gJk53xL5burIUykHtV_eBhXTp5AMdzaeffbbU"},"organization":{"id":"https://www.deepl.com/","name":"DeepL","legalName":"DeepL SE","url":"https://www.deepl.com","logo":"https://static.deepl.com/img/logo/deepl-logo-blue.svg","sameAs":["https://github.com/DeepL","https://www.linkedin.com/company/deepl","https://x.com/DeepLcom","https://www.instagram.com/deeplhq/","https://www.youtube.com/@DeepLcom"]},"indexing":"navigable"},"fonts":{"heading":{"family":"Roboto"},"body":{"family":"Roboto"}},"integrations":{"cookies":{"key":"deepl_cookie_consent","value":"accepted"}},"banner":{"content":"Help shape the DeepL API roadmap. [Take the survey](https://deepl.qualtrics.com/jfe/form/SV_8fbjoZx1wQUkAC2)","dismissible":true},"errors":{"404":{"redirect":false,"title":"Page not found","description":"This page does not exist. Humans: check out the [Quickstart](/docs/getting-started/quickstart) or the [API reference](/api-reference/translate/request-translation). Machines: try [/llms.txt](/llms.txt), [the docs MCP server](https://developers.deepl.com/mcp), or OpenAPI specs for [Text](/api-reference/openapi.yaml) and [Voice](/api-reference/voice/voice.asyncapi.yaml)."}},"contextual":{"options":["copy","download-spec","chatgpt","claude","cursor","vscode"],"display":"header"},"markdown":{"instructions":["Use the DeepL API when a task needs machine translation or text improvement, including translating text strings, whole documents with formatting preservation, or transcribing and translating live speech. Preferred terminology and phrasing may be enforced using customizations (glossaries, style rules, and translation memories). Retrieve supported languages for each product from the `/v3/languages` endpoints.","Read the machine-readable API surface instead of inferring request shapes from prose: the REST spec is at https://developers.deepl.com/api-reference/openapi.yaml (also served as openapi.json) and the Voice WebSocket protocol is at https://developers.deepl.com/api-reference/voice/voice.asyncapi.yaml. These docs also expose an MCP server at https://developers.deepl.com/mcp (Streamable HTTP, no authentication).","Use https://api.deepl.com for Pro plans and https://api-free.deepl.com for the Free plan. Authenticate every request with the header `Authorization: DeepL-Auth-Key \u003capi-key>`. Never fabricate an API key: ask the user for one, or point them at https://developers.deepl.com/docs/getting-started/quickstart.","Errors use standard HTTP status codes with a JSON body containing a `message` field, plus a `code` field where available, and an `X-Trace-ID` response header that identifies the request in DeepL's logs. Log `X-Trace-ID` by default. Retry 429 and 5xx with exponential backoff. Do not retry 456, which means the account quota is exhausted, or 400, which means the request itself is invalid."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"deepl-c950b784","hasAudioNarration":false,"actualSubdomain":"deepl-c950b784","customDomains":["developers.deepl.com"],"gitSource":{"type":"github","owner":"deepl","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4a585c2f3f73890239acc","collectionId":"84d4cc97-9e99-4c64-8a32-5efc19b56091","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4a585c2f3f73890239acc"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4a585c2f3f73890239acc","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":66},{"language":"default","tag":"Customize","count":55},{"language":"default","tag":"Home","count":35},{"language":"default","tag":"Translate","count":23},{"language":"default","tag":"Glossaries","count":17},{"language":"default","tag":"Admin","count":14},{"language":"default","tag":"Style Rules","count":12},{"language":"default","tag":"Spoken Terms","count":10},{"language":"default","tag":"Text Translation","count":10},{"language":"default","tag":"Voice","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"cookie-banner.css","content":"#cookie-banner{position:fixed;bottom:0;left:0;width:100%;background:#0f2b46;color:#fff;padding:20px;display:flex;justify-content:space-between;align-items:center;gap:20px;z-index:10000;box-shadow:0 -2px 10px rgba(0,0,0,.2);font-family:Roboto,sans-serif}#cookie-banner-content{flex:1}#cookie-banner-text{margin:0;font-size:14px;line-height:1.5}#cookie-banner-text a{color:#4fc3f7;text-decoration:underline}#cookie-banner-buttons{display:flex;gap:12px;flex-shrink:0}#cookie-accept,#cookie-reject{padding:10px 20px;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s;font-family:Roboto,sans-serif}#cookie-reject{background:0 0;color:#fff;border:1px solid #fff}#cookie-reject:hover{background:rgba(255,255,255,.1)}#cookie-accept{background:#fff;color:#0f2b46;border:0}#cookie-accept:hover{background:#e6e6e6}@media (max-width:768px){#cookie-banner{flex-direction:column;align-items:stretch;gap:16px;padding:16px}#cookie-banner-buttons{width:100%;justify-content:stretch}#cookie-accept,#cookie-reject{flex:1}}"},{"filePath":"user-study-popup.css","content":"#user-study-popup{position:fixed;right:24px;bottom:24px;z-index:9999;pointer-events:none;font-family:Roboto,sans-serif}#user-study-card{position:relative;width:360px;max-width:calc(100vw - 48px);padding:24px;background:#fff;border:1px solid rgba(15,43,70,.12);border-radius:16px;box-shadow:0 20px 45px rgba(15,43,70,.16),0 6px 16px rgba(15,43,70,.1);pointer-events:auto;transform:translateX(calc(100% + 48px));transition:transform .35s ease}#user-study-card.slide-in{transform:translateX(0)}#user-study-card.slide-out{transform:translateX(calc(100% + 48px));transition:transform .25s ease-in}#user-study-close{position:absolute;top:12px;right:12px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:999px;background:0 0;color:#6b7280;font-size:24px;line-height:1;cursor:pointer}#user-study-close:hover{background:rgba(15,43,70,.06);color:#0f2b46}#user-study-eyebrow{margin:0 0 8px;color:#0f2b46;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}#user-study-content h3{margin:0 28px 12px 0;color:#111827;font-size:22px;font-weight:700;line-height:1.2}#user-study-content p{margin:0 0 18px;color:#4b5563;font-size:14px;line-height:1.5}#user-study-cta{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:44px;border-radius:999px;background:#0f2b46;color:#fff;font-size:14px;font-weight:600;text-decoration:none}#user-study-cta:hover{background:#133858}@media (max-width:480px){#user-study-popup{right:16px;bottom:16px;left:16px}#user-study-card{width:auto;max-width:none;padding:20px}#user-study-content h3{font-size:20px}}"},{"filePath":"navbar-cta.css","content":"html.dark #topbar-cta-button a>span:first-child{background-color:#fff!important}html.dark #topbar-cta-button a,html.dark #topbar-cta-button a span,html.dark #topbar-cta-button a svg{color:#292929!important}"}],"page":{"pagePath":"docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags","slug":"/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags","pageMetadata":{"title":"How to Use Custom Reporting Tags","description":"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.","public":true,"href":"/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`This guide shows you:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`When to use custom reporting tags`}),`\n`,_jsxs(_components.li,{children:[`How to attach a tag to a text translation or Voice API request via the `,_jsx(_components.code,{children:`X-DeepL-Reporting-Tag`}),` header`]}),`\n`,_jsx(_components.li,{children:`Tag naming guidance and current limitations`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`what-custom-reporting-tags-are-for`,children:`What custom reporting tags are for`}),`\n`,_jsxs(_components.p,{children:[`Custom reporting tags let your organization attribute API usage to a team, project, customer, or any other category you care about. You attach a tag to each request, and you can then retrieve usage broken down by those tags in two ways: programmatically via the `,_jsx(_components.a,{href:`/api-reference/admin-api/get-custom-tag-usage-analytics`,children:`Get custom tag usage analytics`}),` endpoint, or as a `,_jsx(_components.a,{href:`/docs/admin/retrieving-usage-data#csv-export`,children:`custom tag-level CSV export`}),` from the account UI.`]}),`\n`,_jsx(_components.p,{children:`Common use cases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multi-tenant applications`}),`: attribute translation volume to the end customer making each request`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Internal cost allocation`}),`: split usage across teams or business units that share a single API key`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Only tagged requests appear in custom-tag reports, so tag every request you want to track.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Custom tag data is recorded only for text translation and Voice API requests. Support for additional request types will be added in a future update.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-tag-a-translate-request`,children:`How to tag a translate request`}),`\n`,_jsxs(_components.p,{children:[`Set the optional `,_jsx(_components.code,{children:`X-DeepL-Reporting-Tag`}),` header on your translate request. You define the tag value; no registration is required before sending it. See `,_jsx(_components.a,{href:`#tag-naming-guidance`,children:`Tag naming guidance`}),` and `,_jsx(_components.a,{href:`#limitations`,children:`Limitations`}),` for the rules tag values must follow.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.deepl.com/v2/translate'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Authorization: DeepL-Auth-Key [your key]'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'X-DeepL-Reporting-Tag: team-billing'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--data `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"text\": [\"Welcome to your dashboard.\"],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"target_lang\": \"DE\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Sample response:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"translations\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"detected_source_language\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Willkommen in Ihrem Dashboard.\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The translate response is unchanged by tagging. The tag is recorded server-side and surfaces only in custom-tag usage reports: the analytics endpoint and the CSV export.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-tag-a-voice-api-session`,children:`How to tag a Voice API session`}),`\n`,_jsxs(_components.p,{children:[`Set the same header on the `,_jsx(_components.a,{href:`/api-reference/voice/request-session`,children:`session request`}),`. The tag applies to the whole session, so all audio streamed over the resulting WebSocket connection is attributed to it.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.deepl.com/v3/voice/realtime'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Authorization: DeepL-Auth-Key [your key]'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'X-DeepL-Reporting-Tag: team-billing'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--data `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"source_media_content_type\": \"audio/ogg;codecs=opus\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"source_language_mode\": \"auto\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"target_languages\": [\"de\"]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Sample response:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"streaming_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"wss://api.deepl.com/v3/voice/realtime/connect\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"VGhpcyBpcyBhIGZha2UgdG9rZW4K\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"session_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"4f911080-cfe2-41d4-8269-0e6ec15a0354\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The WebSocket connection itself carries no headers, so the session request is the only place a tag can be set. You cannot change or add a tag once a session is running, and you cannot tag individual audio chunks within a session. To attribute audio to more than one tag, open a separate session per tag.`}),`\n`,_jsxs(_components.p,{children:[`The tag survives `,_jsx(_components.a,{href:`/api-reference/voice/reconnect-session`,children:`reconnection`}),`: audio streamed after you exchange a token for a new streaming URL is still attributed to the tag set on the original session request, and you do not resend the header.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`tag-naming-guidance`,children:`Tag naming guidance`}),`\n`,_jsx(_components.p,{children:`A few practices keep your reports clean:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Tags are caller-defined strings. The API records the value you send after applying the normalization rules below.`}),`\n`,_jsxs(_components.li,{children:[`Before storage, the API trims leading and trailing whitespace and lowercases the value, so `,_jsx(_components.code,{children:`\" Sample-Tag\"`}),` is recorded as `,_jsx(_components.code,{children:`sample-tag`}),` and appears that way in analytics responses.`]}),`\n`,_jsxs(_components.li,{children:[`After normalization, characters are matched exactly. `,_jsx(_components.code,{children:`team-billing`}),` and `,_jsx(_components.code,{children:`team_billing`}),` report as two separate tags.`]}),`\n`,_jsxs(_components.li,{children:[`Pick a convention and stick to it. Examples: `,_jsx(_components.code,{children:`team-billing`}),`, `,_jsx(_components.code,{children:`customer-{id}`}),`, `,_jsx(_components.code,{children:`project-{id}`}),`.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`tags-and-api-keys`,children:`Tags and API keys`}),`\n`,_jsxs(_components.p,{children:[`A custom tag is independent of the API key that sent the request. The same tag value can be used across multiple API keys in your organization, and usage from every key that sends `,_jsx(_components.code,{children:`team-billing`}),` rolls up to a single `,_jsx(_components.code,{children:`team-billing`}),` row in the analytics response.`]}),`\n`,_jsxs(_components.p,{children:[`The custom-tag analytics endpoint groups by tag only. Combined breakdowns such as tag-by-API-key or API-key-by-tag are not supported. For a per-key view of usage, use the `,_jsx(_components.a,{href:`/api-reference/admin-api/get-usage-analytics`,children:`Get usage analytics`}),` endpoint instead.`]}),`\n`,_jsxs(_components.p,{children:[`Tags are a reporting feature only. You cannot use them to enforce limits, quotas, or any per-request controls. If you need separate controls across workloads, such as capping staging consumption or disabling translation for a specific environment, use a separate API key for each workload and configure `,_jsx(_components.a,{href:`/docs/best-practices/cost-control`,children:`cost control limits`}),` per key.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`limitations`,children:`Limitations`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Tag values are limited to 100 characters. Requests with longer values are rejected with a 400 response.`}),`\n`,_jsxs(_components.li,{children:[`Tag values must use ASCII characters only, with no internal whitespace and no control characters. Values like `,_jsx(_components.code,{children:`sample tag`}),`, `,_jsx(_components.code,{children:`sample-tág`}),`, or `,_jsx(_components.code,{children:`sample\\\\ntag`}),` are rejected with a 400 response. Leading and trailing whitespace is trimmed before validation (see `,_jsx(_components.a,{href:`#tag-naming-guidance`,children:`Tag naming guidance`}),`).`]}),`\n`,_jsx(_components.li,{children:`Each request accepts one tag. Sending multiple values in the header is not supported.`}),`\n`,_jsxs(_components.li,{children:[`For the Voice API, a tag covers a whole session and can only be set on the session request. See `,_jsx(_components.a,{href:`#how-to-tag-a-voice-api-session`,children:`How to tag a Voice API session`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Untagged requests are not included in custom-tag analytics. They still count toward your overall usage, which you can retrieve through the `,_jsx(_components.a,{href:`/api-reference/admin-api/get-usage-analytics`,children:`Get usage analytics`}),` endpoint.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use the client libraries:`}),` See `,_jsx(_components.a,{href:`/docs/learning-how-tos/cookbook/sending-custom-reporting-tags-from-client-libraries`,children:`Sending Custom Reporting Tags with Client Libraries`}),` for code snippets in Python, Node.js, Java, .NET, and PHP.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Query your tagged usage:`}),` See the `,_jsx(_components.a,{href:`/api-reference/admin-api/get-custom-tag-usage-analytics`,children:`Get custom tag usage analytics`}),` reference for date ranges, aggregation options, and pagination, or download a `,_jsx(_components.a,{href:`/docs/admin/retrieving-usage-data#csv-export`,children:`custom tag-level CSV export`}),` from the account UI.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Get the bigger picture:`}),` Read the `,_jsx(_components.a,{href:`/docs/admin/retrieving-usage-data`,children:`usage data guide`}),` to understand how custom-tag reporting fits alongside the other usage data sources.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Explore other optional translate parameters:`}),` Learn `,_jsx(_components.a,{href:`/docs/learning-how-tos/examples-and-guides/how-to-use-context-parameter`,children:`how to use the context parameter`}),` to improve translation accuracy for ambiguous content.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"How to Use Custom Reporting Tags","description":"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.","public":true,"href":"/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What custom reporting tags are for","slug":"what-custom-reporting-tags-are-for","depth":2,"children":[]},{"title":"How to tag a translate request","slug":"how-to-tag-a-translate-request","depth":2,"children":[]},{"title":"How to tag a Voice API session","slug":"how-to-tag-a-voice-api-session","depth":2,"children":[]},{"title":"Tag naming guidance","slug":"tag-naming-guidance","depth":2,"children":[]},{"title":"Tags and API keys","slug":"tags-and-api-keys","depth":2,"children":[]},{"title":"Limitations","slug":"limitations","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/deepl-c950b784/79954643574228d7/analytics.js","/_mintlify/custom/deepl-c950b784/7c795428034ccd8b/cookie-banner.js","/_mintlify/custom/deepl-c950b784/e09568492714dd0f/user-study-popup.js","/_mintlify/custom/deepl-c950b784/06c83788a8296584/user-data.js"],"subdomain":"deepl-c950b784","siteName":"DeepL Documentation","title":"How to Use Custom Reporting Tags - DeepL Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-18T12:30:26.144Z","originalFileLocation":"docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DeepL Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"How to Use Custom Reporting Tags - DeepL Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DeepL Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://deepl-c950b784.mintlify.app/_mintlify/api/og/v2?division=Text+Translation\u0026amp;title=How+to+Use+Custom+Reporting+Tags\u0026amp;description=Learn+how+to+attach+reporting+tags+to+text+translation+and+Voice+API+requests+so+you+can+break+down+usage+by+team%2C+project%2C+or+category.\u0026amp;theme=a0c51edccdcaa2c1bb0516c1\u0026amp;signature=543e71e1d980dfcbfc67917a5a46ffe7a0edba108663dce463ceef7c9ac69398\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"How to Use Custom Reporting Tags - DeepL Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://deepl-c950b784.mintlify.app/_mintlify/api/og/v2?division=Text+Translation\u0026amp;title=How+to+Use+Custom+Reporting+Tags\u0026amp;description=Learn+how+to+attach+reporting+tags+to+text+translation+and+Voice+API+requests+so+you+can+break+down+usage+by+team%2C+project%2C+or+category.\u0026amp;theme=a0c51edccdcaa2c1bb0516c1\u0026amp;signature=543e71e1d980dfcbfc67917a5a46ffe7a0edba108663dce463ceef7c9ac69398\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/deepl-c950b784/hSlhr1iEcolF1mhS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DeepL Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0f2b46\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"0VDGg3gJk53xL5burIUykHtV_eBhXTp5AMdzaeffbbU\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.deepl.com/\",\"name\":\"DeepL\",\"legalName\":\"DeepL SE\",\"url\":\"https://www.deepl.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://static.deepl.com/img/logo/deepl-logo-blue.svg\"},\"sameAs\":[\"https://github.com/DeepL\",\"https://www.linkedin.com/company/deepl\",\"https://x.com/DeepLcom\",\"https://www.instagram.com/deeplhq/\",\"https://www.youtube.com/@DeepLcom\"]},{\"@type\":\"WebSite\",\"@id\":\"https://developers.deepl.com#website\",\"name\":\"DeepL Documentation\",\"url\":\"https://developers.deepl.com\",\"publisher\":{\"@id\":\"https://www.deepl.com/\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags#webpage\",\"url\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags\",\"name\":\"How to Use Custom Reporting Tags\",\"description\":\"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\",\"dateModified\":\"2026-08-18T12:30:26.144Z\",\"isPartOf\":{\"@id\":\"https://developers.deepl.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Text Translation\",\"item\":\"https://developers.deepl.com/docs/translate/translate-text-quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Use Custom Reporting Tags\",\"item\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags#article\",\"headline\":\"How to Use Custom Reporting Tags\",\"name\":\"How to Use Custom Reporting Tags\",\"description\":\"Learn how to attach reporting tags to text translation and Voice API requests so you can break down usage by team, project, or category.\",\"url\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags\",\"mainEntityOfPage\":{\"@id\":\"https://developers.deepl.com/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags#webpage\"},\"dateModified\":\"2026-08-18T12:30:26.144Z\",\"publisher\":{\"@id\":\"https://www.deepl.com/\"},\"isPartOf\":{\"@id\":\"https://developers.deepl.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DeepL Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DeepL Documentation","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/getting-started/quickstart"}]},{"tab":"Translate","icon":"language","pages":[{"title":"Translate","sidebarTitle":"Overview","href":"/docs/translate/overview"},{"group":"Text Translation","pages":[{"title":"Translate Text Quickstart","href":"/docs/translate/translate-text-quickstart"},{"title":"How to Use the Context Parameter Effectively","href":"/docs/learning-how-tos/examples-and-guides/how-to-use-context-parameter"},{"title":"Translating Large Volumes of Text","href":"/docs/translate/translating-large-volumes"},{"title":"Understanding Model Types","description":"How the model_type parameter chooses between latency-optimized and quality-optimized translation models, and how DeepL selects the model for each request.","href":"/docs/translate/understanding-model-types"},{"title":"How to Use Custom Reporting Tags","href":"/docs/learning-how-tos/examples-and-guides/how-to-use-custom-reporting-tags"},{"title":"How to Translate Between Language Variants","description":"Learn how to translate between language variants, like British English and US English, using the DeepL API.","href":"/docs/learning-how-tos/examples-and-guides/translating-between-variants"},{"title":"Mustache placeholder tags","href":"/docs/learning-how-tos/examples-and-guides/placeholder-tags"},{"title":"Translating XML","href":"/docs/translate/translating-xml"},{"title":"Translating HTML","href":"/docs/translate/translating-html"},{"title":"Language detection","mode":"wide","href":"/docs/best-practices/language-detection"}]},{"group":"Document Translation","pages":[{"title":"Translate Documents Quickstart","href":"/docs/translate/translate-documents-quickstart"},{"title":"Document translations","mode":"wide","href":"/docs/best-practices/document-translations"}]},{"group":"Write","pages":[{"title":"Write Quickstart","href":"/docs/translate/write-quickstart"},{"title":"Controlling Writing Style and Tone","href":"/docs/translate/controlling-writing-style-and-tone"}]}]},{"tab":"Voice","icon":"waveform-lines","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"tab":"Customize","icon":"wand-magic-sparkles","pages":[{"title":"Customize","href":"/docs/customize/overview"}]},{"tab":"Admin","icon":"sliders","pages":[{"title":"Admin","href":"/docs/admin/overview"}]},{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/translate/request-translation"}]}]},"basePath":"","title":"How to Use Custom Reporting Tags - DeepL Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["10e4515597"],"chunks":["BannerMarkdown-CXEEkV6J.js","dist-lvhuD9Du.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D1Z-ELXV.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}