Java client for the Langfuse API providing access to observability and analytics features for LLM applications
The Metrics API provides access to project-level metrics and analytics using a JSON query object.
Client for retrieving project metrics.
/**
* Get metrics from the Langfuse project using a query object
*
* @param request Metrics query with JSON string
* @param requestOptions Optional request configuration
*/
MetricsResponse metrics(GetMetricsRequest request);
MetricsResponse metrics(GetMetricsRequest request, RequestOptions requestOptions);Usage Example:
import com.langfuse.client.LangfuseClient;
import com.langfuse.client.resources.metrics.requests.*;
import com.langfuse.client.resources.metrics.types.*;
LangfuseClient client = LangfuseClient.builder()
.url("https://cloud.langfuse.com")
.credentials("pk-lf-...", "sk-lf-...")
.build();
// Create metrics query (JSON string)
String query = """
{
"metric": "traces",
"filters": {
"environment": "production",
"fromTimestamp": "2025-10-01T00:00:00Z",
"toTimestamp": "2025-10-14T23:59:59Z"
},
"groupBy": ["userId", "name"]
}
""";
GetMetricsRequest request = GetMetricsRequest.builder()
.query(query)
.build();
MetricsResponse response = client.metrics().metrics(request);
// Response data is a list of result maps
List<Map<String, Object>> data = response.getData();
System.out.println("Metrics data: " + data);/**
* Request for querying metrics
*/
public final class GetMetricsRequest {
String getQuery(); // JSON query string
static Builder builder();
}/**
* Metrics query response
*/
public final class MetricsResponse {
List<Map<String, Object>> getData(); // List of result maps with metric values and dimensions
static Builder builder();
}The query parameter accepts a JSON string with the following structure:
{
"metric": "traces|observations|scores|costs",
"filters": {
"environment": "string",
"userId": "string",
"name": "string",
"fromTimestamp": "ISO 8601 timestamp",
"toTimestamp": "ISO 8601 timestamp",
"tags": ["tag1", "tag2"]
},
"groupBy": ["userId", "name", "environment"],
"aggregation": "count|sum|avg|min|max"
}String query = """
{
"metric": "traces",
"filters": {
"fromTimestamp": "2025-10-01T00:00:00Z",
"toTimestamp": "2025-10-31T23:59:59Z"
},
"groupBy": ["userId"],
"aggregation": "count"
}
""";
GetMetricsRequest request = GetMetricsRequest.builder()
.query(query)
.build();
MetricsResponse response = client.metrics().metrics(request);String query = """
{
"metric": "costs",
"filters": {
"fromTimestamp": "2025-10-01T00:00:00Z"
},
"groupBy": ["environment"],
"aggregation": "sum"
}
""";
GetMetricsRequest request = GetMetricsRequest.builder()
.query(query)
.build();
MetricsResponse response = client.metrics().metrics(request);String query = """
{
"metric": "scores",
"filters": {
"name": "quality",
"fromTimestamp": "2025-10-01T00:00:00Z"
},
"groupBy": ["environment"],
"aggregation": "avg"
}
""";
GetMetricsRequest request = GetMetricsRequest.builder()
.query(query)
.build();
MetricsResponse response = client.metrics().metrics(request);Install with Tessl CLI
npx tessl i tessl/maven-com-langfuse--langfuse-java