Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@
"docs/learning-how-tos/cookbook/nodejs-proxy",
"docs/learning-how-tos/cookbook/java-document-translator",
"docs/learning-how-tos/cookbook/usage-analytics-dashboard",
"docs/learning-how-tos/cookbook/api-usage-logger",
"docs/learning-how-tos/examples-and-guides/deepl-mcp-server-how-to-build-and-use-translation-in-llm-applications",
"docs/learning-how-tos/cookbook/google-sheets"
]
Expand Down
38 changes: 38 additions & 0 deletions docs/learning-how-tos/cookbook/api-usage-logger.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: "API Usage Logger"
description: "Learn how to capture per-request DeepL API usage data and visualize it in a local dashboard."
public: true
---

<Card title="GitHub - DeepLcom/deepl-api-usage-logger" icon="github" horizontal href="https://github.com/DeepLcom/deepl-api-usage-logger">
DeepL API Usage Logger on GitHub
</Card>


This open-source reference project shows how to capture per-request usage data for the DeepL API (billed characters, language pairs, reporting tags, API key identifiers, and errors) and explore it through a local Streamlit dashboard. It wraps the [DeepL Python client](/docs/getting-started/client-libraries) so every text and document translation request is logged to a local DuckDB file as it happens, alongside any errors returned by the API.

The project is intended for teams that need usage reporting with request-level granularity. If you instead want to retrieve subscription-level or API key-level data via a single API call, see the [Usage Analytics Dashboard](/docs/learning-how-tos/cookbook/usage-analytics-dashboard) cookbook, which uses the [Admin API](/api-reference/admin-api/organization-usage-analytics).

## Features

- **Per-request logging** for both text and document translation, with the source language, target language, billed characters, and a request ID stored for every call
- **Error capture alongside successes**, including the error code, HTTP status, and message, so reliability and usage live in the same dataset
- **Reporting tag and API key alias support**, letting you group usage by team, project, or service
- **Streamlit dashboard** with three views: a Usage summary table, an Error summary table, and a SQL Explorer for arbitrary DuckDB queries against the underlying table
- **CSV export** from every dashboard view
- **Non-blocking writes** that queue log entries on a background thread, so logging never adds latency to translation calls
- **Local stack** of Python, DuckDB, and Streamlit, with no external services required

## Screenshots

<Frame>
<img src="/docs/learning-how-tos/cookbook/images/api-usage-logger-usage-tab.png" alt="Usage tab showing total billed characters, requests, and language pair breakdown" />
</Frame>

<Frame>
<img src="/docs/learning-how-tos/cookbook/images/api-usage-logger-errors-tab.png" alt="Errors tab showing failed requests grouped by error code and HTTP status" />
</Frame>

<Frame>
<img src="/docs/learning-how-tos/cookbook/images/api-usage-logger-sql-explorer-tab.png" alt="SQL Explorer tab for running arbitrary DuckDB queries against the translation usage table" />
</Frame>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions docs/learning-how-tos/cookbook/usage-analytics-dashboard.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ The dashboard is designed to be lightweight and easy to set up, with zero NPM de

For more information about the DeepL Admin API endpoint, check out the [Admin API documentation](/api-reference/admin-api/organization-usage-analytics).

If you need per-request logging instead of account-wide views, see the [API Usage Logger](/docs/learning-how-tos/cookbook/api-usage-logger) cookbook.

## Features

- **Interactive charts and visualizations** - View your usage data through multiple chart types
Expand Down