coaiajs 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +12 -4
  2. package/agents/custom_gpt/ceremony.yml +3341 -0
  3. package/dist/mcp/config.d.ts.map +1 -1
  4. package/dist/mcp/config.js +0 -2
  5. package/dist/mcp/config.js.map +1 -1
  6. package/dist/mcp/server.js +3 -8
  7. package/dist/mcp/server.js.map +1 -1
  8. package/dist/mcp/tools/coaiapy-tools.d.ts.map +1 -1
  9. package/dist/mcp/tools/coaiapy-tools.js +3 -18
  10. package/dist/mcp/tools/coaiapy-tools.js.map +1 -1
  11. package/dist/src/cli.js +169 -98
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/langfuse/client.d.ts +44 -11
  14. package/dist/src/langfuse/client.d.ts.map +1 -1
  15. package/dist/src/langfuse/client.js +171 -8
  16. package/dist/src/langfuse/client.js.map +1 -1
  17. package/dist/src/langfuse/comments.js +2 -2
  18. package/dist/src/langfuse/comments.js.map +1 -1
  19. package/dist/src/langfuse/index.d.ts +5 -3
  20. package/dist/src/langfuse/index.d.ts.map +1 -1
  21. package/dist/src/langfuse/index.js +3 -2
  22. package/dist/src/langfuse/index.js.map +1 -1
  23. package/dist/src/langfuse/observations.d.ts +37 -2
  24. package/dist/src/langfuse/observations.d.ts.map +1 -1
  25. package/dist/src/langfuse/observations.js +132 -61
  26. package/dist/src/langfuse/observations.js.map +1 -1
  27. package/dist/src/langfuse/projects.d.ts +2 -0
  28. package/dist/src/langfuse/projects.d.ts.map +1 -0
  29. package/dist/src/langfuse/projects.js +8 -0
  30. package/dist/src/langfuse/projects.js.map +1 -0
  31. package/dist/src/langfuse/prompts.d.ts +1 -0
  32. package/dist/src/langfuse/prompts.d.ts.map +1 -1
  33. package/dist/src/langfuse/prompts.js +53 -0
  34. package/dist/src/langfuse/prompts.js.map +1 -1
  35. package/dist/src/langfuse/scores.d.ts +9 -3
  36. package/dist/src/langfuse/scores.d.ts.map +1 -1
  37. package/dist/src/langfuse/scores.js +33 -22
  38. package/dist/src/langfuse/scores.js.map +1 -1
  39. package/dist/src/langfuse/traces.d.ts +16 -5
  40. package/dist/src/langfuse/traces.d.ts.map +1 -1
  41. package/dist/src/langfuse/traces.js +112 -105
  42. package/dist/src/langfuse/traces.js.map +1 -1
  43. package/llms-full.txt +9 -6
  44. package/llms.txt +3 -3
  45. package/package.json +7 -2
  46. package/rispecs/03-langfuse-module.spec.md +5 -0
  47. package/rispecs/08-cli-interface.spec.md +8 -5
  48. package/rispecs/09-mcp-server.spec.md +2 -2
@@ -0,0 +1,3341 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: winter_solstice_ceremony_langfuse
4
+ version: 0.4.0
5
+ description: >-
6
+ Langfuse v4-compatible ceremony actions using observations-first reads, Scores API v3, and OpenTelemetry trace
7
+ ingestion.
8
+ summary: This is where we trace, get prompts, store prompts versions, and get scores. and various things for the ceremony.
9
+ servers:
10
+ - url: https://cloud.langfuse.com
11
+ paths:
12
+ /api/public/dataset-items:
13
+ get:
14
+ description: |-
15
+ Get dataset items. Optionally specify a version to get the items as they existed at that point in time.
16
+ Note: If version parameter is provided, datasetName must also be provided.
17
+ operationId: datasetItems_list
18
+ tags:
19
+ - DatasetItems
20
+ parameters:
21
+ - name: datasetName
22
+ in: query
23
+ required: false
24
+ schema:
25
+ type:
26
+ - string
27
+ - "null"
28
+ - name: sourceTraceId
29
+ in: query
30
+ required: false
31
+ schema:
32
+ type:
33
+ - string
34
+ - "null"
35
+ - name: sourceObservationId
36
+ in: query
37
+ required: false
38
+ schema:
39
+ type:
40
+ - string
41
+ - "null"
42
+ - name: version
43
+ in: query
44
+ description: |-
45
+ ISO 8601 timestamp (RFC 3339, Section 5.6) in UTC (e.g., "2026-01-21T14:35:42Z").
46
+ If provided, returns state of dataset at this timestamp.
47
+ If not provided, returns the latest version. Requires datasetName to be specified.
48
+ required: false
49
+ schema:
50
+ type:
51
+ - string
52
+ - "null"
53
+ format: date-time
54
+ - name: page
55
+ in: query
56
+ description: page number, starts at 1
57
+ required: false
58
+ schema:
59
+ type:
60
+ - integer
61
+ - "null"
62
+ - name: limit
63
+ in: query
64
+ description: limit of items per page
65
+ required: false
66
+ schema:
67
+ type:
68
+ - integer
69
+ - "null"
70
+ responses:
71
+ "200":
72
+ description: ""
73
+ content:
74
+ application/json:
75
+ schema:
76
+ $ref: "#/components/schemas/PaginatedDatasetItems"
77
+ "400":
78
+ description: ""
79
+ content:
80
+ application/json:
81
+ schema: {}
82
+ "401":
83
+ description: ""
84
+ content:
85
+ application/json:
86
+ schema: {}
87
+ "403":
88
+ description: ""
89
+ content:
90
+ application/json:
91
+ schema: {}
92
+ "404":
93
+ description: ""
94
+ content:
95
+ application/json:
96
+ schema: {}
97
+ "405":
98
+ description: ""
99
+ content:
100
+ application/json:
101
+ schema: {}
102
+ security:
103
+ - BasicAuth: []
104
+ x-openai-isConsequential: false
105
+ /api/public/dataset-items/{id}:
106
+ get:
107
+ description: Get a dataset item
108
+ operationId: datasetItems_get
109
+ tags:
110
+ - DatasetItems
111
+ parameters:
112
+ - name: id
113
+ in: path
114
+ required: true
115
+ schema:
116
+ type: string
117
+ responses:
118
+ "200":
119
+ description: ""
120
+ content:
121
+ application/json:
122
+ schema:
123
+ $ref: "#/components/schemas/DatasetItem"
124
+ "400":
125
+ description: ""
126
+ content:
127
+ application/json:
128
+ schema: {}
129
+ "401":
130
+ description: ""
131
+ content:
132
+ application/json:
133
+ schema: {}
134
+ "403":
135
+ description: ""
136
+ content:
137
+ application/json:
138
+ schema: {}
139
+ "404":
140
+ description: ""
141
+ content:
142
+ application/json:
143
+ schema: {}
144
+ "405":
145
+ description: ""
146
+ content:
147
+ application/json:
148
+ schema: {}
149
+ security:
150
+ - BasicAuth: []
151
+ x-openai-isConsequential: false
152
+ /api/public/comments:
153
+ post:
154
+ description: Create a comment. Comments may be attached to different object types (trace, observation, session, prompt).
155
+ operationId: comments_create
156
+ tags:
157
+ - Comments
158
+ parameters: []
159
+ responses:
160
+ "200":
161
+ description: ""
162
+ content:
163
+ application/json:
164
+ schema:
165
+ $ref: "#/components/schemas/CreateCommentResponse"
166
+ "400":
167
+ description: ""
168
+ content:
169
+ application/json:
170
+ schema: {}
171
+ "401":
172
+ description: ""
173
+ content:
174
+ application/json:
175
+ schema: {}
176
+ "403":
177
+ description: ""
178
+ content:
179
+ application/json:
180
+ schema: {}
181
+ "404":
182
+ description: ""
183
+ content:
184
+ application/json:
185
+ schema: {}
186
+ "405":
187
+ description: ""
188
+ content:
189
+ application/json:
190
+ schema: {}
191
+ security:
192
+ - BasicAuth: []
193
+ requestBody:
194
+ required: true
195
+ content:
196
+ application/json:
197
+ schema:
198
+ $ref: "#/components/schemas/CreateCommentRequest"
199
+ x-openai-isConsequential: false
200
+ get:
201
+ description: Get all comments
202
+ operationId: comments_get
203
+ tags:
204
+ - Comments
205
+ parameters:
206
+ - name: page
207
+ in: query
208
+ description: Page number, starts at 1.
209
+ required: false
210
+ schema:
211
+ type:
212
+ - integer
213
+ - "null"
214
+ - name: limit
215
+ in: query
216
+ description: Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit
217
+ required: false
218
+ schema:
219
+ type:
220
+ - integer
221
+ - "null"
222
+ - name: objectType
223
+ in: query
224
+ description: Filter comments by object type (trace, observation, session, prompt).
225
+ required: false
226
+ schema:
227
+ type:
228
+ - string
229
+ - "null"
230
+ - name: objectId
231
+ in: query
232
+ description: Filter comments by object id. If objectType is not provided, an error will be thrown.
233
+ required: false
234
+ schema:
235
+ type:
236
+ - string
237
+ - "null"
238
+ - name: authorUserId
239
+ in: query
240
+ description: Filter comments by author user id.
241
+ required: false
242
+ schema:
243
+ type:
244
+ - string
245
+ - "null"
246
+ responses:
247
+ "200":
248
+ description: ""
249
+ content:
250
+ application/json:
251
+ schema:
252
+ $ref: "#/components/schemas/GetCommentsResponse"
253
+ "400":
254
+ description: ""
255
+ content:
256
+ application/json:
257
+ schema: {}
258
+ "401":
259
+ description: ""
260
+ content:
261
+ application/json:
262
+ schema: {}
263
+ "403":
264
+ description: ""
265
+ content:
266
+ application/json:
267
+ schema: {}
268
+ "404":
269
+ description: ""
270
+ content:
271
+ application/json:
272
+ schema: {}
273
+ "405":
274
+ description: ""
275
+ content:
276
+ application/json:
277
+ schema: {}
278
+ security:
279
+ - BasicAuth: []
280
+ x-openai-isConsequential: false
281
+ /api/public/v2/observations:
282
+ get:
283
+ description: >-
284
+ Get a list of observations with cursor-based pagination and flexible field selection.
285
+
286
+
287
+ ## Cursor-based Pagination
288
+
289
+ This endpoint uses cursor-based pagination for efficient traversal of large datasets.
290
+
291
+ The cursor is returned in the response metadata and should be passed in subsequent requests
292
+
293
+ to retrieve the next page of results.
294
+
295
+
296
+ ## Field Selection
297
+
298
+ Use the `fields` parameter to control which observation fields are returned:
299
+
300
+ - `core` - Always included: id, traceId, startTime, endTime, projectId, parentObservationId, type
301
+
302
+ - `basic` - name, level, statusMessage, version, environment, bookmarked, public, userId, sessionId,
303
+ isRootObservation
304
+
305
+ - `time` - completionStartTime, createdAt, updatedAt
306
+
307
+ - `io` - input, output
308
+
309
+ - `metadata` - metadata (truncated to 200 chars by default, use `expandMetadata` to get full values)
310
+
311
+ - `model` - providedModelName, internalModelId, modelParameters
312
+
313
+ - `usage` - usageDetails, costDetails, totalCost, usagePricingTierName
314
+
315
+ - `prompt` - promptId, promptName, promptVersion
316
+
317
+ - `metrics` - latency, timeToFirstToken
318
+
319
+ - `trace_context` - tags, release, traceName
320
+
321
+
322
+ If not specified, `core` and `basic` field groups are returned.
323
+
324
+
325
+ ## Filters
326
+
327
+ Multiple filtering options are available via query parameters or the structured `filter` parameter.
328
+
329
+ When using the `filter` parameter, it takes precedence over individual query parameter filters.
330
+ operationId: observations_getMany
331
+ tags:
332
+ - Observations
333
+ parameters:
334
+ - name: fields
335
+ in: query
336
+ description: |-
337
+ Comma-separated list of field groups to include in the response.
338
+ Available groups: core, basic, time, io, metadata, model, usage, prompt, metrics, trace_context.
339
+ If not specified, `core` and `basic` field groups are returned.
340
+ Example: "basic,usage,model"
341
+ required: false
342
+ schema:
343
+ type:
344
+ - string
345
+ - "null"
346
+ - name: expandMetadata
347
+ in: query
348
+ description: |-
349
+ Comma-separated list of metadata keys to return non-truncated.
350
+ By default, metadata values over 200 characters are truncated.
351
+ Use this parameter to retrieve full values for specific keys.
352
+ Example: "key1,key2"
353
+ required: false
354
+ schema:
355
+ type:
356
+ - string
357
+ - "null"
358
+ - name: limit
359
+ in: query
360
+ description: Number of items to return per page. Maximum 1000, default 50.
361
+ required: false
362
+ schema:
363
+ type:
364
+ - integer
365
+ - "null"
366
+ - name: cursor
367
+ in: query
368
+ description: Base64-encoded cursor for pagination. Use the cursor from the previous response to get the next page.
369
+ required: false
370
+ schema:
371
+ type:
372
+ - string
373
+ - "null"
374
+ - name: parseIoAsJson
375
+ in: query
376
+ description: |-
377
+ **Deprecated.** Setting this to `true` will return a 400 error.
378
+ Input/output fields are always returned as raw strings.
379
+ Remove this parameter or set it to `false`.
380
+ required: false
381
+ schema:
382
+ type:
383
+ - boolean
384
+ - "null"
385
+ - name: name
386
+ in: query
387
+ required: false
388
+ schema:
389
+ type:
390
+ - string
391
+ - "null"
392
+ - name: userId
393
+ in: query
394
+ required: false
395
+ schema:
396
+ type:
397
+ - string
398
+ - "null"
399
+ - name: sessionId
400
+ in: query
401
+ description: Filter by session ID.
402
+ required: false
403
+ schema:
404
+ type:
405
+ - string
406
+ - "null"
407
+ - name: type
408
+ in: query
409
+ description: >-
410
+ Filter by observation type (e.g., "GENERATION", "SPAN", "EVENT", "AGENT", "TOOL", "CHAIN", "RETRIEVER",
411
+ "EVALUATOR", "EMBEDDING", "GUARDRAIL")
412
+ required: false
413
+ schema:
414
+ type:
415
+ - string
416
+ - "null"
417
+ - name: traceId
418
+ in: query
419
+ required: false
420
+ schema:
421
+ type:
422
+ - string
423
+ - "null"
424
+ - name: level
425
+ in: query
426
+ description: Optional filter for observations with a specific level (e.g. "DEBUG", "DEFAULT", "WARNING", "ERROR").
427
+ required: false
428
+ schema:
429
+ anyOf:
430
+ - $ref: "#/components/schemas/ObservationLevel"
431
+ - type: "null"
432
+ - name: parentObservationId
433
+ in: query
434
+ description: >-
435
+ Filter by the physical parent observation ID.
436
+
437
+ An empty value matches only observations without a physical parent. Use `isRootObservation` to include
438
+ observations marked as app roots by the SDK, which may retain a non-null `parentObservationId`.
439
+ required: false
440
+ schema:
441
+ type:
442
+ - string
443
+ - "null"
444
+ - name: isRootObservation
445
+ in: query
446
+ description: >-
447
+ Filter by whether an observation is a logical root.
448
+
449
+ Root observations include observations without a physical parent and observations marked as app roots by the
450
+ SDK.
451
+
452
+ An app-root observation may have `isRootObservation=true` and a non-null `parentObservationId`.
453
+ required: false
454
+ schema:
455
+ type:
456
+ - boolean
457
+ - "null"
458
+ - name: environment
459
+ in: query
460
+ description: Optional filter for observations where the environment is one of the provided values.
461
+ required: false
462
+ schema:
463
+ type: array
464
+ items:
465
+ type:
466
+ - string
467
+ - "null"
468
+ - name: fromStartTime
469
+ in: query
470
+ description: Retrieve only observations with a start_time on or after this datetime (ISO 8601).
471
+ required: false
472
+ schema:
473
+ type:
474
+ - string
475
+ - "null"
476
+ format: date-time
477
+ - name: toStartTime
478
+ in: query
479
+ description: Retrieve only observations with a start_time before this datetime (ISO 8601).
480
+ required: false
481
+ schema:
482
+ type:
483
+ - string
484
+ - "null"
485
+ format: date-time
486
+ - name: version
487
+ in: query
488
+ description: Optional filter to only include observations with a certain version.
489
+ required: false
490
+ schema:
491
+ type:
492
+ - string
493
+ - "null"
494
+ - name: filter
495
+ in: query
496
+ description: >-
497
+ JSON string containing an array of filter conditions. When provided, this takes precedence over query
498
+ parameter filters (userId, name, type, level, environment, fromStartTime, ...).
499
+
500
+
501
+ ## Filter Structure
502
+
503
+ Each filter condition has the following structure:
504
+
505
+ ```json
506
+
507
+ [
508
+ {
509
+ "type": string, // Required. One of: "datetime", "string", "number", "stringOptions", "categoryOptions", "arrayOptions", "stringObject", "numberObject", "boolean", "null"
510
+ "column": string, // Required. Column to filter on (see available columns below)
511
+ "operator": string, // Required. Operator based on type:
512
+ // - datetime: ">", "<", ">=", "<="
513
+ // - string: "=", "contains", "does not contain", "starts with", "ends with", "matches"
514
+ // - stringOptions: "any of", "none of"
515
+ // - categoryOptions: "any of", "none of"
516
+ // - arrayOptions: "any of", "none of", "all of"
517
+ // - number: "=", ">", "<", ">=", "<="
518
+ // - stringObject: "=", "contains", "does not contain", "starts with", "ends with", "matches"
519
+ // - numberObject: "=", ">", "<", ">=", "<="
520
+ // - boolean: "=", "<>"
521
+ // - null: "is null", "is not null"
522
+ "value": any, // Required (except for null type). Value to compare against. Type depends on filter type
523
+ "key": string // Required only for stringObject, numberObject, and categoryOptions types when filtering on nested fields like metadata
524
+ }
525
+ ]
526
+
527
+ ```
528
+
529
+
530
+ ## Available Columns
531
+
532
+
533
+ ### Core Observation Fields
534
+
535
+ - `id` (string) - Observation ID
536
+
537
+ - `type` (string) - Observation type (SPAN, GENERATION, EVENT)
538
+
539
+ - `name` (string) - Observation name
540
+
541
+ - `traceId` (string) - Associated trace ID
542
+
543
+ - `startTime` (datetime) - Observation start time
544
+
545
+ - `endTime` (datetime) - Observation end time
546
+
547
+ - `environment` (string) - Environment tag
548
+
549
+ - `level` (string) - Log level (DEBUG, DEFAULT, WARNING, ERROR)
550
+
551
+ - `statusMessage` (string) - Status message
552
+
553
+ - `version` (string) - Version tag
554
+
555
+ - `userId` (string) - User ID
556
+
557
+ - `sessionId` (string) - Session ID
558
+
559
+ - `isRootObservation` (boolean) - Whether the observation is a logical root. Observations marked as app
560
+ roots by the SDK may retain a non-null parentObservationId.
561
+
562
+
563
+ ### Trace-Related Fields
564
+
565
+ - `traceName` (string) - Name of the parent trace
566
+
567
+ - `traceTags` (arrayOptions) - Tags from the parent trace
568
+
569
+ - `tags` (arrayOptions) - Alias for traceTags
570
+
571
+
572
+ ### Performance Metrics
573
+
574
+ - `latency` (number) - Latency in seconds (calculated: end_time - start_time)
575
+
576
+ - `timeToFirstToken` (number) - Time to first token in seconds
577
+
578
+ - `tokensPerSecond` (number) - Output tokens per second
579
+
580
+
581
+ ### Token Usage
582
+
583
+ - `inputTokens` (number) - Number of input tokens
584
+
585
+ - `outputTokens` (number) - Number of output tokens
586
+
587
+ - `totalTokens` (number) - Total tokens (alias: `tokens`)
588
+
589
+
590
+ ### Cost Metrics
591
+
592
+ - `inputCost` (number) - Input cost in USD
593
+
594
+ - `outputCost` (number) - Output cost in USD
595
+
596
+ - `totalCost` (number) - Total cost in USD
597
+
598
+
599
+ ### Model Information
600
+
601
+ - `model` (string) - Provided model name (alias: `providedModelName`)
602
+
603
+ - `promptName` (string) - Associated prompt name
604
+
605
+ - `promptVersion` (number) - Associated prompt version
606
+
607
+
608
+ ### Structured Data
609
+
610
+ - `input` (string) - Observation input. Supports accelerated indexed literal search with the `matches`
611
+ operator.
612
+
613
+ - `output` (string) - Observation output. Supports accelerated indexed literal search with the `matches`
614
+ operator.
615
+
616
+ - `metadata` (stringObject/numberObject/categoryOptions) - Metadata key-value pairs. Use `key` parameter to
617
+ filter on specific metadata keys.
618
+
619
+
620
+ The `matches` operator is only supported for `input`, `output`, and stringObject `metadata` filters. It
621
+ performs indexed literal search with token-boundary pruning using the events table text indexes. Case
622
+ sensitivity differs by target: `input` and `output` matches are case-insensitive, while metadata value
623
+ matches are case-sensitive. Unlike SQL `LIKE`, `%` and `_` are treated as literal characters. Use `contains`
624
+ for legacy substring semantics where the API allows it. Any v2 `input` or `output` filter must be
625
+ accompanied by at least one `=` or `matches` filter on `input` or `output`; standalone `contains`, `starts
626
+ with`, `ends with`, and `does not contain` filters on these columns are rejected.
627
+
628
+
629
+ ## Filter Examples
630
+
631
+ ```json
632
+
633
+ [
634
+ {
635
+ "type": "string",
636
+ "column": "type",
637
+ "operator": "=",
638
+ "value": "GENERATION"
639
+ },
640
+ {
641
+ "type": "number",
642
+ "column": "latency",
643
+ "operator": ">=",
644
+ "value": 2.5
645
+ },
646
+ {
647
+ "type": "stringObject",
648
+ "column": "metadata",
649
+ "key": "environment",
650
+ "operator": "=",
651
+ "value": "production"
652
+ },
653
+ {
654
+ "type": "string",
655
+ "column": "output",
656
+ "operator": "matches",
657
+ "value": "needle"
658
+ },
659
+ {
660
+ "type": "boolean",
661
+ "column": "isRootObservation",
662
+ "operator": "=",
663
+ "value": true
664
+ }
665
+ ]
666
+
667
+ ```
668
+ required: false
669
+ schema:
670
+ type:
671
+ - string
672
+ - "null"
673
+ responses:
674
+ "200":
675
+ description: ""
676
+ content:
677
+ application/json:
678
+ schema:
679
+ $ref: "#/components/schemas/ObservationsV2Response"
680
+ "400":
681
+ description: ""
682
+ content:
683
+ application/json:
684
+ schema: {}
685
+ "401":
686
+ description: ""
687
+ content:
688
+ application/json:
689
+ schema: {}
690
+ "403":
691
+ description: ""
692
+ content:
693
+ application/json:
694
+ schema: {}
695
+ "404":
696
+ description: ""
697
+ content:
698
+ application/json:
699
+ schema: {}
700
+ "405":
701
+ description: ""
702
+ content:
703
+ application/json:
704
+ schema: {}
705
+ security:
706
+ - BasicAuth: []
707
+ x-openai-isConsequential: false
708
+ /api/public/otel/v1/traces:
709
+ post:
710
+ description: >-
711
+ **OpenTelemetry Traces Ingestion Endpoint**
712
+
713
+
714
+ This endpoint implements the OTLP/HTTP specification for trace ingestion, providing native OpenTelemetry
715
+ integration for Langfuse Observability.
716
+
717
+
718
+ **Supported Formats:**
719
+
720
+ - Binary Protobuf: `Content-Type: application/x-protobuf`
721
+
722
+ - JSON Protobuf: `Content-Type: application/json`
723
+
724
+ - Supports gzip compression via `Content-Encoding: gzip` header
725
+
726
+
727
+ **Specification Compliance:**
728
+
729
+ - Conforms to [OTLP/HTTP Trace Export](https://opentelemetry.io/docs/specs/otlp/#otlphttp)
730
+
731
+ - Implements `ExportTraceServiceRequest` message format
732
+
733
+
734
+ **Documentation:**
735
+
736
+ - Integration guide: https://langfuse.com/integrations/native/opentelemetry
737
+
738
+ - Data model: https://langfuse.com/docs/observability/data-model
739
+ operationId: opentelemetry_exportTraces
740
+ tags:
741
+ - Opentelemetry
742
+ parameters: []
743
+ responses:
744
+ "200":
745
+ description: ""
746
+ content:
747
+ application/json:
748
+ schema:
749
+ $ref: "#/components/schemas/OtelTraceResponse"
750
+ "400":
751
+ description: ""
752
+ content:
753
+ application/json:
754
+ schema: {}
755
+ "401":
756
+ description: ""
757
+ content:
758
+ application/json:
759
+ schema: {}
760
+ "403":
761
+ description: ""
762
+ content:
763
+ application/json:
764
+ schema: {}
765
+ "404":
766
+ description: ""
767
+ content:
768
+ application/json:
769
+ schema: {}
770
+ "405":
771
+ description: ""
772
+ content:
773
+ application/json:
774
+ schema: {}
775
+ security:
776
+ - BasicAuth: []
777
+ requestBody:
778
+ required: true
779
+ content:
780
+ application/json:
781
+ schema:
782
+ type: object
783
+ properties:
784
+ resourceSpans:
785
+ type: array
786
+ items:
787
+ $ref: "#/components/schemas/OtelResourceSpan"
788
+ description: Array of resource spans containing trace data as defined in the OTLP specification
789
+ required:
790
+ - resourceSpans
791
+ x-openai-isConsequential: false
792
+ /api/public/v2/prompts:
793
+ get:
794
+ description: Get a list of prompt names with versions and labels
795
+ operationId: prompts_list
796
+ tags:
797
+ - Prompts
798
+ parameters:
799
+ - name: name
800
+ in: query
801
+ required: false
802
+ schema:
803
+ type:
804
+ - string
805
+ - "null"
806
+ - name: label
807
+ in: query
808
+ required: false
809
+ schema:
810
+ type:
811
+ - string
812
+ - "null"
813
+ - name: tag
814
+ in: query
815
+ required: false
816
+ schema:
817
+ type:
818
+ - string
819
+ - "null"
820
+ - name: page
821
+ in: query
822
+ description: page number, starts at 1
823
+ required: false
824
+ schema:
825
+ type:
826
+ - integer
827
+ - "null"
828
+ - name: limit
829
+ in: query
830
+ description: limit of items per page
831
+ required: false
832
+ schema:
833
+ type:
834
+ - integer
835
+ - "null"
836
+ - name: fromUpdatedAt
837
+ in: query
838
+ description: Optional filter to only include prompt versions created/updated on or after a certain datetime (ISO 8601)
839
+ required: false
840
+ schema:
841
+ type:
842
+ - string
843
+ - "null"
844
+ format: date-time
845
+ - name: toUpdatedAt
846
+ in: query
847
+ description: Optional filter to only include prompt versions created/updated before a certain datetime (ISO 8601)
848
+ required: false
849
+ schema:
850
+ type:
851
+ - string
852
+ - "null"
853
+ format: date-time
854
+ responses:
855
+ "200":
856
+ description: ""
857
+ content:
858
+ application/json:
859
+ schema:
860
+ $ref: "#/components/schemas/PromptMetaListResponse"
861
+ "400":
862
+ description: ""
863
+ content:
864
+ application/json:
865
+ schema: {}
866
+ "401":
867
+ description: ""
868
+ content:
869
+ application/json:
870
+ schema: {}
871
+ "403":
872
+ description: ""
873
+ content:
874
+ application/json:
875
+ schema: {}
876
+ "404":
877
+ description: ""
878
+ content:
879
+ application/json:
880
+ schema: {}
881
+ "405":
882
+ description: ""
883
+ content:
884
+ application/json:
885
+ schema: {}
886
+ security:
887
+ - BasicAuth: []
888
+ x-openai-isConsequential: false
889
+ post:
890
+ description: Create a new version for the prompt with the given `name`
891
+ operationId: prompts_create
892
+ tags:
893
+ - Prompts
894
+ parameters: []
895
+ responses:
896
+ "200":
897
+ description: ""
898
+ content:
899
+ application/json:
900
+ schema:
901
+ $ref: "#/components/schemas/Prompt"
902
+ "400":
903
+ description: ""
904
+ content:
905
+ application/json:
906
+ schema: {}
907
+ "401":
908
+ description: ""
909
+ content:
910
+ application/json:
911
+ schema: {}
912
+ "403":
913
+ description: ""
914
+ content:
915
+ application/json:
916
+ schema: {}
917
+ "404":
918
+ description: ""
919
+ content:
920
+ application/json:
921
+ schema: {}
922
+ "405":
923
+ description: ""
924
+ content:
925
+ application/json:
926
+ schema: {}
927
+ security:
928
+ - BasicAuth: []
929
+ requestBody:
930
+ required: true
931
+ content:
932
+ application/json:
933
+ schema:
934
+ $ref: "#/components/schemas/CreatePromptRequest"
935
+ x-openai-isConsequential: false
936
+ /api/public/v2/prompts/{promptName}:
937
+ get:
938
+ description: Get a prompt
939
+ operationId: prompts_get
940
+ tags:
941
+ - Prompts
942
+ parameters:
943
+ - name: promptName
944
+ in: path
945
+ description: |-
946
+ The name of the prompt. If the prompt is in a folder (e.g., "folder/subfolder/prompt-name"),
947
+ the folder path must be URL encoded.
948
+ required: true
949
+ schema:
950
+ type: string
951
+ - name: version
952
+ in: query
953
+ description: Version of the prompt to be retrieved.
954
+ required: false
955
+ schema:
956
+ type:
957
+ - integer
958
+ - "null"
959
+ - name: label
960
+ in: query
961
+ description: Label of the prompt to be retrieved. Defaults to "production" if no label or version is set.
962
+ required: false
963
+ schema:
964
+ type:
965
+ - string
966
+ - "null"
967
+ - name: resolve
968
+ in: query
969
+ description: >-
970
+ Resolve prompt dependencies before returning the prompt. Defaults to `true`. Set to `false` to return the
971
+ raw stored prompt with dependency tags intact. This bypasses prompt caching and is intended for debugging or
972
+ one-off jobs, not production runtime fetches.
973
+ required: false
974
+ schema:
975
+ type:
976
+ - boolean
977
+ - "null"
978
+ responses:
979
+ "200":
980
+ description: ""
981
+ content:
982
+ application/json:
983
+ schema:
984
+ $ref: "#/components/schemas/Prompt"
985
+ "400":
986
+ description: ""
987
+ content:
988
+ application/json:
989
+ schema: {}
990
+ "401":
991
+ description: ""
992
+ content:
993
+ application/json:
994
+ schema: {}
995
+ "403":
996
+ description: ""
997
+ content:
998
+ application/json:
999
+ schema: {}
1000
+ "404":
1001
+ description: ""
1002
+ content:
1003
+ application/json:
1004
+ schema: {}
1005
+ "405":
1006
+ description: ""
1007
+ content:
1008
+ application/json:
1009
+ schema: {}
1010
+ security:
1011
+ - BasicAuth: []
1012
+ x-openai-isConsequential: false
1013
+ /api/public/v2/prompts/{name}/versions/{version}:
1014
+ patch:
1015
+ description: Update labels for a specific prompt version
1016
+ operationId: promptVersion_update
1017
+ tags:
1018
+ - PromptVersion
1019
+ parameters:
1020
+ - name: name
1021
+ in: path
1022
+ description: |-
1023
+ The name of the prompt. If the prompt is in a folder (e.g., "folder/subfolder/prompt-name"),
1024
+ the folder path must be URL encoded.
1025
+ required: true
1026
+ schema:
1027
+ type: string
1028
+ - name: version
1029
+ in: path
1030
+ description: Version of the prompt to update
1031
+ required: true
1032
+ schema:
1033
+ type: integer
1034
+ responses:
1035
+ "200":
1036
+ description: ""
1037
+ content:
1038
+ application/json:
1039
+ schema:
1040
+ $ref: "#/components/schemas/Prompt"
1041
+ "400":
1042
+ description: ""
1043
+ content:
1044
+ application/json:
1045
+ schema: {}
1046
+ "401":
1047
+ description: ""
1048
+ content:
1049
+ application/json:
1050
+ schema: {}
1051
+ "403":
1052
+ description: ""
1053
+ content:
1054
+ application/json:
1055
+ schema: {}
1056
+ "404":
1057
+ description: ""
1058
+ content:
1059
+ application/json:
1060
+ schema: {}
1061
+ "405":
1062
+ description: ""
1063
+ content:
1064
+ application/json:
1065
+ schema: {}
1066
+ security:
1067
+ - BasicAuth: []
1068
+ requestBody:
1069
+ required: true
1070
+ content:
1071
+ application/json:
1072
+ schema:
1073
+ type: object
1074
+ properties:
1075
+ newLabels:
1076
+ type: array
1077
+ items:
1078
+ type: string
1079
+ description: >-
1080
+ New labels for the prompt version. Labels are unique across versions. The "latest" label is reserved
1081
+ and managed by Langfuse.
1082
+ required:
1083
+ - newLabels
1084
+ x-openai-isConsequential: false
1085
+ /api/public/scores:
1086
+ post:
1087
+ description: Create a score (supports trace, observation, session, and dataset run scores)
1088
+ operationId: scores_create
1089
+ tags:
1090
+ - Scores
1091
+ parameters: []
1092
+ responses:
1093
+ "200":
1094
+ description: ""
1095
+ content:
1096
+ application/json:
1097
+ schema:
1098
+ $ref: "#/components/schemas/CreateScoreResponse"
1099
+ "400":
1100
+ description: ""
1101
+ content:
1102
+ application/json:
1103
+ schema: {}
1104
+ "401":
1105
+ description: ""
1106
+ content:
1107
+ application/json:
1108
+ schema: {}
1109
+ "403":
1110
+ description: ""
1111
+ content:
1112
+ application/json:
1113
+ schema: {}
1114
+ "404":
1115
+ description: ""
1116
+ content:
1117
+ application/json:
1118
+ schema: {}
1119
+ "405":
1120
+ description: ""
1121
+ content:
1122
+ application/json:
1123
+ schema: {}
1124
+ security:
1125
+ - BasicAuth: []
1126
+ requestBody:
1127
+ required: true
1128
+ content:
1129
+ application/json:
1130
+ schema:
1131
+ $ref: "#/components/schemas/CreateScoreRequest"
1132
+ x-openai-isConsequential: false
1133
+ /api/public/v3/scores:
1134
+ get:
1135
+ description: |-
1136
+ Get a list of scores with a polymorphic `value` field (v3).
1137
+
1138
+ The `value` field type depends on `dataType`:
1139
+ - `NUMERIC` → number
1140
+ - `BOOLEAN` → boolean
1141
+ - `CATEGORICAL`, `TEXT`, `CORRECTION` → string
1142
+
1143
+ The response always includes the core fields: id, projectId, name,
1144
+ value, dataType, source, timestamp, environment, createdAt, updatedAt.
1145
+
1146
+ Additional field groups can be requested via the `fields` parameter:
1147
+ - `details` — adds comment, configId, metadata
1148
+ - `subject` — adds the subject object describing the entity the score
1149
+ is attached to: kind (trace, observation, session, or experiment),
1150
+ id, and traceId for observation-level scores
1151
+ - `annotation` — adds authorUserId, queueId
1152
+
1153
+ Unknown group names return HTTP 400.
1154
+ operationId: scoresV3_getManyV3
1155
+ tags:
1156
+ - ScoresV3
1157
+ parameters:
1158
+ - name: limit
1159
+ in: query
1160
+ description: Number of items per page. Maximum 100, default 50. Requests with a limit greater than 100 return HTTP 400.
1161
+ required: false
1162
+ schema:
1163
+ type:
1164
+ - integer
1165
+ - "null"
1166
+ - name: cursor
1167
+ in: query
1168
+ description: >-
1169
+ URL-safe base64 (base64url) cursor for pagination. Use the cursor from the previous response to get the next
1170
+ page. Absent on the final page.
1171
+ required: false
1172
+ schema:
1173
+ type:
1174
+ - string
1175
+ - "null"
1176
+ - name: fields
1177
+ in: query
1178
+ description: >-
1179
+ Comma-separated field groups to include in addition to the always-returned core fields. Allowed: details,
1180
+ subject, annotation — see the endpoint description for the fields each group adds. Unknown names return HTTP
1181
+ 400.
1182
+ required: false
1183
+ schema:
1184
+ type:
1185
+ - string
1186
+ - "null"
1187
+ - name: id
1188
+ in: query
1189
+ description: Comma-separated list of score IDs to filter by (OR within, AND across filters).
1190
+ required: false
1191
+ schema:
1192
+ type:
1193
+ - string
1194
+ - "null"
1195
+ - name: name
1196
+ in: query
1197
+ description: Comma-separated list of score names to filter by.
1198
+ required: false
1199
+ schema:
1200
+ type:
1201
+ - string
1202
+ - "null"
1203
+ - name: source
1204
+ in: query
1205
+ description: >-
1206
+ Comma-separated list of score sources to filter by (e.g. API, ANNOTATION, EVAL). Case-insensitive — `api`
1207
+ and `API` are equivalent.
1208
+ required: false
1209
+ schema:
1210
+ type:
1211
+ - string
1212
+ - "null"
1213
+ - name: dataType
1214
+ in: query
1215
+ description: >-
1216
+ Comma-separated list of data types to filter by (NUMERIC, BOOLEAN, CATEGORICAL, TEXT, CORRECTION).
1217
+ Case-insensitive — `numeric` and `NUMERIC` are equivalent. Must be a single value when used with value,
1218
+ valueMin, or valueMax; otherwise the request returns HTTP 400. Must be NUMERIC when used with valueMin or
1219
+ valueMax.
1220
+ required: false
1221
+ schema:
1222
+ type:
1223
+ - string
1224
+ - "null"
1225
+ - name: environment
1226
+ in: query
1227
+ description: Comma-separated list of environments to filter by.
1228
+ required: false
1229
+ schema:
1230
+ type:
1231
+ - string
1232
+ - "null"
1233
+ - name: configId
1234
+ in: query
1235
+ description: Comma-separated list of score config IDs to filter by.
1236
+ required: false
1237
+ schema:
1238
+ type:
1239
+ - string
1240
+ - "null"
1241
+ - name: queueId
1242
+ in: query
1243
+ description: Comma-separated list of annotation queue IDs to filter by.
1244
+ required: false
1245
+ schema:
1246
+ type:
1247
+ - string
1248
+ - "null"
1249
+ - name: authorUserId
1250
+ in: query
1251
+ description: Comma-separated list of author user IDs to filter by.
1252
+ required: false
1253
+ schema:
1254
+ type:
1255
+ - string
1256
+ - "null"
1257
+ - name: value
1258
+ in: query
1259
+ description: >-
1260
+ Comma-separated list of exact values to filter by. Requires a single dataType from NUMERIC, BOOLEAN, or
1261
+ CATEGORICAL; any other dataType, multiple dataTypes, or omitting dataType returns HTTP 400. For BOOLEAN,
1262
+ each value must be "true" or "false"; for NUMERIC, each value must be a finite number. Otherwise the request
1263
+ returns HTTP 400.
1264
+ required: false
1265
+ schema:
1266
+ type:
1267
+ - string
1268
+ - "null"
1269
+ - name: valueMin
1270
+ in: query
1271
+ description: >-
1272
+ Inclusive lower bound on the numeric value. Requires dataType=NUMERIC as a single value; otherwise the
1273
+ request returns HTTP 400.
1274
+ required: false
1275
+ schema:
1276
+ type:
1277
+ - number
1278
+ - "null"
1279
+ format: double
1280
+ - name: valueMax
1281
+ in: query
1282
+ description: >-
1283
+ Inclusive upper bound on the numeric value. Requires dataType=NUMERIC as a single value; otherwise the
1284
+ request returns HTTP 400.
1285
+ required: false
1286
+ schema:
1287
+ type:
1288
+ - number
1289
+ - "null"
1290
+ format: double
1291
+ - name: traceId
1292
+ in: query
1293
+ description: >-
1294
+ Comma-separated list of trace IDs to filter by. Mutually exclusive with sessionId, experimentId. May be
1295
+ combined with observationId to scope the observation lookup to a specific trace.
1296
+ required: false
1297
+ schema:
1298
+ type:
1299
+ - string
1300
+ - "null"
1301
+ - name: sessionId
1302
+ in: query
1303
+ description: >-
1304
+ Comma-separated list of session IDs to filter by. Mutually exclusive with traceId, observationId,
1305
+ experimentId.
1306
+ required: false
1307
+ schema:
1308
+ type:
1309
+ - string
1310
+ - "null"
1311
+ - name: observationId
1312
+ in: query
1313
+ description: >-
1314
+ Comma-separated list of observation IDs to filter by. Requires traceId to be specified, because observation
1315
+ IDs are scoped to a trace. Mutually exclusive with sessionId, experimentId. Returns HTTP 400 when used
1316
+ without traceId.
1317
+ required: false
1318
+ schema:
1319
+ type:
1320
+ - string
1321
+ - "null"
1322
+ - name: experimentId
1323
+ in: query
1324
+ description: >-
1325
+ Comma-separated list of dataset run IDs (experiment IDs) to filter by. Mutually exclusive with traceId,
1326
+ sessionId, observationId.
1327
+ required: false
1328
+ schema:
1329
+ type:
1330
+ - string
1331
+ - "null"
1332
+ - name: fromTimestamp
1333
+ in: query
1334
+ description: Inclusive lower bound on the score timestamp.
1335
+ required: false
1336
+ schema:
1337
+ type:
1338
+ - string
1339
+ - "null"
1340
+ format: date-time
1341
+ - name: toTimestamp
1342
+ in: query
1343
+ description: Exclusive upper bound on the score timestamp.
1344
+ required: false
1345
+ schema:
1346
+ type:
1347
+ - string
1348
+ - "null"
1349
+ format: date-time
1350
+ responses:
1351
+ "200":
1352
+ description: ""
1353
+ content:
1354
+ application/json:
1355
+ schema:
1356
+ $ref: "#/components/schemas/GetScoresV3Response"
1357
+ "400":
1358
+ description: ""
1359
+ content:
1360
+ application/json:
1361
+ schema: {}
1362
+ "401":
1363
+ description: ""
1364
+ content:
1365
+ application/json:
1366
+ schema: {}
1367
+ "403":
1368
+ description: ""
1369
+ content:
1370
+ application/json:
1371
+ schema: {}
1372
+ "404":
1373
+ description: ""
1374
+ content:
1375
+ application/json:
1376
+ schema: {}
1377
+ "405":
1378
+ description: ""
1379
+ content:
1380
+ application/json:
1381
+ schema: {}
1382
+ security:
1383
+ - BasicAuth: []
1384
+ x-openai-isConsequential: false
1385
+ /api/public/score-configs:
1386
+ post:
1387
+ description: Create a score configuration (config). Score configs are used to define the structure of scores
1388
+ operationId: scoreConfigs_create
1389
+ tags:
1390
+ - ScoreConfigs
1391
+ parameters: []
1392
+ responses:
1393
+ "200":
1394
+ description: ""
1395
+ content:
1396
+ application/json:
1397
+ schema:
1398
+ $ref: "#/components/schemas/ScoreConfig"
1399
+ "400":
1400
+ description: ""
1401
+ content:
1402
+ application/json:
1403
+ schema: {}
1404
+ "401":
1405
+ description: ""
1406
+ content:
1407
+ application/json:
1408
+ schema: {}
1409
+ "403":
1410
+ description: ""
1411
+ content:
1412
+ application/json:
1413
+ schema: {}
1414
+ "404":
1415
+ description: ""
1416
+ content:
1417
+ application/json:
1418
+ schema: {}
1419
+ "405":
1420
+ description: ""
1421
+ content:
1422
+ application/json:
1423
+ schema: {}
1424
+ security:
1425
+ - BasicAuth: []
1426
+ requestBody:
1427
+ required: true
1428
+ content:
1429
+ application/json:
1430
+ schema:
1431
+ $ref: "#/components/schemas/CreateScoreConfigRequest"
1432
+ x-openai-isConsequential: false
1433
+ get:
1434
+ description: Get all score configs
1435
+ operationId: scoreConfigs_get
1436
+ tags:
1437
+ - ScoreConfigs
1438
+ parameters:
1439
+ - name: page
1440
+ in: query
1441
+ description: Page number, starts at 1.
1442
+ required: false
1443
+ schema:
1444
+ type:
1445
+ - integer
1446
+ - "null"
1447
+ - name: limit
1448
+ in: query
1449
+ description: Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit
1450
+ required: false
1451
+ schema:
1452
+ type:
1453
+ - integer
1454
+ - "null"
1455
+ responses:
1456
+ "200":
1457
+ description: ""
1458
+ content:
1459
+ application/json:
1460
+ schema:
1461
+ $ref: "#/components/schemas/ScoreConfigs"
1462
+ "400":
1463
+ description: ""
1464
+ content:
1465
+ application/json:
1466
+ schema: {}
1467
+ "401":
1468
+ description: ""
1469
+ content:
1470
+ application/json:
1471
+ schema: {}
1472
+ "403":
1473
+ description: ""
1474
+ content:
1475
+ application/json:
1476
+ schema: {}
1477
+ "404":
1478
+ description: ""
1479
+ content:
1480
+ application/json:
1481
+ schema: {}
1482
+ "405":
1483
+ description: ""
1484
+ content:
1485
+ application/json:
1486
+ schema: {}
1487
+ security:
1488
+ - BasicAuth: []
1489
+ x-openai-isConsequential: false
1490
+ /api/public/score-configs/{configId}:
1491
+ get:
1492
+ description: Get a score config
1493
+ operationId: scoreConfigs_get-by-id
1494
+ tags:
1495
+ - ScoreConfigs
1496
+ parameters:
1497
+ - name: configId
1498
+ in: path
1499
+ description: The unique langfuse identifier of a score config
1500
+ required: true
1501
+ schema:
1502
+ type: string
1503
+ responses:
1504
+ "200":
1505
+ description: ""
1506
+ content:
1507
+ application/json:
1508
+ schema:
1509
+ $ref: "#/components/schemas/ScoreConfig"
1510
+ "400":
1511
+ description: ""
1512
+ content:
1513
+ application/json:
1514
+ schema: {}
1515
+ "401":
1516
+ description: ""
1517
+ content:
1518
+ application/json:
1519
+ schema: {}
1520
+ "403":
1521
+ description: ""
1522
+ content:
1523
+ application/json:
1524
+ schema: {}
1525
+ "404":
1526
+ description: ""
1527
+ content:
1528
+ application/json:
1529
+ schema: {}
1530
+ "405":
1531
+ description: ""
1532
+ content:
1533
+ application/json:
1534
+ schema: {}
1535
+ security:
1536
+ - BasicAuth: []
1537
+ x-openai-isConsequential: false
1538
+ /api/public/media:
1539
+ post:
1540
+ description: Get a presigned upload URL for a media record
1541
+ operationId: media_getUploadUrl
1542
+ tags:
1543
+ - Media
1544
+ parameters: []
1545
+ responses:
1546
+ "200":
1547
+ description: ""
1548
+ content:
1549
+ application/json:
1550
+ schema:
1551
+ $ref: "#/components/schemas/GetMediaUploadUrlResponse"
1552
+ "400":
1553
+ description: ""
1554
+ content:
1555
+ application/json:
1556
+ schema: {}
1557
+ "401":
1558
+ description: ""
1559
+ content:
1560
+ application/json:
1561
+ schema: {}
1562
+ "403":
1563
+ description: ""
1564
+ content:
1565
+ application/json:
1566
+ schema: {}
1567
+ "404":
1568
+ description: ""
1569
+ content:
1570
+ application/json:
1571
+ schema: {}
1572
+ "405":
1573
+ description: ""
1574
+ content:
1575
+ application/json:
1576
+ schema: {}
1577
+ security:
1578
+ - BasicAuth: []
1579
+ requestBody:
1580
+ required: true
1581
+ content:
1582
+ application/json:
1583
+ schema:
1584
+ $ref: "#/components/schemas/GetMediaUploadUrlRequest"
1585
+ x-openai-isConsequential: false
1586
+ /api/public/media/{mediaId}:
1587
+ get:
1588
+ description: Get a media record
1589
+ operationId: media_get
1590
+ tags:
1591
+ - Media
1592
+ parameters:
1593
+ - name: mediaId
1594
+ in: path
1595
+ description: The unique langfuse identifier of a media record
1596
+ required: true
1597
+ schema:
1598
+ type: string
1599
+ responses:
1600
+ "200":
1601
+ description: ""
1602
+ content:
1603
+ application/json:
1604
+ schema:
1605
+ $ref: "#/components/schemas/GetMediaResponse"
1606
+ "400":
1607
+ description: ""
1608
+ content:
1609
+ application/json:
1610
+ schema: {}
1611
+ "401":
1612
+ description: ""
1613
+ content:
1614
+ application/json:
1615
+ schema: {}
1616
+ "403":
1617
+ description: ""
1618
+ content:
1619
+ application/json:
1620
+ schema: {}
1621
+ "404":
1622
+ description: ""
1623
+ content:
1624
+ application/json:
1625
+ schema: {}
1626
+ "405":
1627
+ description: ""
1628
+ content:
1629
+ application/json:
1630
+ schema: {}
1631
+ security:
1632
+ - BasicAuth: []
1633
+ x-openai-isConsequential: false
1634
+ patch:
1635
+ description: Patch a media record
1636
+ operationId: media_patch
1637
+ tags:
1638
+ - Media
1639
+ parameters:
1640
+ - name: mediaId
1641
+ in: path
1642
+ description: The unique langfuse identifier of a media record
1643
+ required: true
1644
+ schema:
1645
+ type: string
1646
+ responses:
1647
+ "204":
1648
+ description: ""
1649
+ "400":
1650
+ description: ""
1651
+ content:
1652
+ application/json:
1653
+ schema: {}
1654
+ "401":
1655
+ description: ""
1656
+ content:
1657
+ application/json:
1658
+ schema: {}
1659
+ "403":
1660
+ description: ""
1661
+ content:
1662
+ application/json:
1663
+ schema: {}
1664
+ "404":
1665
+ description: ""
1666
+ content:
1667
+ application/json:
1668
+ schema: {}
1669
+ "405":
1670
+ description: ""
1671
+ content:
1672
+ application/json:
1673
+ schema: {}
1674
+ security:
1675
+ - BasicAuth: []
1676
+ requestBody:
1677
+ required: true
1678
+ content:
1679
+ application/json:
1680
+ schema:
1681
+ $ref: "#/components/schemas/PatchMediaBody"
1682
+ x-openai-isConsequential: false
1683
+ components:
1684
+ schemas:
1685
+ PaginatedDatasetItems:
1686
+ title: PaginatedDatasetItems
1687
+ type: object
1688
+ properties:
1689
+ data:
1690
+ type: array
1691
+ items:
1692
+ $ref: "#/components/schemas/DatasetItem"
1693
+ meta:
1694
+ $ref: "#/components/schemas/utilsMetaResponse"
1695
+ required:
1696
+ - data
1697
+ - meta
1698
+ DatasetItem:
1699
+ title: DatasetItem
1700
+ type: object
1701
+ properties:
1702
+ id:
1703
+ type: string
1704
+ status:
1705
+ $ref: "#/components/schemas/DatasetStatus"
1706
+ input:
1707
+ description: Input data for the dataset item
1708
+ expectedOutput:
1709
+ description: Expected output for the dataset item
1710
+ metadata:
1711
+ description: Metadata associated with the dataset item
1712
+ sourceTraceId:
1713
+ type:
1714
+ - string
1715
+ - "null"
1716
+ description: The trace ID that sourced this dataset item
1717
+ sourceObservationId:
1718
+ type:
1719
+ - string
1720
+ - "null"
1721
+ description: The observation ID that sourced this dataset item
1722
+ datasetId:
1723
+ type: string
1724
+ datasetName:
1725
+ type: string
1726
+ createdAt:
1727
+ type: string
1728
+ format: date-time
1729
+ updatedAt:
1730
+ type: string
1731
+ format: date-time
1732
+ mediaReferences:
1733
+ type: array
1734
+ items:
1735
+ $ref: "#/components/schemas/DatasetItemMediaReference"
1736
+ description: Resolved Langfuse media references found in input, expectedOutput, and metadata.
1737
+ required:
1738
+ - id
1739
+ - status
1740
+ - input
1741
+ - expectedOutput
1742
+ - metadata
1743
+ - sourceTraceId
1744
+ - sourceObservationId
1745
+ - datasetId
1746
+ - datasetName
1747
+ - createdAt
1748
+ - updatedAt
1749
+ - mediaReferences
1750
+ CreateCommentResponse:
1751
+ title: CreateCommentResponse
1752
+ type: object
1753
+ properties:
1754
+ id:
1755
+ type: string
1756
+ description: The id of the created object in Langfuse
1757
+ required:
1758
+ - id
1759
+ CreateCommentRequest:
1760
+ title: CreateCommentRequest
1761
+ type: object
1762
+ properties:
1763
+ projectId:
1764
+ type: string
1765
+ description: The id of the project to attach the comment to.
1766
+ objectType:
1767
+ type: string
1768
+ description: The type of the object to attach the comment to (trace, observation, session, prompt).
1769
+ objectId:
1770
+ type: string
1771
+ description: >-
1772
+ The id of the object to attach the comment to. If this does not reference a valid existing object, an error
1773
+ will be thrown.
1774
+ content:
1775
+ type: string
1776
+ description: The content of the comment. May include markdown. Currently limited to 5000 characters.
1777
+ authorUserId:
1778
+ type:
1779
+ - string
1780
+ - "null"
1781
+ description: >-
1782
+ The id of the user who created the comment. Must be a member of the organization that owns the project,
1783
+ otherwise an error will be thrown.
1784
+ required:
1785
+ - projectId
1786
+ - objectType
1787
+ - objectId
1788
+ - content
1789
+ GetCommentsResponse:
1790
+ title: GetCommentsResponse
1791
+ type: object
1792
+ properties:
1793
+ data:
1794
+ type: array
1795
+ items:
1796
+ $ref: "#/components/schemas/Comment"
1797
+ meta:
1798
+ $ref: "#/components/schemas/utilsMetaResponse"
1799
+ required:
1800
+ - data
1801
+ - meta
1802
+ ObservationLevel:
1803
+ title: ObservationLevel
1804
+ type: string
1805
+ enum:
1806
+ - DEBUG
1807
+ - DEFAULT
1808
+ - WARNING
1809
+ - ERROR
1810
+ ObservationsV2Response:
1811
+ title: ObservationsV2Response
1812
+ type: object
1813
+ description: |-
1814
+ Response containing observations with field-group-based filtering and cursor-based pagination.
1815
+
1816
+ The `data` array contains observation objects with only the requested field groups included.
1817
+ Use the `cursor` in `meta` to retrieve the next page of results.
1818
+ properties:
1819
+ data:
1820
+ type: array
1821
+ items:
1822
+ $ref: "#/components/schemas/ObservationV2"
1823
+ description: Array of observation objects. Fields included depend on the `fields` parameter in the request.
1824
+ meta:
1825
+ $ref: "#/components/schemas/ObservationsV2Meta"
1826
+ required:
1827
+ - data
1828
+ - meta
1829
+ OtelTraceResponse:
1830
+ title: OtelTraceResponse
1831
+ type: object
1832
+ description: Response from trace export request. Empty object indicates success.
1833
+ properties: {}
1834
+ OtelResourceSpan:
1835
+ title: OtelResourceSpan
1836
+ type: object
1837
+ description: Represents a collection of spans from a single resource as per OTLP specification
1838
+ properties:
1839
+ resource:
1840
+ description: Resource information
1841
+ anyOf:
1842
+ - $ref: "#/components/schemas/OtelResource"
1843
+ - type: "null"
1844
+ scopeSpans:
1845
+ type:
1846
+ - array
1847
+ - "null"
1848
+ items:
1849
+ $ref: "#/components/schemas/OtelScopeSpan"
1850
+ description: Array of scope spans
1851
+ PromptMetaListResponse:
1852
+ title: PromptMetaListResponse
1853
+ type: object
1854
+ properties:
1855
+ data:
1856
+ type: array
1857
+ items:
1858
+ $ref: "#/components/schemas/PromptMeta"
1859
+ meta:
1860
+ $ref: "#/components/schemas/utilsMetaResponse"
1861
+ required:
1862
+ - data
1863
+ - meta
1864
+ Prompt:
1865
+ title: Prompt
1866
+ oneOf:
1867
+ - type: object
1868
+ allOf:
1869
+ - type: object
1870
+ properties:
1871
+ type:
1872
+ type: string
1873
+ enum:
1874
+ - chat
1875
+ - $ref: "#/components/schemas/ChatPrompt"
1876
+ required:
1877
+ - type
1878
+ - type: object
1879
+ allOf:
1880
+ - type: object
1881
+ properties:
1882
+ type:
1883
+ type: string
1884
+ enum:
1885
+ - text
1886
+ - $ref: "#/components/schemas/TextPrompt"
1887
+ required:
1888
+ - type
1889
+ CreatePromptRequest:
1890
+ title: CreatePromptRequest
1891
+ oneOf:
1892
+ - $ref: "#/components/schemas/CreateChatPromptRequest"
1893
+ - $ref: "#/components/schemas/CreateTextPromptRequest"
1894
+ CreateScoreResponse:
1895
+ title: CreateScoreResponse
1896
+ type: object
1897
+ properties:
1898
+ id:
1899
+ type: string
1900
+ description: The id of the created object in Langfuse
1901
+ required:
1902
+ - id
1903
+ CreateScoreRequest:
1904
+ title: CreateScoreRequest
1905
+ type: object
1906
+ properties:
1907
+ id:
1908
+ type:
1909
+ - string
1910
+ - "null"
1911
+ traceId:
1912
+ type:
1913
+ - string
1914
+ - "null"
1915
+ sessionId:
1916
+ type:
1917
+ - string
1918
+ - "null"
1919
+ observationId:
1920
+ type:
1921
+ - string
1922
+ - "null"
1923
+ datasetRunId:
1924
+ type:
1925
+ - string
1926
+ - "null"
1927
+ name:
1928
+ type: string
1929
+ value:
1930
+ $ref: "#/components/schemas/CreateScoreValue"
1931
+ description: >-
1932
+ The value of the score. Must be passed as string for categorical and text scores, and numeric for boolean
1933
+ and numeric scores. Boolean score values must equal either 1 or 0 (true or false). Text score values must be
1934
+ between 1 and 500 characters.
1935
+ comment:
1936
+ type:
1937
+ - string
1938
+ - "null"
1939
+ metadata:
1940
+ type:
1941
+ - object
1942
+ - "null"
1943
+ additionalProperties: true
1944
+ environment:
1945
+ type:
1946
+ - string
1947
+ - "null"
1948
+ description: >-
1949
+ The environment of the score. Can be any lowercase alphanumeric string with hyphens and underscores that
1950
+ does not start with 'langfuse'.
1951
+ queueId:
1952
+ type:
1953
+ - string
1954
+ - "null"
1955
+ description: >-
1956
+ The annotation queue referenced by the score. Indicates if score was initially created while processing
1957
+ annotation queue.
1958
+ dataType:
1959
+ description: >-
1960
+ The data type of the score. When passing a configId this field is inferred. Otherwise, this field must be
1961
+ passed or will default to numeric.
1962
+ anyOf:
1963
+ - $ref: "#/components/schemas/ScoreDataType"
1964
+ - type: "null"
1965
+ configId:
1966
+ type:
1967
+ - string
1968
+ - "null"
1969
+ description: >-
1970
+ Reference a score config on a score. The unique langfuse identifier of a score config. When passing this
1971
+ field, the dataType and stringValue fields are automatically populated.
1972
+ source:
1973
+ description: >-
1974
+ The source of the score. Defaults to API. Set to ANNOTATION to prefill scores (e.g. from an LLM) for a human
1975
+ reviewer to verify in an annotation queue. When source is ANNOTATION, a configId is required unless dataType
1976
+ is CORRECTION. EVAL is reserved for internal evaluator outputs and is not accepted on this endpoint.
1977
+ anyOf:
1978
+ - $ref: "#/components/schemas/CreateScoreSource"
1979
+ - type: "null"
1980
+ required:
1981
+ - name
1982
+ - value
1983
+ GetScoresV3Response:
1984
+ title: GetScoresV3Response
1985
+ type: object
1986
+ properties:
1987
+ data:
1988
+ type: array
1989
+ items:
1990
+ $ref: "#/components/schemas/ScoreV3"
1991
+ meta:
1992
+ $ref: "#/components/schemas/GetScoresV3Meta"
1993
+ required:
1994
+ - data
1995
+ - meta
1996
+ ScoreConfig:
1997
+ title: ScoreConfig
1998
+ type: object
1999
+ description: Configuration for a score
2000
+ properties:
2001
+ id:
2002
+ type: string
2003
+ name:
2004
+ type: string
2005
+ createdAt:
2006
+ type: string
2007
+ format: date-time
2008
+ updatedAt:
2009
+ type: string
2010
+ format: date-time
2011
+ projectId:
2012
+ type: string
2013
+ dataType:
2014
+ $ref: "#/components/schemas/ScoreConfigDataType"
2015
+ isArchived:
2016
+ type: boolean
2017
+ description: Whether the score config is archived. Defaults to false
2018
+ minValue:
2019
+ type:
2020
+ - number
2021
+ - "null"
2022
+ format: double
2023
+ description: Sets minimum value for numerical scores. If not set, the minimum value defaults to -∞
2024
+ maxValue:
2025
+ type:
2026
+ - number
2027
+ - "null"
2028
+ format: double
2029
+ description: Sets maximum value for numerical scores. If not set, the maximum value defaults to +∞
2030
+ categories:
2031
+ type:
2032
+ - array
2033
+ - "null"
2034
+ items:
2035
+ $ref: "#/components/schemas/ConfigCategory"
2036
+ description: Configures custom categories for categorical scores
2037
+ description:
2038
+ type:
2039
+ - string
2040
+ - "null"
2041
+ description: Description of the score config
2042
+ required:
2043
+ - id
2044
+ - name
2045
+ - createdAt
2046
+ - updatedAt
2047
+ - projectId
2048
+ - dataType
2049
+ - isArchived
2050
+ CreateScoreConfigRequest:
2051
+ title: CreateScoreConfigRequest
2052
+ type: object
2053
+ properties:
2054
+ name:
2055
+ type: string
2056
+ description: >-
2057
+ Name of the score config. Max 35 characters. Only letters, numbers, underscores, spaces, periods,
2058
+ parentheses, and hyphens are allowed.
2059
+ dataType:
2060
+ $ref: "#/components/schemas/ScoreConfigDataType"
2061
+ categories:
2062
+ type:
2063
+ - array
2064
+ - "null"
2065
+ items:
2066
+ $ref: "#/components/schemas/ConfigCategory"
2067
+ description: >-
2068
+ Configure custom categories for categorical scores. Pass a list of objects with `label` and `value`
2069
+ properties. Categories are autogenerated for boolean configs and cannot be passed
2070
+ minValue:
2071
+ type:
2072
+ - number
2073
+ - "null"
2074
+ format: double
2075
+ description: Configure a minimum value for numerical scores. If not set, the minimum value defaults to -∞
2076
+ maxValue:
2077
+ type:
2078
+ - number
2079
+ - "null"
2080
+ format: double
2081
+ description: Configure a maximum value for numerical scores. If not set, the maximum value defaults to +∞
2082
+ description:
2083
+ type:
2084
+ - string
2085
+ - "null"
2086
+ description: >-
2087
+ Description is shown across the Langfuse UI and can be used to e.g. explain the config categories in detail,
2088
+ why a numeric range was set, or provide additional context on config name or usage
2089
+ required:
2090
+ - name
2091
+ - dataType
2092
+ ScoreConfigs:
2093
+ title: ScoreConfigs
2094
+ type: object
2095
+ properties:
2096
+ data:
2097
+ type: array
2098
+ items:
2099
+ $ref: "#/components/schemas/ScoreConfig"
2100
+ meta:
2101
+ $ref: "#/components/schemas/utilsMetaResponse"
2102
+ required:
2103
+ - data
2104
+ - meta
2105
+ GetMediaUploadUrlResponse:
2106
+ title: GetMediaUploadUrlResponse
2107
+ type: object
2108
+ properties:
2109
+ uploadUrl:
2110
+ type:
2111
+ - string
2112
+ - "null"
2113
+ description: The presigned upload URL. If the asset is already uploaded, this will be null
2114
+ mediaId:
2115
+ type: string
2116
+ description: The unique langfuse identifier of a media record
2117
+ required:
2118
+ - mediaId
2119
+ GetMediaUploadUrlRequest:
2120
+ title: GetMediaUploadUrlRequest
2121
+ type: object
2122
+ description: >-
2123
+ Request a presigned media upload URL. Provide exactly one context: a trace (traceId, optionally observationId)
2124
+ or a dataset item (datasetId + datasetItemId). field is required and must match the chosen context.
2125
+ properties:
2126
+ traceId:
2127
+ type:
2128
+ - string
2129
+ - "null"
2130
+ description: The trace the media is associated with. Null for dataset item media uploads.
2131
+ observationId:
2132
+ type:
2133
+ - string
2134
+ - "null"
2135
+ description: >-
2136
+ The observation ID associated with the media record. If the media record is associated directly with a
2137
+ trace, this will be null.
2138
+ datasetId:
2139
+ type:
2140
+ - string
2141
+ - "null"
2142
+ description: The dataset the media belongs to. Null for trace/observation media uploads.
2143
+ datasetItemId:
2144
+ type:
2145
+ - string
2146
+ - "null"
2147
+ description: >-
2148
+ The dataset item the media is associated with (need not exist yet). Null for trace/observation media
2149
+ uploads.
2150
+ contentType:
2151
+ $ref: "#/components/schemas/MediaContentType"
2152
+ contentLength:
2153
+ type: integer
2154
+ description: The size of the media record in bytes
2155
+ sha256Hash:
2156
+ type: string
2157
+ description: The SHA-256 hash of the media record
2158
+ field:
2159
+ type: string
2160
+ description: >-
2161
+ The item field the media is in: `input`/`output`/`metadata` (trace) or `input`/`expectedOutput`/`metadata`
2162
+ (dataset item).
2163
+ required:
2164
+ - contentType
2165
+ - contentLength
2166
+ - sha256Hash
2167
+ - field
2168
+ GetMediaResponse:
2169
+ title: GetMediaResponse
2170
+ type: object
2171
+ properties:
2172
+ mediaId:
2173
+ type: string
2174
+ description: The unique langfuse identifier of a media record
2175
+ contentType:
2176
+ type: string
2177
+ description: The MIME type of the media record
2178
+ contentLength:
2179
+ type: integer
2180
+ description: The size of the media record in bytes
2181
+ uploadedAt:
2182
+ type: string
2183
+ format: date-time
2184
+ description: The date and time when the media record was uploaded
2185
+ url:
2186
+ type: string
2187
+ description: The download URL of the media record
2188
+ urlExpiry:
2189
+ type: string
2190
+ description: The expiry date and time of the media record download URL
2191
+ required:
2192
+ - mediaId
2193
+ - contentType
2194
+ - contentLength
2195
+ - uploadedAt
2196
+ - url
2197
+ - urlExpiry
2198
+ PatchMediaBody:
2199
+ title: PatchMediaBody
2200
+ type: object
2201
+ properties:
2202
+ uploadedAt:
2203
+ type: string
2204
+ format: date-time
2205
+ description: The date and time when the media record was uploaded
2206
+ uploadHttpStatus:
2207
+ type: integer
2208
+ description: The HTTP status code of the upload
2209
+ uploadHttpError:
2210
+ type:
2211
+ - string
2212
+ - "null"
2213
+ description: The HTTP error message of the upload
2214
+ uploadTimeMs:
2215
+ type:
2216
+ - integer
2217
+ - "null"
2218
+ description: The time in milliseconds it took to upload the media record
2219
+ required:
2220
+ - uploadedAt
2221
+ - uploadHttpStatus
2222
+ utilsMetaResponse:
2223
+ title: utilsMetaResponse
2224
+ type: object
2225
+ properties:
2226
+ page:
2227
+ type: integer
2228
+ description: current page number
2229
+ limit:
2230
+ type: integer
2231
+ description: number of items per page
2232
+ totalItems:
2233
+ type: integer
2234
+ description: number of total items given the current filters/selection (if any)
2235
+ totalPages:
2236
+ type: integer
2237
+ description: number of total pages given the current limit
2238
+ required:
2239
+ - page
2240
+ - limit
2241
+ - totalItems
2242
+ - totalPages
2243
+ DatasetStatus:
2244
+ title: DatasetStatus
2245
+ type: string
2246
+ enum:
2247
+ - ACTIVE
2248
+ - ARCHIVED
2249
+ DatasetItemMediaReference:
2250
+ title: DatasetItemMediaReference
2251
+ type: object
2252
+ properties:
2253
+ field:
2254
+ $ref: "#/components/schemas/DatasetItemMediaReferenceField"
2255
+ description: The dataset item field containing the reference
2256
+ referenceString:
2257
+ type: string
2258
+ description: The Langfuse media reference string, e.g. `@@@langfuseMedia:type=image/png|id=...|source=bytes@@@`
2259
+ jsonPath:
2260
+ type: string
2261
+ description: JSONPath of the string holding the reference within the field, e.g. `$['image']`
2262
+ media:
2263
+ $ref: "#/components/schemas/DatasetItemMediaReferenceMedia"
2264
+ description: The resolved media record.
2265
+ required:
2266
+ - field
2267
+ - referenceString
2268
+ - jsonPath
2269
+ - media
2270
+ Comment:
2271
+ title: Comment
2272
+ type: object
2273
+ properties:
2274
+ id:
2275
+ type: string
2276
+ projectId:
2277
+ type: string
2278
+ createdAt:
2279
+ type: string
2280
+ format: date-time
2281
+ updatedAt:
2282
+ type: string
2283
+ format: date-time
2284
+ objectType:
2285
+ $ref: "#/components/schemas/CommentObjectType"
2286
+ objectId:
2287
+ type: string
2288
+ content:
2289
+ type: string
2290
+ authorUserId:
2291
+ type:
2292
+ - string
2293
+ - "null"
2294
+ description: The user ID of the comment author
2295
+ required:
2296
+ - id
2297
+ - projectId
2298
+ - createdAt
2299
+ - updatedAt
2300
+ - objectType
2301
+ - objectId
2302
+ - content
2303
+ ObservationV2:
2304
+ title: ObservationV2
2305
+ type: object
2306
+ description: |-
2307
+ An observation from the v2 API with field-group-based selection.
2308
+ Core fields are always present. Other fields are included only when their field group is requested.
2309
+ properties:
2310
+ id:
2311
+ type: string
2312
+ description: The unique identifier of the observation
2313
+ traceId:
2314
+ type:
2315
+ - string
2316
+ - "null"
2317
+ description: The trace ID associated with the observation
2318
+ startTime:
2319
+ type: string
2320
+ format: date-time
2321
+ description: The start time of the observation
2322
+ endTime:
2323
+ type:
2324
+ - string
2325
+ - "null"
2326
+ format: date-time
2327
+ description: The end time of the observation
2328
+ projectId:
2329
+ type: string
2330
+ description: The project ID this observation belongs to
2331
+ parentObservationId:
2332
+ type:
2333
+ - string
2334
+ - "null"
2335
+ description: |-
2336
+ The physical parent observation ID, if present.
2337
+ Observations marked as app roots by the SDK may retain a non-null parent ID.
2338
+ type:
2339
+ type: string
2340
+ description: The type of the observation (e.g. GENERATION, SPAN, EVENT)
2341
+ isRootObservation:
2342
+ type:
2343
+ - boolean
2344
+ - "null"
2345
+ description: |-
2346
+ Whether this observation is a logical root.
2347
+ This is true for observations without a physical parent and observations marked as app roots by the SDK.
2348
+ name:
2349
+ type:
2350
+ - string
2351
+ - "null"
2352
+ description: The name of the observation
2353
+ level:
2354
+ description: The level of the observation
2355
+ anyOf:
2356
+ - $ref: "#/components/schemas/ObservationLevel"
2357
+ - type: "null"
2358
+ statusMessage:
2359
+ type:
2360
+ - string
2361
+ - "null"
2362
+ description: The status message of the observation
2363
+ version:
2364
+ type:
2365
+ - string
2366
+ - "null"
2367
+ description: The version of the observation
2368
+ environment:
2369
+ type:
2370
+ - string
2371
+ - "null"
2372
+ description: The environment from which this observation originated
2373
+ bookmarked:
2374
+ type:
2375
+ - boolean
2376
+ - "null"
2377
+ description: Whether the observation is bookmarked
2378
+ public:
2379
+ type:
2380
+ - boolean
2381
+ - "null"
2382
+ description: Whether the observation is public
2383
+ userId:
2384
+ type:
2385
+ - string
2386
+ - "null"
2387
+ description: The user ID associated with the observation
2388
+ sessionId:
2389
+ type:
2390
+ - string
2391
+ - "null"
2392
+ description: The session ID associated with the observation
2393
+ completionStartTime:
2394
+ type:
2395
+ - string
2396
+ - "null"
2397
+ format: date-time
2398
+ description: The completion start time of the observation
2399
+ createdAt:
2400
+ type:
2401
+ - string
2402
+ - "null"
2403
+ format: date-time
2404
+ description: The creation timestamp of the observation
2405
+ updatedAt:
2406
+ type:
2407
+ - string
2408
+ - "null"
2409
+ format: date-time
2410
+ description: The last update timestamp of the observation
2411
+ input:
2412
+ description: The input data of the observation
2413
+ output:
2414
+ description: The output data of the observation
2415
+ metadata:
2416
+ description: Additional metadata of the observation
2417
+ providedModelName:
2418
+ type:
2419
+ - string
2420
+ - "null"
2421
+ description: The model name as provided by the user
2422
+ internalModelId:
2423
+ type:
2424
+ - string
2425
+ - "null"
2426
+ description: The internal model ID matched by Langfuse
2427
+ modelParameters:
2428
+ description: The parameters of the model used for the observation
2429
+ usageDetails:
2430
+ type:
2431
+ - object
2432
+ - "null"
2433
+ additionalProperties:
2434
+ type: integer
2435
+ description: The usage details of the observation. Key is the usage metric name, value is the number of units consumed.
2436
+ costDetails:
2437
+ type:
2438
+ - object
2439
+ - "null"
2440
+ additionalProperties:
2441
+ type: number
2442
+ format: double
2443
+ description: The cost details of the observation. Key is the cost metric name, value is the cost in USD.
2444
+ totalCost:
2445
+ type:
2446
+ - number
2447
+ - "null"
2448
+ format: double
2449
+ description: The total cost of the observation in USD
2450
+ usagePricingTierName:
2451
+ type:
2452
+ - string
2453
+ - "null"
2454
+ description: The name of the pricing tier applied to this observation's usage costs
2455
+ promptId:
2456
+ type:
2457
+ - string
2458
+ - "null"
2459
+ description: The prompt ID associated with the observation
2460
+ promptName:
2461
+ type:
2462
+ - string
2463
+ - "null"
2464
+ description: The prompt name associated with the observation
2465
+ promptVersion:
2466
+ type:
2467
+ - integer
2468
+ - "null"
2469
+ description: The prompt version associated with the observation
2470
+ latency:
2471
+ type:
2472
+ - number
2473
+ - "null"
2474
+ format: double
2475
+ description: The latency in seconds
2476
+ timeToFirstToken:
2477
+ type:
2478
+ - number
2479
+ - "null"
2480
+ format: double
2481
+ description: The time to first token in seconds
2482
+ modelId:
2483
+ type:
2484
+ - string
2485
+ - "null"
2486
+ description: The matched model ID. Null when the `model` field group is not requested.
2487
+ inputPrice:
2488
+ type:
2489
+ - string
2490
+ - "null"
2491
+ description: >-
2492
+ The input token price (USD per unit) from the matched model, serialized as a decimal string (e.g. "0.0001").
2493
+ Null when the `model` field group is not requested.
2494
+ outputPrice:
2495
+ type:
2496
+ - string
2497
+ - "null"
2498
+ description: >-
2499
+ The output token price (USD per unit) from the matched model, serialized as a decimal string (e.g.
2500
+ "0.0001"). Null when the `model` field group is not requested.
2501
+ totalPrice:
2502
+ type:
2503
+ - string
2504
+ - "null"
2505
+ description: >-
2506
+ The total token price (USD per unit) from the matched model, serialized as a decimal string (e.g. "0.0001").
2507
+ Null when the `model` field group is not requested.
2508
+ traceName:
2509
+ type:
2510
+ - string
2511
+ - "null"
2512
+ description: The name of the parent trace
2513
+ tags:
2514
+ type:
2515
+ - array
2516
+ - "null"
2517
+ items:
2518
+ type: string
2519
+ description: Tags from the parent trace (denormalized onto the observation)
2520
+ release:
2521
+ type:
2522
+ - string
2523
+ - "null"
2524
+ description: The release version of the parent trace
2525
+ required:
2526
+ - id
2527
+ - traceId
2528
+ - startTime
2529
+ - endTime
2530
+ - projectId
2531
+ - parentObservationId
2532
+ - type
2533
+ - modelId
2534
+ - inputPrice
2535
+ - outputPrice
2536
+ - totalPrice
2537
+ ObservationsV2Meta:
2538
+ title: ObservationsV2Meta
2539
+ type: object
2540
+ description: Metadata for cursor-based pagination
2541
+ properties:
2542
+ cursor:
2543
+ type:
2544
+ - string
2545
+ - "null"
2546
+ description: Base64-encoded cursor to use for retrieving the next page. If not present, there are no more results.
2547
+ OtelResource:
2548
+ title: OtelResource
2549
+ type: object
2550
+ description: Resource attributes identifying the source of telemetry
2551
+ properties:
2552
+ attributes:
2553
+ type:
2554
+ - array
2555
+ - "null"
2556
+ items:
2557
+ $ref: "#/components/schemas/OtelAttribute"
2558
+ description: Resource attributes like service.name, service.version, etc.
2559
+ OtelScopeSpan:
2560
+ title: OtelScopeSpan
2561
+ type: object
2562
+ description: Collection of spans from a single instrumentation scope
2563
+ properties:
2564
+ scope:
2565
+ description: Instrumentation scope information
2566
+ anyOf:
2567
+ - $ref: "#/components/schemas/OtelScope"
2568
+ - type: "null"
2569
+ spans:
2570
+ type:
2571
+ - array
2572
+ - "null"
2573
+ items:
2574
+ $ref: "#/components/schemas/OtelSpan"
2575
+ description: Array of spans
2576
+ PromptMeta:
2577
+ title: PromptMeta
2578
+ type: object
2579
+ properties:
2580
+ name:
2581
+ type: string
2582
+ type:
2583
+ $ref: "#/components/schemas/PromptType"
2584
+ description: Indicates whether the prompt is a text or chat prompt.
2585
+ versions:
2586
+ type: array
2587
+ items:
2588
+ type: integer
2589
+ labels:
2590
+ type: array
2591
+ items:
2592
+ type: string
2593
+ tags:
2594
+ type: array
2595
+ items:
2596
+ type: string
2597
+ lastUpdatedAt:
2598
+ type: string
2599
+ format: date-time
2600
+ lastConfig:
2601
+ description: Config object of the most recent prompt version that matches the filters (if any are provided)
2602
+ required:
2603
+ - name
2604
+ - type
2605
+ - versions
2606
+ - labels
2607
+ - tags
2608
+ - lastUpdatedAt
2609
+ - lastConfig
2610
+ ChatPrompt:
2611
+ title: ChatPrompt
2612
+ type: object
2613
+ properties:
2614
+ prompt:
2615
+ type: array
2616
+ items:
2617
+ $ref: "#/components/schemas/ChatMessageWithPlaceholders"
2618
+ required:
2619
+ - prompt
2620
+ allOf:
2621
+ - $ref: "#/components/schemas/BasePrompt"
2622
+ TextPrompt:
2623
+ title: TextPrompt
2624
+ type: object
2625
+ properties:
2626
+ prompt:
2627
+ type: string
2628
+ required:
2629
+ - prompt
2630
+ allOf:
2631
+ - $ref: "#/components/schemas/BasePrompt"
2632
+ CreateChatPromptRequest:
2633
+ title: CreateChatPromptRequest
2634
+ type: object
2635
+ properties:
2636
+ name:
2637
+ type: string
2638
+ prompt:
2639
+ type: array
2640
+ items:
2641
+ $ref: "#/components/schemas/ChatMessageWithPlaceholders"
2642
+ config: {}
2643
+ type:
2644
+ $ref: "#/components/schemas/CreateChatPromptType"
2645
+ labels:
2646
+ type:
2647
+ - array
2648
+ - "null"
2649
+ items:
2650
+ type: string
2651
+ description: List of deployment labels of this prompt version.
2652
+ tags:
2653
+ type:
2654
+ - array
2655
+ - "null"
2656
+ items:
2657
+ type: string
2658
+ description: List of tags to apply to all versions of this prompt.
2659
+ commitMessage:
2660
+ type:
2661
+ - string
2662
+ - "null"
2663
+ description: Commit message for this prompt version.
2664
+ required:
2665
+ - name
2666
+ - prompt
2667
+ - type
2668
+ CreateTextPromptRequest:
2669
+ title: CreateTextPromptRequest
2670
+ type: object
2671
+ properties:
2672
+ name:
2673
+ type: string
2674
+ prompt:
2675
+ type: string
2676
+ config: {}
2677
+ type:
2678
+ anyOf:
2679
+ - $ref: "#/components/schemas/CreateTextPromptType"
2680
+ - type: "null"
2681
+ labels:
2682
+ type:
2683
+ - array
2684
+ - "null"
2685
+ items:
2686
+ type: string
2687
+ description: List of deployment labels of this prompt version.
2688
+ tags:
2689
+ type:
2690
+ - array
2691
+ - "null"
2692
+ items:
2693
+ type: string
2694
+ description: List of tags to apply to all versions of this prompt.
2695
+ commitMessage:
2696
+ type:
2697
+ - string
2698
+ - "null"
2699
+ description: Commit message for this prompt version.
2700
+ required:
2701
+ - name
2702
+ - prompt
2703
+ CreateScoreValue:
2704
+ title: CreateScoreValue
2705
+ oneOf:
2706
+ - type: number
2707
+ format: double
2708
+ - type: string
2709
+ description: >-
2710
+ The value of the score. Must be passed as string for categorical and text scores, and numeric for boolean and
2711
+ numeric scores
2712
+ ScoreDataType:
2713
+ title: ScoreDataType
2714
+ type: string
2715
+ enum:
2716
+ - NUMERIC
2717
+ - BOOLEAN
2718
+ - CATEGORICAL
2719
+ - CORRECTION
2720
+ - TEXT
2721
+ CreateScoreSource:
2722
+ title: CreateScoreSource
2723
+ type: string
2724
+ enum:
2725
+ - API
2726
+ - ANNOTATION
2727
+ description: |-
2728
+ Source values accepted when creating a score via the public REST API.
2729
+ EVAL is reserved for internal evaluator outputs and is intentionally not
2730
+ exposed here — use commons.ScoreSource when reading scores.
2731
+ ScoreV3:
2732
+ title: ScoreV3
2733
+ oneOf:
2734
+ - type: object
2735
+ allOf:
2736
+ - type: object
2737
+ properties:
2738
+ dataType:
2739
+ type: string
2740
+ enum:
2741
+ - NUMERIC
2742
+ - $ref: "#/components/schemas/NumericScoreV3"
2743
+ required:
2744
+ - dataType
2745
+ - type: object
2746
+ allOf:
2747
+ - type: object
2748
+ properties:
2749
+ dataType:
2750
+ type: string
2751
+ enum:
2752
+ - BOOLEAN
2753
+ - $ref: "#/components/schemas/BooleanScoreV3"
2754
+ required:
2755
+ - dataType
2756
+ - type: object
2757
+ allOf:
2758
+ - type: object
2759
+ properties:
2760
+ dataType:
2761
+ type: string
2762
+ enum:
2763
+ - CATEGORICAL
2764
+ - $ref: "#/components/schemas/CategoricalScoreV3"
2765
+ required:
2766
+ - dataType
2767
+ - type: object
2768
+ allOf:
2769
+ - type: object
2770
+ properties:
2771
+ dataType:
2772
+ type: string
2773
+ enum:
2774
+ - TEXT
2775
+ - $ref: "#/components/schemas/TextScoreV3"
2776
+ required:
2777
+ - dataType
2778
+ - type: object
2779
+ allOf:
2780
+ - type: object
2781
+ properties:
2782
+ dataType:
2783
+ type: string
2784
+ enum:
2785
+ - CORRECTION
2786
+ - $ref: "#/components/schemas/CorrectionScoreV3"
2787
+ required:
2788
+ - dataType
2789
+ GetScoresV3Meta:
2790
+ title: GetScoresV3Meta
2791
+ type: object
2792
+ properties:
2793
+ limit:
2794
+ type: integer
2795
+ cursor:
2796
+ type:
2797
+ - string
2798
+ - "null"
2799
+ description: URL-safe base64 (base64url) cursor for the next page. Absent when there are no more results.
2800
+ required:
2801
+ - limit
2802
+ ScoreConfigDataType:
2803
+ title: ScoreConfigDataType
2804
+ type: string
2805
+ enum:
2806
+ - NUMERIC
2807
+ - BOOLEAN
2808
+ - CATEGORICAL
2809
+ - TEXT
2810
+ ConfigCategory:
2811
+ title: ConfigCategory
2812
+ type: object
2813
+ properties:
2814
+ value:
2815
+ type: number
2816
+ format: double
2817
+ label:
2818
+ type: string
2819
+ required:
2820
+ - value
2821
+ - label
2822
+ MediaContentType:
2823
+ title: MediaContentType
2824
+ type: string
2825
+ enum:
2826
+ - image/png
2827
+ - image/jpeg
2828
+ - image/jpg
2829
+ - image/webp
2830
+ - image/gif
2831
+ - image/svg+xml
2832
+ - image/tiff
2833
+ - image/bmp
2834
+ - image/avif
2835
+ - image/heic
2836
+ - audio/mpeg
2837
+ - audio/mp3
2838
+ - audio/wav
2839
+ - audio/ogg
2840
+ - audio/oga
2841
+ - audio/aac
2842
+ - audio/mp4
2843
+ - audio/flac
2844
+ - audio/opus
2845
+ - audio/webm
2846
+ - video/mp4
2847
+ - video/webm
2848
+ - video/ogg
2849
+ - video/mpeg
2850
+ - video/quicktime
2851
+ - video/x-msvideo
2852
+ - video/x-matroska
2853
+ - text/plain
2854
+ - text/html
2855
+ - text/css
2856
+ - text/csv
2857
+ - text/markdown
2858
+ - text/x-python
2859
+ - application/javascript
2860
+ - text/x-typescript
2861
+ - application/x-yaml
2862
+ - application/pdf
2863
+ - application/msword
2864
+ - application/vnd.ms-excel
2865
+ - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
2866
+ - application/zip
2867
+ - application/json
2868
+ - application/xml
2869
+ - application/octet-stream
2870
+ - application/vnd.openxmlformats-officedocument.wordprocessingml.document
2871
+ - application/vnd.openxmlformats-officedocument.presentationml.presentation
2872
+ - application/rtf
2873
+ - application/x-ndjson
2874
+ - application/vnd.apache.parquet
2875
+ - application/gzip
2876
+ - application/x-tar
2877
+ - application/x-7z-compressed
2878
+ description: The MIME type of the media record
2879
+ DatasetItemMediaReferenceField:
2880
+ title: DatasetItemMediaReferenceField
2881
+ type: string
2882
+ enum:
2883
+ - input
2884
+ - expectedOutput
2885
+ - metadata
2886
+ DatasetItemMediaReferenceMedia:
2887
+ title: DatasetItemMediaReferenceMedia
2888
+ type: object
2889
+ properties:
2890
+ mediaId:
2891
+ type: string
2892
+ description: The unique langfuse identifier of the media record
2893
+ contentType:
2894
+ type: string
2895
+ description: The MIME type of the media record
2896
+ contentLength:
2897
+ type: integer
2898
+ description: The size of the media record in bytes
2899
+ url:
2900
+ type: string
2901
+ description: The signed download URL of the media record
2902
+ urlExpiry:
2903
+ type: string
2904
+ description: The expiry date and time of the download URL
2905
+ required:
2906
+ - mediaId
2907
+ - contentType
2908
+ - contentLength
2909
+ - url
2910
+ - urlExpiry
2911
+ CommentObjectType:
2912
+ title: CommentObjectType
2913
+ type: string
2914
+ enum:
2915
+ - TRACE
2916
+ - OBSERVATION
2917
+ - SESSION
2918
+ - PROMPT
2919
+ OtelAttribute:
2920
+ title: OtelAttribute
2921
+ type: object
2922
+ description: Key-value attribute pair for resources, scopes, or spans
2923
+ properties:
2924
+ key:
2925
+ type:
2926
+ - string
2927
+ - "null"
2928
+ description: Attribute key (e.g., "service.name", "langfuse.observation.type")
2929
+ value:
2930
+ description: Attribute value
2931
+ anyOf:
2932
+ - $ref: "#/components/schemas/OtelAttributeValue"
2933
+ - type: "null"
2934
+ OtelScope:
2935
+ title: OtelScope
2936
+ type: object
2937
+ description: Instrumentation scope information
2938
+ properties:
2939
+ name:
2940
+ type:
2941
+ - string
2942
+ - "null"
2943
+ description: Instrumentation scope name
2944
+ version:
2945
+ type:
2946
+ - string
2947
+ - "null"
2948
+ description: Instrumentation scope version
2949
+ attributes:
2950
+ type:
2951
+ - array
2952
+ - "null"
2953
+ items:
2954
+ $ref: "#/components/schemas/OtelAttribute"
2955
+ description: Additional scope attributes
2956
+ OtelSpan:
2957
+ title: OtelSpan
2958
+ type: object
2959
+ description: Individual span representing a unit of work or operation
2960
+ properties:
2961
+ traceId:
2962
+ description: Trace ID (16 bytes, hex-encoded string in JSON or Buffer in binary)
2963
+ spanId:
2964
+ description: Span ID (8 bytes, hex-encoded string in JSON or Buffer in binary)
2965
+ parentSpanId:
2966
+ description: Parent span ID if this is a child span
2967
+ name:
2968
+ type:
2969
+ - string
2970
+ - "null"
2971
+ description: Span name describing the operation
2972
+ kind:
2973
+ type:
2974
+ - integer
2975
+ - "null"
2976
+ description: Span kind (1=INTERNAL, 2=SERVER, 3=CLIENT, 4=PRODUCER, 5=CONSUMER)
2977
+ startTimeUnixNano:
2978
+ description: Start time in nanoseconds since Unix epoch
2979
+ endTimeUnixNano:
2980
+ description: End time in nanoseconds since Unix epoch
2981
+ attributes:
2982
+ type:
2983
+ - array
2984
+ - "null"
2985
+ items:
2986
+ $ref: "#/components/schemas/OtelAttribute"
2987
+ description: Span attributes including Langfuse-specific attributes (langfuse.observation.*)
2988
+ status:
2989
+ description: Span status object
2990
+ PromptType:
2991
+ title: PromptType
2992
+ type: string
2993
+ enum:
2994
+ - chat
2995
+ - text
2996
+ ChatMessageWithPlaceholders:
2997
+ title: ChatMessageWithPlaceholders
2998
+ oneOf:
2999
+ - $ref: "#/components/schemas/ChatMessage"
3000
+ - $ref: "#/components/schemas/PlaceholderMessage"
3001
+ BasePrompt:
3002
+ title: BasePrompt
3003
+ type: object
3004
+ properties:
3005
+ name:
3006
+ type: string
3007
+ version:
3008
+ type: integer
3009
+ config: {}
3010
+ labels:
3011
+ type: array
3012
+ items:
3013
+ type: string
3014
+ description: List of deployment labels of this prompt version.
3015
+ tags:
3016
+ type: array
3017
+ items:
3018
+ type: string
3019
+ description: List of tags. Used to filter via UI and API. The same across versions of a prompt.
3020
+ commitMessage:
3021
+ type:
3022
+ - string
3023
+ - "null"
3024
+ description: Commit message for this prompt version.
3025
+ resolutionGraph:
3026
+ type:
3027
+ - object
3028
+ - "null"
3029
+ additionalProperties: true
3030
+ description: >-
3031
+ The dependency resolution graph for the current prompt. Null if the prompt has no dependencies or if
3032
+ `resolve=false` was used.
3033
+ required:
3034
+ - name
3035
+ - version
3036
+ - config
3037
+ - labels
3038
+ - tags
3039
+ CreateChatPromptType:
3040
+ title: CreateChatPromptType
3041
+ type: string
3042
+ enum:
3043
+ - chat
3044
+ CreateTextPromptType:
3045
+ title: CreateTextPromptType
3046
+ type: string
3047
+ enum:
3048
+ - text
3049
+ NumericScoreV3:
3050
+ title: NumericScoreV3
3051
+ type: object
3052
+ properties:
3053
+ value:
3054
+ type: number
3055
+ format: double
3056
+ description: The numeric value of the score.
3057
+ required:
3058
+ - value
3059
+ allOf:
3060
+ - $ref: "#/components/schemas/BaseScoreV3"
3061
+ BooleanScoreV3:
3062
+ title: BooleanScoreV3
3063
+ type: object
3064
+ properties:
3065
+ value:
3066
+ type: boolean
3067
+ description: The boolean value of the score.
3068
+ required:
3069
+ - value
3070
+ allOf:
3071
+ - $ref: "#/components/schemas/BaseScoreV3"
3072
+ CategoricalScoreV3:
3073
+ title: CategoricalScoreV3
3074
+ type: object
3075
+ properties:
3076
+ value:
3077
+ type: string
3078
+ description: The string category value of the score.
3079
+ required:
3080
+ - value
3081
+ allOf:
3082
+ - $ref: "#/components/schemas/BaseScoreV3"
3083
+ TextScoreV3:
3084
+ title: TextScoreV3
3085
+ type: object
3086
+ properties:
3087
+ value:
3088
+ type: string
3089
+ description: The text content of the score.
3090
+ required:
3091
+ - value
3092
+ allOf:
3093
+ - $ref: "#/components/schemas/BaseScoreV3"
3094
+ CorrectionScoreV3:
3095
+ title: CorrectionScoreV3
3096
+ type: object
3097
+ properties:
3098
+ value:
3099
+ type: string
3100
+ description: The correction content of the score. Empty string if not set.
3101
+ required:
3102
+ - value
3103
+ allOf:
3104
+ - $ref: "#/components/schemas/BaseScoreV3"
3105
+ OtelAttributeValue:
3106
+ title: OtelAttributeValue
3107
+ type: object
3108
+ description: Attribute value wrapper supporting different value types
3109
+ properties:
3110
+ stringValue:
3111
+ type:
3112
+ - string
3113
+ - "null"
3114
+ description: String value
3115
+ intValue:
3116
+ type:
3117
+ - integer
3118
+ - "null"
3119
+ description: Integer value
3120
+ doubleValue:
3121
+ type:
3122
+ - number
3123
+ - "null"
3124
+ format: double
3125
+ description: Double value
3126
+ boolValue:
3127
+ type:
3128
+ - boolean
3129
+ - "null"
3130
+ description: Boolean value
3131
+ ChatMessage:
3132
+ title: ChatMessage
3133
+ type: object
3134
+ properties:
3135
+ role:
3136
+ type: string
3137
+ content:
3138
+ type: string
3139
+ type:
3140
+ anyOf:
3141
+ - $ref: "#/components/schemas/ChatMessageType"
3142
+ - type: "null"
3143
+ required:
3144
+ - role
3145
+ - content
3146
+ PlaceholderMessage:
3147
+ title: PlaceholderMessage
3148
+ type: object
3149
+ properties:
3150
+ name:
3151
+ type: string
3152
+ type:
3153
+ anyOf:
3154
+ - $ref: "#/components/schemas/PlaceholderMessageType"
3155
+ - type: "null"
3156
+ required:
3157
+ - name
3158
+ BaseScoreV3:
3159
+ title: BaseScoreV3
3160
+ type: object
3161
+ properties:
3162
+ id:
3163
+ type: string
3164
+ projectId:
3165
+ type: string
3166
+ name:
3167
+ type: string
3168
+ source:
3169
+ $ref: "#/components/schemas/ScoreSource"
3170
+ timestamp:
3171
+ type: string
3172
+ format: date-time
3173
+ environment:
3174
+ type: string
3175
+ description: The environment from which this score originated.
3176
+ createdAt:
3177
+ type: string
3178
+ format: date-time
3179
+ updatedAt:
3180
+ type: string
3181
+ format: date-time
3182
+ comment:
3183
+ type:
3184
+ - string
3185
+ - "null"
3186
+ description: Optional comment attached to the score. Present when "details" is included in the fields parameter.
3187
+ configId:
3188
+ type:
3189
+ - string
3190
+ - "null"
3191
+ description: >-
3192
+ The score config ID, if this score was created from a config. Present when "details" is included in the
3193
+ fields parameter.
3194
+ metadata:
3195
+ type:
3196
+ - object
3197
+ - "null"
3198
+ additionalProperties: true
3199
+ description: Arbitrary metadata attached to the score. Present when "details" is included in the fields parameter.
3200
+ authorUserId:
3201
+ type:
3202
+ - string
3203
+ - "null"
3204
+ description: >-
3205
+ The user who created this score, if available. Present when "annotation" is included in the fields
3206
+ parameter.
3207
+ queueId:
3208
+ type:
3209
+ - string
3210
+ - "null"
3211
+ description: >-
3212
+ The annotation queue this score belongs to, if any. Present when "annotation" is included in the fields
3213
+ parameter.
3214
+ subject:
3215
+ description: >-
3216
+ The entity this score is attached to (trace, observation, session, or experiment). Present when "subject" is
3217
+ included in the fields parameter.
3218
+ anyOf:
3219
+ - $ref: "#/components/schemas/ScoreSubjectV3"
3220
+ - type: "null"
3221
+ required:
3222
+ - id
3223
+ - projectId
3224
+ - name
3225
+ - source
3226
+ - timestamp
3227
+ - environment
3228
+ - createdAt
3229
+ - updatedAt
3230
+ ChatMessageType:
3231
+ title: ChatMessageType
3232
+ type: string
3233
+ enum:
3234
+ - chatmessage
3235
+ PlaceholderMessageType:
3236
+ title: PlaceholderMessageType
3237
+ type: string
3238
+ enum:
3239
+ - placeholder
3240
+ ScoreSource:
3241
+ title: ScoreSource
3242
+ type: string
3243
+ enum:
3244
+ - ANNOTATION
3245
+ - API
3246
+ - EVAL
3247
+ ScoreSubjectV3:
3248
+ title: ScoreSubjectV3
3249
+ oneOf:
3250
+ - type: object
3251
+ allOf:
3252
+ - type: object
3253
+ properties:
3254
+ kind:
3255
+ type: string
3256
+ enum:
3257
+ - trace
3258
+ - $ref: "#/components/schemas/ScoreSubjectTraceV3"
3259
+ required:
3260
+ - kind
3261
+ - type: object
3262
+ allOf:
3263
+ - type: object
3264
+ properties:
3265
+ kind:
3266
+ type: string
3267
+ enum:
3268
+ - observation
3269
+ - $ref: "#/components/schemas/ScoreSubjectObservationV3"
3270
+ required:
3271
+ - kind
3272
+ - type: object
3273
+ allOf:
3274
+ - type: object
3275
+ properties:
3276
+ kind:
3277
+ type: string
3278
+ enum:
3279
+ - session
3280
+ - $ref: "#/components/schemas/ScoreSubjectSessionV3"
3281
+ required:
3282
+ - kind
3283
+ - type: object
3284
+ allOf:
3285
+ - type: object
3286
+ properties:
3287
+ kind:
3288
+ type: string
3289
+ enum:
3290
+ - experiment
3291
+ - $ref: "#/components/schemas/ScoreSubjectExperimentV3"
3292
+ required:
3293
+ - kind
3294
+ description: >-
3295
+ A reference to the entity this score is attached to. Discriminated by "kind" — one of trace, observation,
3296
+ session, or experiment.
3297
+ ScoreSubjectTraceV3:
3298
+ title: ScoreSubjectTraceV3
3299
+ type: object
3300
+ properties:
3301
+ id:
3302
+ type: string
3303
+ description: The trace ID.
3304
+ required:
3305
+ - id
3306
+ ScoreSubjectObservationV3:
3307
+ title: ScoreSubjectObservationV3
3308
+ type: object
3309
+ properties:
3310
+ id:
3311
+ type: string
3312
+ description: The observation ID.
3313
+ traceId:
3314
+ type:
3315
+ - string
3316
+ - "null"
3317
+ description: The parent trace ID, if available.
3318
+ required:
3319
+ - id
3320
+ ScoreSubjectSessionV3:
3321
+ title: ScoreSubjectSessionV3
3322
+ type: object
3323
+ properties:
3324
+ id:
3325
+ type: string
3326
+ description: The session ID.
3327
+ required:
3328
+ - id
3329
+ ScoreSubjectExperimentV3:
3330
+ title: ScoreSubjectExperimentV3
3331
+ type: object
3332
+ properties:
3333
+ id:
3334
+ type: string
3335
+ description: The dataset run ID (experiment ID).
3336
+ required:
3337
+ - id
3338
+ securitySchemes:
3339
+ BasicAuth:
3340
+ type: http
3341
+ scheme: basic