# AX Check: deepl.com
Checked 2026-09-18.

DeepL's quickstart and pricing are usable without logging in.
Quickstart docs give copy-paste install and code steps, and pricing lists Individual €7.49, Team €24.99, Business €49.99/month with clear limits. Homepage lacks an llms.txt index.

## Onboarding needs a login

## Coding sessions
All three independent sessions completed and reported DeepL's pricing without hitting a login wall, each citing concrete tiers (free character allowance plus paid plans) and noting assumptions like region or currency dependence and where to confirm current rates.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/3b14cd7e-357d-4aa6-a44e-a21a62354384) · [Read transcript](https://www.ax-check.com/deepl.com/sessions/deepseek.json)
Final output gives free-tier vs Growth (~€29.75/mo) vs Enterprise pricing and explicitly names assumptions: region/currency-dependent, JS-rendered figures may be stale, and points to /v2/usage for actual allowance (seq 173).
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real DeepL API key. It searched the environment for credentials (none found), then tested the live API with a placeholder key ('not-a-real-key'), which correctly returned 403 authentication errors. It wrote a working demo script but explicitly could not execute a successful authenticated translation, usage check, or any other authenticated operation. It ended the session by stating this blocker plainly rather than resolving it.
  Event 6:

  ```text
  ALG_INFERENCE_MODEL=accounts/fireworks/models/deepseek-v4-pro-0813
  PI_MODEL=accounts/fireworks/models/deepseek-v4-pro-0813
  
  ```
  Event 144:

  ```text
  {"message":"Authentication failed, provided API key is invalid. You can find more info in our docs: https://developers.deepl.com/docs/getting-started/auth"}
  HTTP 403
  
  ```
  Event 173:

  ```text
  there's no DeepL API key in this environment**, so I could not execute a *successful* translation. Everything up to that point was verified against the real API. Give me a key (free-tier one is fine) and I can run it to completion and confirm real output.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No DeepL API key available in the sandbox**: The environment had no DEEPL_AUTH_KEY or similar credential, and no self-service signup flow was exercised. This is a test-environment/credentials limitation, not a product defect: the API correctly rejected the placeholder key with a clear 403 auth error, and the agent could not proceed to a real, successful translation call.
  Event 144:

  ```text
  {"message":"Authentication failed, provided API key is invalid. You can find more info in our docs: https://developers.deepl.com/docs/getting-started/auth"}
  HTTP 403
  
  ```
  Event 173:

  ```text
  One blocker only: **there's no DeepL API key in this environment**, so I could not execute a *successful* translation.
  ```
- **Pricing page content requires heavy scraping to extract**: The public pricing page (www.deepl.com/en/pro-api) renders pricing details via client-side JS/JSON blobs rather than plain HTML text, forcing the agent to run multiple regex passes against raw script payloads to approximate plan prices. This is product/website behavior (a JS-heavy marketing page), not agent error, though the agent did eventually extract usable figures.
  Event 62:

  ```text
  d leading-[33.6px] dark:text-white m-0 mt-6" data-testid="pricing-card-individual-price">€7.49</p>
  ```
  Event 166:

  ```text
  \"packageId\":\"api-growth\",\"price\":{\"basePrice\":{\"monthly\":2975,\"yearly\":28560}
  ```

#### Suggested Changes
- **Add a plain-text pricing summary to the API pricing page**: On www.deepl.com/en/pro-api, the character-allowance and tier prices are embedded in JS-rendered JSON rather than visible static text, requiring the agent to grep raw script payloads (e.g. searching for 'addon-usage-characters' or numeric price fragments like '2975') to reconstruct plan costs. Adding a static HTML pricing table (or a dedicated docs page under developers.deepl.com) would let a first-time integrator confirm costs without scraping client-rendered JSON. Check by fetching the page with a plain HTTP client and confirming price figures appear in the raw response body.
  Event 38:

  ```text
  \"id\":\"addon-usage-characters\",\"type\":\"limitExtension\",\"price\":
  ```
  Event 171:

  ```text
  \"id\":\"addon-usage-characters\",\"type\":\"limitExtension\",\"price\":{\"monthly\":2000,\"yearly\":2000}
  ```
- **Fix the broken pricing doc link under developers.deepl.com**: A request to developers.deepl.com/docs/getting-started/pricing returned a 404, forcing a detour to the marketing site to find pricing. Restore or redirect this docs path (or link to the correct pricing location from the getting-started docs) so developers following the docs quickstart don't hit a dead end. Verify by curling the URL and confirming a 200 response with pricing content.
  Event 68:

  ```text
  404
  108343 /tmp/pricing.html
  
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/690611e3-c0d7-4c9f-b617-6a155a59aa55) · [Read transcript](https://www.ax-check.com/deepl.com/sessions/kimi.json)
Final output gives concrete pricing (Free: €0/500k chars/month; Pro: ~€25/month + €25/1M chars) with stated assumptions (plan tier, billed per character including spaces, API access separate from consumer subscription).
#### End-to-end onboarding
- **Onboarding needs a login**: Agent never obtained a real DeepL API key. It checked env vars, found none, wrote a script requiring DEEPL_API_KEY, ran it, and got an explicit 'not set' error. No signup or key retrieval was attempted or possible without human action, and no authenticated call to the DeepL API ever succeeded.
  Event 4:

  ```text
  PI_GATEWAY_API_KEY=<set>
  ```
  Event 18:

  ```text
  DEEPL_API_KEY is not set. Get a free key at https://www.deepl.com/pro-api
  exit=1
  ```
  Event 20:

  ```text
  I'm blocked on a DeepL API key** ... there's no `DEEPL_API_KEY` in this environment and DeepL offers no unauthenticated/trial mode — every call requires a key from a registered account.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Missing DeepL API key blocks any live call**: No DEEPL_API_KEY was present in the sandbox environment, and DeepL requires a registered account key for every call (no trial/unauthenticated mode). This is a credentials gap in the test environment, not a product defect — the agent correctly identified it, built the example, and stopped rather than faking success.
  Event 4:

  ```text
  PI_GATEWAY_API_KEY=<set>
  ```
  Event 18:

  ```text
  DEEPL_API_KEY is not set. Get a free key at https://www.deepl.com/pro-api
  exit=1
  ```
  Event 20:

  ```text
  there's no `DEEPL_API_KEY` in this environment and DeepL offers no unauthenticated/trial mode — every call requires a key from a registered account
  ```

#### Suggested Changes
None identified in this transcript.

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/9b4b20bd-0d26-4af3-b56f-336494ab6394) · [Read transcript](https://www.ax-check.com/deepl.com/sessions/qwen.json)
README.md and final output state pricing (Free: 500k chars/month free; Pro: first 500k free then ~$5/1M chars) while naming assumptions explicitly ('confirm current rates on DeepL's pricing page as they change', billing is per source character, plan-dependent).
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real DeepL API key. It explored the environment, confirmed no DEEPL env vars existed, and built/tested an example script against the hosted API, but every live call was either unauthenticated (403) or used a self-invented dummy key (which correctly returned an AuthorizationException, not a success). No sign-up flow, key issuance, or authenticated operation (e.g. actual translation or real usage query) was completed. The session ends still needing a human-supplied key.
  Event 8:

  ```text
  no DEEPL env vars
  ```
  Event 71:

  ```text
  deepl.exceptions.AuthorizationException: Authorization failure, check auth_key, message: Authentication failed, provided API key is invalid.
  ```
  Event 80:

  ```text
  there's **no `DEEPL_AUTH_KEY` in this environment**, so I couldn't execute a real paid/free translation — I verified everything right up to that credential boundary instead.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No DeepL API key available in the sandbox**: The environment had no DEEPL_AUTH_KEY, and the session has no self-service way to generate one, so live translation calls could never be authenticated. This is a normal credential requirement, not a product defect — DeepL requires signup for a key like most paid/metered APIs. The agent worked around it by testing with a dummy key to confirm request plumbing, but never completed a real authenticated call.
  Event 8:

  ```text
  no DEEPL env vars
  ```
  Event 80:

  ```text
  A **real `DEEPL_AUTH_KEY`** is the only thing needed for a live translation.
  ```
- **Sandbox TLS interception broke default SSL verification**: Python's certifi bundle failed to verify DeepL's TLS certificate inside this sandbox because of the sandbox's own TLS interception layer, producing a CERTIFICATE_VERIFY_FAILED error on the first real HTTPS call through the SDK. This is a test-environment artifact, not a DeepL product issue — curl worked fine since it used the system CA store. The agent diagnosed and worked around it by adding an optional CA-bundle override.
  Event 41:

  ```text
  deepl.exceptions.ConnectionException: Connection failed: HTTPSConnectionPool(host='api-free.deepl.com', port=443): Max retries exceeded with url: /v2/usage (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)')))
  ```
  Event 43:

  ```text
  The SSL error is a sandbox quirk — `curl` uses the system CA store, but Python's `certifi` bundle doesn't have the sandbox's TLS interceptor cert.
  ```

#### Suggested Changes
- **Surface a CA-bundle override earlier in SDK/auth docs**: The deepl-python SDK accepts a verify_ssl parameter for custom CA bundles, but this was only discoverable by reading the SDK source (http_client.py, translator.py) rather than the getting-started docs referenced in the 403 error message. Adding a short note about the verify_ssl / proxy option to the auth quickstart (https://developers.deepl.com/docs/getting-started/auth) would save developers behind corporate TLS inspection from needing to read source code to find it. Verify by checking the quickstart page mentions verify_ssl alongside the Authorization header setup.
  Event 57:

  ```text
  if verify_ssl is not None:\n            self._session.verify = verify_ssl
  ```
  Event 53:

  ```text
  The SDK doesn't honor `REQUESTS_CA_BUNDLE` — it likely pins `certifi`. Let me check its HTTP client to find the right knob.
  ```

### Task given to each agent
Help me build a simple example using DeepL. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: B · 65/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html for a Markdown Accept header; no Markdown representation served.
  ```

- **Failed** — llms.txt provides an actionable documentation index

  ```text
  https://www.deepl.com/llms.txt returned HTTP 404, so no documentation index exists.
  ```

- **Skipped** — llms.txt provides navigation guidance

  ```text
  llms.txt returned 404, so no navigation guidance could be evaluated.
  ```

- **Skipped** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt returned 404, so API/MCP/skills mentions could not be evaluated.
  ```

- **Pass** — A compact guide representation exists

  ```text
  Standalone Markdown quickstart page served at developers.deepl.com/docs/getting-started/quickstart.md.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  Quickstart.md directly retrievable as text/markdown with concrete first steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  Markdown quickstart measures 2523 tokens, well under the 8000 budget.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown unsupported, so link preservation across formats cannot be measured.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  Quickstart gives concrete steps: get API key, then curl/SDK first translation request.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Fetched quickstart, API reference, OpenAPI spec and MCP docs all returned HTTP 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  Quickstart page gives concrete steps: sign up, get key, send first translation request.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Install commands extractable: pip install deepl, npm install deepl-node, composer require, gem install.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Full curl, Python, JS, PHP, C#, Java, Ruby code examples shown without interaction.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Auth explicit: DeepL-Auth-Key header, key from account keys page, free vs Pro endpoints.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing page renders plan cards with €7.49, €24.99, €49.99 and feature comparison table in static HTML.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Prices stated openly: Individual €7.49, Team €24.99, Business €49.99 per month; Enterprise custom.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Units explicit: characters per user/month, file translations, max file size, glossary limits, fair usage footnote.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4 Pro: Final output gives free-tier vs Growth (~€29.75/mo) vs Enterprise pricing and explicitly names assumptions: region/currency-dependent, JS-rendered figures may be stale, and points to /v2/usage for actual allowance (seq 173). Kimi K3: Final output gives concrete pricing (Free: €0/500k chars/month; Pro: ~€25/month + €25/1M chars) with stated assumptions (plan tier, billed per character including spaces, API access separate from consumer subscription). Qwen 3.8 Max: README.md and final output state pricing (Free: 500k chars/month free; Pro: first 500k free then ~$5/1M chars) while naming assumptions explicitly ('confirm current rates on DeepL's pricing page as they change', billing is per source character, plan-dependent). This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  OpenAPI spec served at /api-reference/openapi.yaml and embedded in the translate API reference page.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  DeepL MCP Server documented with npx install, Claude/Cursor config, and tool list.
  ```

- **Pass** — A CLI install path is documented

  ```text
  DeepL CLI page documents install from source, auth, and translate commands.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  PyPI deepl and npm deepl-node registry lookups both returned HTTP 200.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills surface found in the fetched DeepL documentation.
  ```



[Full report data](https://www.ax-check.com/deepl.com/report.json)
