---
title: Langfuse API Integration on Truto
slug: langfuse
category: Analytics
canonical: "https://truto.one/integrations/detail/langfuse/"
---

# Langfuse API Integration on Truto



**Category:** Analytics  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 100 tools for Langfuse that AI agents can call directly.

- **list_all_langfuse_public_annotation_queues** — List all annotation queues in Langfuse. Returns a list of queues, each with id and upstream-defined fields in attributes. Truto handles pagination.
- **create_a_langfuse_public_annotation_queue** — Create an annotation queue in Langfuse. Returns the created queue with id. Requires a JSON request body. Required: name, scoreConfigIds.
- **get_single_langfuse_public_annotation_queue_by_id** — Get a single Langfuse annotation queue by id. Returns the queue with id. Required: id.
- **list_all_langfuse_annotation_queue_items** — List items in a langfuse annotation queue. Returns each item's id and upstream-defined fields. Optional: status. Required: queue_id.
- **create_a_langfuse_annotation_queue_item** — Add an item to a langfuse annotation queue. Returns the created item with its id and upstream-defined fields. Required: queue_id, objectId, objectType.
- **get_single_langfuse_annotation_queue_item_by_id** — Get a specific langfuse annotation queue item by id. Returns the item's id and upstream-defined fields. Required: id, queue_id.
- **update_a_langfuse_annotation_queue_item_by_id** — Update a langfuse annotation queue item. Returns the item's id and upstream-defined fields. Required: id, queue_id.
- **delete_a_langfuse_annotation_queue_item_by_id** — Remove an item from a Langfuse annotation queue. Returns an empty 204 response on success. Required: id, queue_id.
- **create_a_langfuse_annotation_queue_assignment** — Assign a user to a Langfuse annotation queue. Returns the created assignment with its id, queue id, and user id. Required: queue_id, userId.
- **langfuse_annotation_queue_assignments_bulk_delete** — Remove a user's assignment from a Langfuse annotation queue. Returns an empty 204 response on success. Required: queue_id, userId.
- **list_all_langfuse_integrations_blob_storages** — List all blob storage integrations for the Langfuse organization. Returns: id, projectId, type, bucketName, endpoint, region, accessKeyId, prefix, exportFrequency, enabled, forcePathStyle, fileType, exportMode, exportStartDate, compressed, exportSource, exportFieldGroups, nextSyncAt, lastSyncAt, lastError, lastErrorAt, createdAt, updatedAt.
- **get_single_langfuse_integrations_blob_storage_by_id** — Get the sync status of a Langfuse blob storage integration by id. Returns: id, projectId, enabled. Required: id.
- **delete_a_langfuse_integrations_blob_storage_by_id** — Delete a Langfuse blob storage integration by id. Returns an empty 204 response on success. Required: id.
- **langfuse_integrations_blob_storages_bulk_update** — Create or update a Langfuse blob storage integration for a project by sending a provider-specific configuration payload. The call performs a test upload to validate the bucket. Returns: id, projectId, type, endpoint, region, prefix, enabled, compressed, createdAt, updatedAt. Required: projectId, type, bucketName, region, exportFrequency, enabled, forcePathStyle, fileType, exportMode.
- **list_all_langfuse_public_comments** — List comments in Langfuse, optionally filtered by objectType, objectId, or authorUserId. Returns paginated comment records including id and upstream-defined comment attributes.
- **create_a_langfuse_public_comment** — Create a comment attached to a Langfuse object (trace, observation, session, or prompt). Returns the created comment including id and upstream-defined comment attributes. Requires the request body defined by the upstream CreateCommentRequest schema. Required: projectId, objectType, objectId, content.
- **get_single_langfuse_public_comment_by_id** — Get a single Langfuse comment by id. Returns the comment including id and upstream-defined comment attributes. Required: id.
- **list_all_langfuse_public_dataset_items** — List dataset items in Langfuse. Returns: id, status, input, expectedOutput, metadata, sourceTraceId, sourceObservationId, datasetId, datasetName, createdAt, updatedAt, mediaReferences. Requires datasetName when version is provided.
- **create_a_langfuse_public_dataset_item** — Create a dataset item in Langfuse. Returns: id, status, input, metadata, createdAt, updatedAt. Required: datasetName.
- **get_single_langfuse_public_dataset_item_by_id** — Get a Langfuse dataset item by id. Returns: id, status, input, metadata, createdAt, updatedAt. Required: id.
- **delete_a_langfuse_public_dataset_item_by_id** — Delete a Langfuse dataset item and all its run items. Returns an empty 204 response on success. Required: id.
- **list_all_langfuse_public_dataset_run_items** — List dataset run items in langfuse. Returns a paginated list of run items for the specified dataset and run. Required: dataset_id, run_name.
- **create_a_langfuse_public_dataset_run_item** — Create a dataset run item in langfuse. Returns the created run item with its id and schema-specific attributes. Required: runName, datasetItemId.
- **list_all_langfuse_public_datasets** — Get all datasets. Returns: id, name, description, metadata, inputSchema, expectedOutputSchema, projectId, createdAt.
- **create_a_langfuse_public_dataset** — Create a dataset. Returns: id, name, description, metadata, inputSchema, expectedOutputSchema, projectId, createdAt. Required: name.
- **get_single_langfuse_public_dataset_by_id** — Get a dataset. Returns: id, name, description, metadata, inputSchema, expectedOutputSchema, projectId, createdAt. Required: dataset_name.
- **get_single_langfuse_dataset_run_by_id** — Get a dataset run in Langfuse by id and return its run items. Returns an array of objects with id, name, description, metadata, datasetId, datasetName, createdAt, and updatedAt. Required: id, dataset_name.
- **delete_a_langfuse_dataset_run_by_id** — Delete a dataset run in Langfuse and all its run items. This action is irreversible. Returns the delete confirmation response. Required: id, dataset_name.
- **list_all_langfuse_dataset_runs** — List dataset runs in Langfuse for a dataset. Returns a list of runs, each including: id, created_at, updated_at. Required: dataset_name.
- **list_all_langfuse_public_experiments** — List experiments in Langfuse. Returns experiment records including id, name, datasetId, metadata, and scores. Use `fields` to request `metadata` and `scores` in addition to the default `core` group. Required: from_start_time.
- **list_all_langfuse_public_experiment_items** — List Langfuse experiment items with cursor-based pagination, ordered by start time descending. Returns each item with id, traceId, startTime, endTime, experimentId, experimentName, and experimentItemId, plus optional field-group-specific fields for dataset, io, metadata, itemMetadata, experimentMetadata, and scores. Required: from_start_time.
- **list_all_langfuse_public_healths** — Check the health of the Langfuse API and database. Returns the health status response.
- **create_a_langfuse_public_ingestion** — Batch ingest tracing events into Langfuse. Returns a 207 ingestion response including a list of encountered errors. Deprecated in favor of the OpenTelemetry endpoint; max batch size 3.5 MB. Required: batch.
- **list_all_langfuse_public_metrics_v_2** — List aggregated metrics from a Langfuse project via the v2 Metrics API. Returns the query-dependent metrics result object. Required: query.
- **get_single_langfuse_public_observation_by_id** — Get a single langfuse observation (event, span, or generation) by id. Returns the observation record including id, traceId, type, name, startTime, endTime, usageDetails, and costDetails. Required: id.
- **list_all_langfuse_public_observations** — List observations in Langfuse with optional filtering by type, level, trace, environment, and start time. Returns observation records including id, traceId, type, name, and metadata. Legacy v1 endpoint; consider the v2 endpoint for cursor-based pagination.
- **list_all_langfuse_public_observations_v_2** — List observations in a Langfuse project using the Observations API v2. Returns each observation's id, traceId, type, start/end times, model, usage, cost, and metadata. Supports filters such as traceId, type, level, environment, and start-time range, plus field groups (`fields`) and cursor-based pagination.
- **create_a_langfuse_public_score** — Create a score in Langfuse. Supports both trace and session scores. Required: name, value.
- **delete_a_langfuse_public_score_by_id** — Delete a Langfuse score by id. Returns an empty 204 response on success. Required: id.
- **list_all_langfuse_public_scores** — List scores in Langfuse. Returns a polymorphic value field (NUMERIC→number, BOOLEAN→boolean, CATEGORICAL/TEXT/CORRECTION→string) with core fields id, projectId, name, dataType, source, timestamp, environment, createdAt, and updatedAt.
- **list_all_langfuse_public_scores_v_2** — List deprecated Langfuse v2 scores (trace and session scores). Returns a score record including id, projectId, name, value, dataType, source, timestamp, environment, createdAt, and updatedAt. Deprecated: use GET /api/public/v3/scores instead; not available on Langfuse v4 and later.
- **get_single_langfuse_public_scores_v_2_by_id** — Get a deprecated Langfuse v2 score by id. Returns the score including id, projectId, name, value, dataType, source, timestamp, environment, createdAt, and updatedAt. Deprecated: use GET /api/public/v3/scores with the id filter; not available on Langfuse v4 and later. Required: id.
- **list_all_langfuse_public_llm_connections** — List all LLM connections in the authenticated Langfuse project. Returns connection records including id and adapter-specific attributes.
- **delete_a_langfuse_public_llm_connection_by_id** — Delete a Langfuse LLM connection by id. Evaluators that depend on the deleted connection are automatically paused. Returns the deletion response including id and operation-specific attributes. Required: id.
- **langfuse_public_llm_connections_bulk_update** — Create or update a Langfuse LLM connection. The connection is upserted on provider. Returns the upserted connection object including id and adapter-specific attributes. Required: provider, adapter, secretKey.
- **get_single_langfuse_public_media_by_id** — Get a langfuse media record by id. Returns: url. Required: id.
- **update_a_langfuse_public_media_by_id** — Patch a langfuse media record by id. Returns an empty 204 response on success. Required: id, uploadedAt, uploadHttpStatus.
- **create_a_langfuse_public_media** — Get a presigned upload URL for a langfuse media record. Returns: url. Requires a request body. Required: contentType, contentLength, sha256Hash, field.
- **list_all_langfuse_public_models** — List models in Langfuse. Returns each model record with its id and upstream model-specific attributes.
- **create_a_langfuse_public_model** — Create a model in Langfuse by posting a JSON request body. Returns the created model record with its id and upstream model-specific attributes. Required: modelName, matchPattern.
- **get_single_langfuse_public_model_by_id** — Get a single Langfuse model by id. Returns the model object including its id, modelName, and project-specific pricing fields. Required: id.
- **delete_a_langfuse_public_model_by_id** — Delete a Langfuse model by id. Cannot delete Langfuse-managed models; create a custom definition with the same modelName to override instead. Returns an empty 204 response on success. Required: id.
- **create_a_langfuse_otel_trace** — Ingest OpenTelemetry traces into Langfuse via the OTLP/HTTP trace export endpoint. Returns an OTLP export response with partial success summary. Required: resourceSpans.
- **list_all_langfuse_organizations_memberships** — List all organization memberships in Langfuse. Returns a list of membership records, each including id and attributes.
- **langfuse_organizations_memberships_bulk_update** — Create or update an organization membership in Langfuse. Returns the membership record including id and attributes. Requires a JSON request body. Required: userId, role.
- **langfuse_organizations_memberships_bulk_delete** — Delete an organization membership from Langfuse. Returns the deletion response including id and attributes. Requires a JSON request body. Required: userId.
- **list_all_langfuse_project_memberships** — List all memberships for a langfuse project. Returns a list of membership records including id, created_at, and updated_at. Required: project_id.
- **langfuse_project_memberships_bulk_update** — Create or update a langfuse project membership. Returns the membership record including id and schema-specific attributes. The user must already be a member of the organization. Required: project_id, userId, role.
- **langfuse_project_memberships_bulk_delete** — Delete a membership from a langfuse project. Returns the deletion response including id and schema-specific attributes. The user must be a member of the organization. Required: project_id, userId.
- **list_all_langfuse_organizations_projects** — List all projects for the organization associated with the API key in langfuse. Returns project objects, each including id and upstream-defined attributes. Requires an organization-scoped API key.
- **list_all_langfuse_organizations_api_keys** — List all API keys for the Langfuse organization associated with the API key. Returns: id, attributes.
- **list_all_langfuse_public_projects** — Get the Langfuse project associated with the API key. Returns the project object including id, name, createdAt, and updatedAt.
- **create_a_langfuse_public_project** — Create a new Langfuse project. Returns the created project including id, name, metadata, and retention. Required: name, retention.
- **update_a_langfuse_public_project_by_id** — Update an existing Langfuse project by id. Returns the updated project including id, name, metadata, and retention. Required: id, name.
- **delete_a_langfuse_public_project_by_id** — Delete a Langfuse project by id. Returns the project deletion response with upstream-defined fields. Project deletion is processed asynchronously. Required: id.
- **list_all_langfuse_project_api_keys** — List all API keys for a Langfuse project. Returns the API key objects including their id and upstream-defined attributes. Required: project_id.
- **create_a_langfuse_project_api_key** — Create a new Langfuse project API key. Returns the created API key object including its id and upstream-defined attributes. publicKey and secretKey must be provided together. Required: project_id.
- **delete_a_langfuse_project_api_key_by_id** — Delete a Langfuse project API key by id. Returns the deletion result including id and upstream-defined attributes. Required: id, project_id.
- **langfuse_prompt_versions_bulk_update** — Update the labels for a specific Langfuse prompt version. Returns the updated prompt with id, name, version, projectId, labels, prompt, type, config, commitMessage, tags, createdAt, and updatedAt. Required: name, version, newLabels.
- **list_all_langfuse_public_prompts** — List langfuse prompt names with their versions and labels. Returns an array of prompt metadata records. Optional filters: name, label, tag, from_updated_at, to_updated_at.
- **create_a_langfuse_public_prompt** — Create a new version for a langfuse prompt. Returns the created prompt object.
- **get_single_langfuse_public_prompt_by_id** — Get a single langfuse prompt by prompt name. Returns the prompt object. Optional: version, label, resolve. Required: prompt_name.
- **langfuse_public_prompts_bulk_delete** — Delete langfuse prompt versions by prompt name. If neither version nor label is specified, all versions of the prompt are deleted. Required: prompt_name.
- **list_all_langfuse_scim_service_provider_configs** — Get the SCIM Service Provider Configuration for a Langfuse organization. Returns the SCIM ServiceProviderConfig object including its identifier and SCIM-defined capability attributes.
- **list_all_langfuse_scim_resource_types** — List SCIM Resource Types in Langfuse. Returns a list of resource type entries, each containing id and attributes (SCIM-defined fields).
- **list_all_langfuse_scim_schemas** — List SCIM schemas in Langfuse. Returns the registered schemas with their ids, names, and attribute definitions.
- **list_all_langfuse_scim_users** — List SCIM users in the langfuse organization. Returns the SCIM list response. Supports optional filter, startIndex, and count parameters.
- **create_a_langfuse_scim_user** — Create a new SCIM user in the langfuse organization. Returns the created SCIM user object. Required: userName, name.
- **get_single_langfuse_scim_user_by_id** — Get a specific langfuse SCIM user by id. Returns the SCIM user object. Required: id.
- **delete_a_langfuse_scim_user_by_id** — Remove a SCIM user from the langfuse organization by id. This removes the user from the organization but does not delete the user entity itself. Returns an empty 204 response on success. Required: id.
- **list_all_langfuse_public_score_configs** — List all Langfuse score configs. Returns a paginated list of score configs, each including id and upstream schema-defined attributes.
- **create_a_langfuse_public_score_config** — Create a Langfuse score config with a JSON request body. Returns the created score config including id and upstream schema-defined attributes. Required: name, dataType.
- **get_single_langfuse_public_score_config_by_id** — Get a Langfuse score config by id. Returns the score config including id and upstream schema-defined attributes. Required: id.
- **update_a_langfuse_public_score_config_by_id** — Update a Langfuse score config by id with a JSON request body. Returns the updated score config including id and upstream schema-defined attributes. Required: id.
- **list_all_langfuse_public_sessions** — List langfuse sessions. Returns a paginated list of session objects including id and content-type-specific attributes. Optional: fromTimestamp, toTimestamp, environment. Legacy endpoint; prefer v2 observations for new data extraction workflows.
- **get_single_langfuse_public_session_by_id** — Get a Langfuse session by id. Returns the session object including its id and traces. Traces are not paginated; prefer the v2 observations endpoint for large sessions. Required: id.
- **get_single_langfuse_public_trace_by_id** — Get a specific Langfuse trace by id. Returns the trace object including id, name, timestamp, input, output, metadata, scores, observations, and metrics such as totalCost and latency. Optional: fields. Required: id.
- **delete_a_langfuse_public_trace_by_id** — Delete a specific Langfuse trace by id. Returns the upstream deletion response in `attributes`. Required: id.
- **list_all_langfuse_public_traces** — List Langfuse traces in a project. Returns each trace with id, name, timestamp, userId, sessionId, tags, and aggregated metrics. Optional filters: userId, name, sessionId, tags, version, release, environment, fromTimestamp, toTimestamp, and a JSON filter string.
- **langfuse_public_traces_bulk_delete** — Delete multiple Langfuse traces at once. Returns a 200 confirmation response. Avoid sending more than 30–50 trace IDs in a single request. Required: traceIds.
- **create_a_langfuse_unstable_dashboard_widget** — Create a reusable dashboard widget in Langfuse. Returns the created widget including id, view, and minVersion. Widgets must be placed on a dashboard grid via the UI; the legacy traces view is rejected. Unstable API: may evolve.
- **list_all_langfuse_unstable_evaluation_rules** — List evaluation rules in the authenticated Langfuse project. Returns each rule's id, name, target, enabled state, evaluator, filter, mapping, and timestamps.
- **create_a_langfuse_unstable_evaluation_rule** — Create an evaluation rule in Langfuse. Returns the created rule with id, name, target, enabled, evaluator, filter, mapping, and timestamps. Required: name, target, and evaluator (with name and scope). Target must be observation or experiment; omit mapping for code evaluators; at most 50 active rules per project.
- **get_single_langfuse_unstable_evaluation_rule_by_id** — Get a single Langfuse evaluation rule by id. Returns the rule including id, name, target, enabled, evaluator, filter, mapping, and timestamps. Required: id.
- **update_a_langfuse_unstable_evaluation_rule_by_id** — Update a Langfuse evaluation rule by id. Returns the updated rule including its id, name, target, evaluator, filter, mapping, and enabled state. Required: id. Provide only the fields you want to change.
- **delete_a_langfuse_unstable_evaluation_rule_by_id** — Delete a Langfuse evaluation rule by id. Returns the deletion result object. Required: id. Note: this removes the live-ingestion rule only and does not delete the referenced evaluator.
- **list_all_langfuse_unstable_evaluators** — List evaluators available to the authenticated Langfuse project. Returns the latest version of each evaluator, including id, name, scope, version, variables, outputDefinition, and modelConfig. Project and Langfuse-managed evaluators may share a name but appear as separate items with different scope values.
- **create_a_langfuse_unstable_evaluator** — Create an evaluator in Langfuse. Returns the created evaluator including id, name, scope, version, variables, outputDefinition, and modelConfig. Required: name. For `llm_as_judge` evaluators, send `type` and `outputDefinition`; for `code` evaluators, send `type`, `sourceCode`, and `runtime`.
- **get_single_langfuse_unstable_evaluator_by_id** — Get a single Langfuse evaluator by id. Returns the evaluator including id, name, version, scope, type, prompt, outputDefinition, modelConfig, and variables. Required: id.
- **delete_a_langfuse_unstable_evaluator_by_id** — Delete a Langfuse evaluator by id. Removes the evaluator and all its stored versions; existing scores are not deleted. Returns the deletion response with id and attributes. Required: id. Cannot delete managed evaluators (scope=managed); delete referencing evaluation rules first to avoid 409.

## How it works

1. **Link your customer's Langfuse account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Langfuse.** The Proxy API is a 1-to-1 mapping of the Langfuse API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed LLM observability into AI-powered SaaS products** — Let your enterprise customers pipe traces, spans, and token costs from your AI features directly into their own Langfuse workspace. This gives them auditability over what your AI is doing on their behalf without you building a bespoke observability layer.
- **Ship AI evaluation and guardrails as a native add-on** — If your product runs hallucination checks, PII scans, or quality evaluations, write scores and comments back into your users' Langfuse traces. Their engineers see your findings in the tool they already use to monitor production LLM behavior.
- **Power human-in-the-loop labeling workflows** — Data-labeling and RLHF platforms can pull items from Langfuse annotation queues, route them to human reviewers, and push corrected input/expected-output pairs back as dataset items ready for fine-tuning.
- **Sync prompts between your CMS and Langfuse** — Prompt management tools and internal developer platforms can push versioned prompts into Langfuse and promote them across environments via labels, keeping a single source of truth for prompt engineering teams.
- **Offer dataset-driven experiment automation** — Testing and QA platforms can create Langfuse datasets, trigger dataset runs, and read back experiment results, enabling your users to run regression tests against their live prompts and models from inside your product.

## What you can build

- **OpenTelemetry trace forwarding** — Stream every LLM call, tool invocation, and span from your platform into your customer's Langfuse project using the OTEL ingestion endpoint.
- **Automated score writeback** — Attach numeric or categorical evaluation scores (accuracy, toxicity, safety) to specific traces so your assessments appear on Langfuse dashboards alongside native metrics.
- **Annotation queue reviewer app** — Fetch pending items from Langfuse annotation queues, present them in your labeling UI, and update or delete queue items as reviewers work through the backlog.
- **Dataset generator from reviewed traces** — Convert human-corrected outputs into structured Langfuse dataset items, ready to power the next fine-tuning or evaluation run.
- **Two-way prompt registry sync** — Create, list, and version prompts in Langfuse from your CMS, then use bulk update to promote versions between staging and production labels.
- **Trace-level comment injection** — Programmatically leave contextual comments on traces (e.g., 'PII detected in output') so your product's insights show up inline in the customer's Langfuse UI.

## FAQs

### How do end users authenticate their Langfuse account with our product?

Langfuse uses project-scoped API key pairs (public and secret key). Through Truto, your users provide these credentials once during connection setup, and Truto securely stores and injects them into every API call — you never handle raw keys.

### Can we send traces via OpenTelemetry through Truto?

Yes. The create_a_langfuse_otel_trace tool accepts OTEL-formatted spans, and create_a_langfuse_public_ingestion supports Langfuse's native batched JSON format. Both are suitable for high-volume asynchronous telemetry push.

### Which resources support full CRUD versus read-only access?

Traces, observations, sessions, and metrics are primarily read-only or ingestion-based. Prompts, datasets, dataset items, scores, annotation queues, annotation queue items, score configs, evaluators, and evaluation rules support create, read, update, and/or delete operations depending on the resource.

### Does Truto handle pagination when listing large volumes of traces or observations?

Yes. Truto normalizes Langfuse's pagination so list endpoints like list_all_langfuse_public_traces and list_all_langfuse_public_observations_v_2 can be iterated consistently without you handling cursors or page tokens manually.

### Can we support customers using self-hosted Langfuse instances?

Langfuse is open source and commonly self-hosted. Truto supports configuring a custom base URL per connection, so your enterprise users can point the integration at their own Langfuse deployment rather than Langfuse Cloud.

### Is bulk deletion or bulk update supported for cleanup workflows?

Yes. Langfuse exposes bulk endpoints for traces, prompts, annotation queue assignments, LLM connections, blob storage integrations, and organization/project memberships, which Truto exposes as dedicated bulk tools for efficient batch operations.

## Related reading

- [Connect Langfuse to Claude: Audit Experiments & Datasets](https://truto.one/blog/connect-langfuse-to-claude-audit-experiments-and-datasets/) — Learn how to generate a managed MCP server using Truto to connect Langfuse to Claude. Automate dataset auditing, trace analysis, and evaluation scoring.
- [Connect Langfuse to ChatGPT: Monitor Traces and Manage Prompts](https://truto.one/blog/connect-langfuse-to-chatgpt-monitor-traces-and-manage-prompts/) — Learn how to connect Langfuse to ChatGPT using a managed MCP server. Automate trace monitoring, prompt versioning, and LLM-as-a-judge scoring workflows.
- [Connect Langfuse to AI Agents: Automate Scores and Evaluations](https://truto.one/blog/connect-langfuse-to-ai-agents-automate-scores-and-evaluations/) — Learn how to connect Langfuse to AI Agents using Truto's /tools endpoint. Bind native tools to LangChain to automate traces, scores, and evaluations.
