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

Langfuse's docs let an agent get tracing running fast.
All 23 checklist items passed: quickstart, install commands, and code samples are all readable and runnable without login. Pricing tiers are stated openly (Hobby free to Enterprise $2,499).

## Onboarding needs a login

## Coding sessions
Of three independent sessions, one completed and correctly reported Langfuse's Hobby/Core/Pro/Enterprise pricing tiers with specific figures. The other two stopped before finishing, as the quickstart's setup steps needed local infrastructure the sessions weren't able to run.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/cf151b2e-01a6-47b7-82e0-83fc8b86a330) · [Read transcript](https://www.ax-check.com/langfuse.com/sessions/deepseek.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent installed the real Langfuse SDK and wrote a working example script, but it never obtained actual Langfuse API credentials. It attempted to run with obviously fake placeholder keys (pk-lf-fake, sk-lf-fake), which produced a 401 Unauthorized from the real Langfuse Cloud API. No self-service signup or credential retrieval flow was executed, so no authenticated product operation was demonstrated. The script's own error-handling path plainly tells the user real credentials are required, which the agent never obtained.
  Event 110:

  ```text
  langfuse.api.commons.errors.unauthorized_error.UnauthorizedError: headers: {'date': 'Fri, 18 Sep 2026 21:13:39 GMT', ... status_code: 401, body: {'message': "Invalid credentials. Confirm that you've configured the correct host."}
  ```
  Event 109:

  ```text
  timeout 40 env LANGFUSE_PUBLIC_KEY=pk-lf-fake-placeholder LANGFUSE_SECRET_KEY=sk-lf-fake-placeholder LANGFUSE_BASE_URL=https://cloud.langfuse.com python3 langfuse_example.py
  ```
  Event 105:

  ```text
  Langfuse credentials are missing.
  
  To run this against hosted Langfuse:
    1. Create a free account: https://cloud.langfuse.com (Hobby plan, no credit card required)
    2. In the project: Settings -> API Keys -> Create new API keys
  ```

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

#### Blockers
- **No real Langfuse credentials available in the sandbox**: The environment scan found no Langfuse API keys, and account signup requires a human (browser-based, likely email/CAPTCHA). This is a normal login/signup requirement, not a product defect. The agent worked around it correctly by building a runnable script and testing failure/success code paths with placeholder keys instead of pretending success.
  Event 8:

  ```text
  PI_GATEWAY_API_KEY=<redacted>
  ```
  Event 110:

  ```text
  status_code: 401, body: {'message': "Invalid credentials. Confirm that you've configured the correct host."}
  ```

#### Suggested Changes
- **Fix the broken canonical Python SDK get-started URL**: curl against https://langfuse.com/docs/sdk/python/get-started returned HTTP 404, while the working page lives at https://langfuse.com/docs/observability/get-started. Update or redirect the SDK-specific path so developers following that link pattern land on a live page. Verify by curling the URL and confirming a 200 response.
  Event 9:

  ```text
  HTTP 404
  ---
  HTTP 200
  
  ```
  Event 6:

  ```text
  https://langfuse.com/docs/sdk/python/get-started
  ```
- **Add a plain-language definition of 'unit' to the pricing page**: The pricing page repeatedly references usage in 'units' (e.g. 50k units/month, 100k units/month) but the agent could not find a definition of what a unit is despite searching the pricing page and trying multiple docs URLs (data-usage-and-limits, usage-and-limits, usage), all of which 404'd. Add an inline tooltip or link on the pricing page itself defining a unit, and verify by checking that the definition text appears in the pricing page HTML.
  Event 147:

  ```text
  HTTP 404
  unit def not found
  ```
  Event 152:

  ```text
  404 https://langfuse.com/docs/administration/usage-and-limits
  404 https://langfuse.com/docs/administration/usage
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/54b44c9a-ffd1-4121-b58d-4a93c0a73ea0) · [Read transcript](https://www.ax-check.com/langfuse.com/sessions/kimi.json)
Final output lists Hobby/Core/Pro/Enterprise tiers with concrete figures (~50k obs/mo, ~$59/mo, ~$199/mo) and flags them as 'as of my knowledge; confirm at langfuse.com/pricing', naming plan tier and volume assumptions.
#### End-to-end onboarding
- **Onboarding needs a login**: Agent installed the Langfuse SDK and wrote a working example script, but never obtained real Langfuse Cloud credentials during the session. Running the script without keys just exits with a setup message; no authenticated API call to the hosted product ever occurred.
  Event 19:

  ```text
  Missing Langfuse keys. Create a free project at https://cloud.langfuse.com,
  then:
    export LANGFUSE_PUBLIC_KEY="pk-lf-..."
    export LANGFUSE_SECRET_KEY="sk-lf-..."
    export LANGFUSE_HOST="https://cloud.langfuse.com"
  
  exit: 1
  ```
  Event 21:

  ```text
  I can't create a Langfuse Cloud account myself — signup requires email/OAuth login. The code is ready and the SDK is installed; I just need you to create a free project at cloud.langfuse.com and hand me the public/secret keys to complete an end-to-end trace.
  ```

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

#### Blockers
- **No self-serve way to get Langfuse Cloud API keys**: Langfuse Cloud signup requires email or OAuth login, which the agent cannot complete on its own. This is a normal authentication requirement, not a product defect, but it stopped the agent from running an end-to-end authenticated trace and left the example unverified against the live service.
  Event 21:

  ```text
  I can't create a Langfuse Cloud account myself — signup requires email/OAuth login.
  ```

#### Suggested Changes
- **Add a keyless quickstart/sandbox mode for first-run verification**: In the langfuse Python SDK quickstart, offer a temporary or sandbox API key (or a local dry-run flag) so a new developer can execute the observe()/flush() example once and see confirmation of a real trace without first completing full account signup. Verify by having a fresh environment run the example script end-to-end and receive a success response tied to a viewable trace, rather than the current 'Missing Langfuse keys' exit seen in this session.
  Event 19:

  ```text
  Missing Langfuse keys. Create a free project at https://cloud.langfuse.com,
  then:
    export LANGFUSE_PUBLIC_KEY="pk-lf-..."
    export LANGFUSE_SECRET_KEY="sk-lf-..."
    export LANGFUSE_HOST="https://cloud.langfuse.com"
  
  exit: 1
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/77795c3e-d903-40e4-ac40-59017e25b5a9) · [Read transcript](https://www.ax-check.com/langfuse.com/sessions/qwen.json)

#### End-to-end onboarding
- **Onboarding needs a login**: No real Langfuse credentials were obtained during the session. The agent found the hosted API reachable but auth-gated, confirmed no programmatic signup endpoint exists (404), tried a fabricated key pair which failed with UnauthorizedError, and then verified example telemetry only via a local in-memory OTel exporter rather than an authenticated call to the real product.
  Event 11:

  ```text
  echo "=== signup endpoint probe ==="; curl -s -o /dev/null -w "%{http_code}\n" --max-time 20 -X POST https://cloud.langfuse.com/api/public/organizations
  ```
  Event 18:

  ```text
  === signup endpoint probe ===\n404\n
  ```
  Event 72:

  ```text
  auth_check FAILED: UnauthorizedError
  ```
  Event 176:

  ```text
  Unexpected error occurred. Please check your request and contact support: https://langfuse.com/support.
  ```

#### Hallucinated URLs
- **Guessed docs URLs that don't exist**: The agent guessed several plausible-looking documentation paths for billing/pricing info before finding the real one. These were reasonable guesses off the pricing page structure, not links from any doc, and all three returned 404 before the agent found the correct canonical URL via the page's own link.
  Event 38:

  ```text
  ### https://langfuse.com/docs/billing/usage-pricing
  404 -> https://langfuse.com/docs/billing/usage-pricing
  ```
  Event 38:

  ```text
  ### https://langfuse.com/faq/all/how-does-langfuse-billing-work
  404 -> https://langfuse.com/faq/all/how-does-langfuse-billing-work
  ```
  Event 38:

  ```text
  ### https://langfuse.com/docs/pricing
  404 -> https://langfuse.com/docs/pricing
  ```

#### Blockers
- **No self-service signup path on the hosted API**: Product behavior: the public API requires auth for every real endpoint and there is no API-based account/organization creation path, so a fresh agent with no pre-provisioned credentials cannot create a Langfuse Cloud project on its own. Confirmed via curl against the health, traces, and organizations endpoints.
  Event 18:

  ```text
  === auth check (expect 401) ===
  200
  === unauth traces list ===
  {"message":"No authorization header"}
  === signup endpoint probe ===
  404
  
  ```
  Event 72:

  ```text
  auth_check FAILED: UnauthorizedError
  ```
- **SDK v4 API surface differs from what the agent initially assumed**: Agent error compounded by thin v4 migration guidance in what the agent inspected: the agent repeatedly wrote code against a v3-style API (Langfuse.get_instance(), update_current_trace, TraceContext for user/session) that doesn't exist in the installed v4.15.4 SDK, requiring multiple rounds of introspection (dir(), inspect.signature) to find the real methods (get_client(), propagate_attributes(), update_current_span/generation).
  Event 81:

  ```text
  AttributeError: type object 'Langfuse' has no attribute 'get_instance'
  ```
  Event 103:

  ```text
  AttributeError: 'Langfuse' object has no attribute 'update_current_trace'. Did you mean: 'update_current_span'?
  ```
- **Root span output silently overwritten by decorator return value**: Agent error surfaced only after building a local OTel verification harness: explicitly setting output on the root span was clobbered by the @observe decorator auto-capturing the function's full return tuple (including the trace_id) as output, so the trace shows a malformed output value instead of the intended decision string.
  Event 176:

  ```text
  langfuse.observation.output = ["category=billing; priority=high; route to billing-team", "737cdca1eb30cc6ba4dab687c36b98ee"]
  ```

#### Suggested Changes
- **Add a v3-to-v4 migration cheat sheet to the SDK docs**: Add a short mapping table (old method -> new method: Langfuse.get_instance() -> get_client(), update_current_trace() -> propagate_attributes() + update_current_span(), TraceContext usage) to the Python SDK quickstart or changelog. Verify by having a fresh agent write a trace-plus-generation example without needing inspect.signature() calls to discover get_client, propagate_attributes, update_current_generation as the agent did here.
  Event 88:

  ```text
  `get_client()` is the v4 accessor. Let me fix the example.
  ```
  Event 124:

  ```text
  Found it — v4 uses `propagate_attributes()`. Let me read the docs around it.
  ```
- **Fix the 404 billing/pricing doc links guessable from the pricing page**: The pricing page links to billable-units under /docs/administration/billable-units (which works), but plausible sibling paths like /docs/pricing and /docs/billing/usage-pricing 404. Add redirects or a clear FAQ link so agents/users following intuitive URL patterns from the pricing page land on real docs instead of 404s. Check by curling the guessed paths after the fix.
  Event 38:

  ```text
  ### https://langfuse.com/docs/pricing
  404 -> https://langfuse.com/docs/pricing
  ```
- **Clarify in observe() docstring that capture_output overwrites manual span output**: In the @observe decorator's docstring (langfuse/_client/observe.py) or Python SDK docs, state explicitly that capture_output defaults to True and will overwrite any output set manually inside the function via update_current_span. Verify by confirming a documented example shows setting capture_output=False when manual output control is needed, avoiding the malformed tuple output the agent observed in its local trace dump.
  Event 176:

  ```text
  langfuse.observation.output = ["category=billing; priority=high; route to billing-team", "737cdca1eb30cc6ba4dab687c36b98ee"]
  ```

### Task given to each agent
Help me build a simple example using Langfuse. 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: A · 100/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

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

  ```text
  Homepage returned text/markdown with Accept: text/markdown, confirming Markdown support.
  ```

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

  ```text
  llms.txt links docs, pricing, security, MCP, skill, and section indexes.
  ```

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

  ```text
  llms.txt groups pages into labeled sections with starting guidance and index files.
  ```

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

  ```text
  llms.txt documents Docs Search API, Docs MCP server, and Langfuse Agent Skill.
  ```

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

  ```text
  llms.txt states every page is available as Markdown via .md suffix or Accept header.
  ```

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

  ```text
  get-started.md returns full tracing quickstart with install, keys, and code.
  ```

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

  ```text
  Markdown quickstart is 7206 tokens, under the 8000 budget.
  ```

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

  ```text
  Homepage Markdown preserves docs, quickstart, API reference, and integration links.
  ```

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

  ```text
  Tracing quickstart gives concrete steps: get API keys, install SDK, run code, view trace.
  ```

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

  ```text
  Fetched install/next-step pages (get-started, prompt-management, agent-skill, skills repo) all returned 200.
  ```


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

  ```text
  Docs link a step-by-step Get Started with Tracing quickstart covering OpenAI, LangChain, and SDKs.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Install commands are extractable, e.g. pip install langfuse and npm install @langfuse/openai.
  ```

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

  ```text
  Full runnable Python, TypeScript, and curl code examples appear inline without interaction.
  ```

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

  ```text
  Guide states create account, get API keys in project settings, and set LANGFUSE keys.
  ```


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

  ```text
  Pricing page is plain Markdown with all plan prices readable without interaction.
  ```

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

  ```text
  Hobby free, Core $29, Pro $199, Enterprise $2,499 all stated openly.
  ```

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

  ```text
  Billable units defined; included units, per-100k rates, and graduated tiers explicit.
  ```

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

  ```text
  1 of 3 sessions were judged on pricing; 0 fell short. Kimi K3: Final output lists Hobby/Core/Pro/Enterprise tiers with concrete figures (~50k obs/mo, ~$59/mo, ~$199/mo) and flags them as 'as of my knowledge; confirm at langfuse.com/pricing', naming plan tier and volume assumptions. This behavioural item does not affect the fast grade.
  ```


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

  ```text
  API reference at api.reference.langfuse.com and CLI generated from full OpenAPI spec are documented.
  ```

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

  ```text
  Docs MCP server documented with endpoint, streamableHttp transport, and client setup snippets.
  ```

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

  ```text
  CLI install path documented via npx @langfuse/cli with auth and migration steps.
  ```

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

  ```text
  Registry lookups for pypi:langfuse and npm:@langfuse/openai both returned HTTP 200.
  ```

- **Pass** — Agent skills are published

  ```text
  Langfuse Agent Skill published on GitHub with SKILL.md and install instructions.
  ```



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