or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

client-configuration.mdcomments-annotations.mdcommon-types.mddatasets.mdexceptions.mdhealth.mdindex.mdingestion.mdmedia.mdmetrics.mdmodels.mdpagination.mdprojects-organizations.mdprompts.mdscim.mdscores.mdsessions.mdtraces-observations.md

metrics.mddocs/

0

# Metrics

1

2

The Metrics API provides access to project-level metrics and analytics using a JSON query object.

3

4

## Capabilities

5

6

### MetricsClient

7

8

Client for retrieving project metrics.

9

10

```java { .api }

11

/**

12

* Get metrics from the Langfuse project using a query object

13

*

14

* @param request Metrics query with JSON string

15

* @param requestOptions Optional request configuration

16

*/

17

MetricsResponse metrics(GetMetricsRequest request);

18

MetricsResponse metrics(GetMetricsRequest request, RequestOptions requestOptions);

19

```

20

21

**Usage Example:**

22

23

```java

24

import com.langfuse.client.LangfuseClient;

25

import com.langfuse.client.resources.metrics.requests.*;

26

import com.langfuse.client.resources.metrics.types.*;

27

28

LangfuseClient client = LangfuseClient.builder()

29

.url("https://cloud.langfuse.com")

30

.credentials("pk-lf-...", "sk-lf-...")

31

.build();

32

33

// Create metrics query (JSON string)

34

String query = """

35

{

36

"metric": "traces",

37

"filters": {

38

"environment": "production",

39

"fromTimestamp": "2025-10-01T00:00:00Z",

40

"toTimestamp": "2025-10-14T23:59:59Z"

41

},

42

"groupBy": ["userId", "name"]

43

}

44

""";

45

46

GetMetricsRequest request = GetMetricsRequest.builder()

47

.query(query)

48

.build();

49

50

MetricsResponse response = client.metrics().metrics(request);

51

52

// Response data is a list of result maps

53

List<Map<String, Object>> data = response.getData();

54

System.out.println("Metrics data: " + data);

55

```

56

57

## Request Types

58

59

### GetMetricsRequest

60

61

```java { .api }

62

/**

63

* Request for querying metrics

64

*/

65

public final class GetMetricsRequest {

66

String getQuery(); // JSON query string

67

68

static Builder builder();

69

}

70

```

71

72

## Response Types

73

74

### MetricsResponse

75

76

```java { .api }

77

/**

78

* Metrics query response

79

*/

80

public final class MetricsResponse {

81

List<Map<String, Object>> getData(); // List of result maps with metric values and dimensions

82

83

static Builder builder();

84

}

85

```

86

87

## Query Structure

88

89

The query parameter accepts a JSON string with the following structure:

90

91

```json

92

{

93

"metric": "traces|observations|scores|costs",

94

"filters": {

95

"environment": "string",

96

"userId": "string",

97

"name": "string",

98

"fromTimestamp": "ISO 8601 timestamp",

99

"toTimestamp": "ISO 8601 timestamp",

100

"tags": ["tag1", "tag2"]

101

},

102

"groupBy": ["userId", "name", "environment"],

103

"aggregation": "count|sum|avg|min|max"

104

}

105

```

106

107

## Example Queries

108

109

### Trace Count by User

110

111

```java

112

String query = """

113

{

114

"metric": "traces",

115

"filters": {

116

"fromTimestamp": "2025-10-01T00:00:00Z",

117

"toTimestamp": "2025-10-31T23:59:59Z"

118

},

119

"groupBy": ["userId"],

120

"aggregation": "count"

121

}

122

""";

123

124

GetMetricsRequest request = GetMetricsRequest.builder()

125

.query(query)

126

.build();

127

128

MetricsResponse response = client.metrics().metrics(request);

129

```

130

131

### Total Cost by Environment

132

133

```java

134

String query = """

135

{

136

"metric": "costs",

137

"filters": {

138

"fromTimestamp": "2025-10-01T00:00:00Z"

139

},

140

"groupBy": ["environment"],

141

"aggregation": "sum"

142

}

143

""";

144

145

GetMetricsRequest request = GetMetricsRequest.builder()

146

.query(query)

147

.build();

148

149

MetricsResponse response = client.metrics().metrics(request);

150

```

151

152

### Average Score by Name

153

154

```java

155

String query = """

156

{

157

"metric": "scores",

158

"filters": {

159

"name": "quality",

160

"fromTimestamp": "2025-10-01T00:00:00Z"

161

},

162

"groupBy": ["environment"],

163

"aggregation": "avg"

164

}

165

""";

166

167

GetMetricsRequest request = GetMetricsRequest.builder()

168

.query(query)

169

.build();

170

171

MetricsResponse response = client.metrics().metrics(request);

172

```

173

174

## Best Practices

175

176

1. **Use Date Filters**: Always include fromTimestamp/toTimestamp for performance

177

2. **Limit Grouping**: Avoid grouping by too many dimensions

178

3. **Cache Results**: Cache metrics responses for dashboards

179

4. **Handle Response**: Parse the Object response based on your query structure

180

5. **Monitor Performance**: Track query performance for large datasets

181

182

## Related Documentation

183

184

- [Traces and Observations](./traces-observations.md) - Trace data sources

185

- [Scores](./scores.md) - Score data sources

186