Langfuse
Langfuse is an open-source LLM engineering platform offering tracing, evaluations, prompt management, datasets, and metrics. The Langfuse API supports both self-hosted and multi-region cloud deployments (US, EU, Japan, HIPAA-compliant US) and integrates with LangChain, LlamaIndex, OpenTelemetry, and any LLM stack.
APIs
Langfuse Tracing API
Ingest traces, observations (spans, generations, events), and scores into Langfuse. Recommended path is the OpenTelemetry endpoint; legacy ingestion API is also supported. Trace...
Langfuse Observations API
Read and query observations (spans, generations, events) attached to traces. Supports filtering by trace, time range, name, and metadata.
Langfuse Metrics API
Aggregated metrics across traces, observations, scores, and costs. Supports custom dimensions, time series, and project-scoped queries for dashboarding.
Langfuse Prompt Management API
Create, version, label, and retrieve prompts with client-side caching. Supports text and chat prompt types, configuration variables, and label-based deployment (e.g. production,...
Langfuse Datasets API
Manage datasets and dataset items (input/expected-output pairs) for offline evaluation runs and regression testing.
Langfuse Evaluations API
CRUD operations for evals: define evaluators (LLM-as-judge, code, human), trigger evaluations on traces or dataset runs, and read back scores and reasoning.
Langfuse Scores API
Attach numeric, categorical, or boolean scores to traces, observations, or sessions. Supports user feedback, model-graded scores, and custom-defined score schemas.
Langfuse Organizations & Projects API
Organization-level provisioning APIs to create projects, manage users, and configure project membership programmatically.
Langfuse Instance Management API
Instance-management endpoints for self-hosted Langfuse deployments. Used to administer organizations, license, and platform-wide configuration.
Collections
langfuse
OPENPricing Plans
Rate Limits
FinOps
Langfuse Finops
FINOPSResources
Sources
opencollection: 1.0.0
info:
name: langfuse
items:
- info:
name: AnnotationQueues
type: folder
items:
- info:
name: annotationQueues_listQueues
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/annotation-queues'
params:
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get all annotation queues
- info:
name: annotationQueues_createQueue
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/annotation-queues'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create an annotation queue
- info:
name: annotationQueues_getQueue
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/annotation-queues/:queueId'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get an annotation queue by ID
- info:
name: annotationQueues_listQueueItems
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/items'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
- name: status
value: ''
type: query
description: Filter by status
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get items for a specific annotation queue
- info:
name: annotationQueues_createQueueItem
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/items'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Add an item to an annotation queue
- info:
name: annotationQueues_getQueueItem
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/items/:itemId'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
- name: itemId
value: ''
type: path
description: The unique identifier of the annotation queue item
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a specific item from an annotation queue
- info:
name: annotationQueues_updateQueueItem
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/items/:itemId'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
- name: itemId
value: ''
type: path
description: The unique identifier of the annotation queue item
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Update an annotation queue item
- info:
name: annotationQueues_deleteQueueItem
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/items/:itemId'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
- name: itemId
value: ''
type: path
description: The unique identifier of the annotation queue item
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Remove an item from an annotation queue
- info:
name: annotationQueues_createQueueAssignment
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/assignments'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create an assignment for a user to an annotation queue
- info:
name: annotationQueues_deleteQueueAssignment
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/annotation-queues/:queueId/assignments'
params:
- name: queueId
value: ''
type: path
description: The unique identifier of the annotation queue
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete an assignment for a user to an annotation queue
- info:
name: BlobStorageIntegrations
type: folder
items:
- info:
name: blobStorageIntegrations_getBlobStorageIntegrations
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/integrations/blob-storage'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get all blob storage integrations for the organization (requires organization-scoped API key)
- info:
name: blobStorageIntegrations_upsertBlobStorageIntegration
type: http
http:
method: PUT
url: '{{baseUrl}}/api/public/integrations/blob-storage'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create or update a blob storage integration for a specific project (requires organization-scoped API key). The configuration
is validated by performing a test upload to the bucket.
- info:
name: blobStorageIntegrations_getBlobStorageIntegrationStatus
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/integrations/blob-storage/:id'
params:
- name: id
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get the sync status of a blob storage integration by integration ID (requires organization-scoped API key)
- info:
name: blobStorageIntegrations_deleteBlobStorageIntegration
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/integrations/blob-storage/:id'
params:
- name: id
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete a blob storage integration by ID (requires organization-scoped API key)
- info:
name: Comments
type: folder
items:
- info:
name: comments_get
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/comments'
params:
- name: page
value: ''
type: query
description: Page number, starts at 1.
- name: limit
value: ''
type: query
description: Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit
- name: objectType
value: ''
type: query
description: Filter comments by object type (trace, observation, session, prompt).
- name: objectId
value: ''
type: query
description: Filter comments by object id. If objectType is not provided, an error will be thrown.
- name: authorUserId
value: ''
type: query
description: Filter comments by author user id.
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get all comments
- info:
name: comments_create
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/comments'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create a comment. Comments may be attached to different object types (trace, observation, session, prompt).
- info:
name: comments_get-by-id
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/comments/:commentId'
params:
- name: commentId
value: ''
type: path
description: The unique langfuse identifier of a comment
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a comment by id
- info:
name: DatasetItems
type: folder
items:
- info:
name: datasetItems_list
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/dataset-items'
params:
- name: datasetName
value: ''
type: query
- name: sourceTraceId
value: ''
type: query
- name: sourceObservationId
value: ''
type: query
- name: version
value: ''
type: query
description: 'ISO 8601 timestamp (RFC 3339, Section 5.6) in UTC (e.g., "2026-01-21T14:35:42Z").
If provided, returns state of dataset at this timestamp.
If not provided, returns the latest version. Requires datasetName to be specified.'
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: 'Get dataset items. Optionally specify a version to get the items as they existed at that point in time.
Note: If version parameter is provided, datasetName must also be provided.'
- info:
name: datasetItems_create
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/dataset-items'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create a dataset item
- info:
name: datasetItems_get
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/dataset-items/:id'
params:
- name: id
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a dataset item
- info:
name: datasetItems_delete
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/dataset-items/:id'
params:
- name: id
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete a dataset item and all its run items. This action is irreversible.
- info:
name: DatasetRunItems
type: folder
items:
- info:
name: datasetRunItems_list
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/dataset-run-items'
params:
- name: datasetId
value: ''
type: query
- name: runName
value: ''
type: query
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: List dataset run items
- info:
name: datasetRunItems_create
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/dataset-run-items'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create a dataset run item
- info:
name: Datasets
type: folder
items:
- info:
name: datasets_list
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/v2/datasets'
params:
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get all datasets
- info:
name: datasets_create
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/v2/datasets'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create a dataset
- info:
name: datasets_get
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/v2/datasets/:datasetName'
params:
- name: datasetName
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a dataset
- info:
name: datasets_getRun
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/datasets/:datasetName/runs/:runName'
params:
- name: datasetName
value: ''
type: path
- name: runName
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a dataset run and its items
- info:
name: datasets_deleteRun
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/datasets/:datasetName/runs/:runName'
params:
- name: datasetName
value: ''
type: path
- name: runName
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete a dataset run and all its run items. This action is irreversible.
- info:
name: datasets_getRuns
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/datasets/:datasetName/runs'
params:
- name: datasetName
value: ''
type: path
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get dataset runs
- info:
name: Health
type: folder
items:
- info:
name: health_health
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/health'
docs: Check health of API and database
- info:
name: Ingestion
type: folder
items:
- info:
name: ingestion_batch
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/ingestion'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: '**Legacy endpoint for batch ingestion for Langfuse Observability.**
-> Please use the OpenTelemetry endpoint (`/api/public/otel/v1/traces`). Learn more: https://langfuse.com/integrations/native/opentelemetry
Within each batch, there can be multiple events.
Each event has a type, an id, a timestamp, metadata and a body.
Internally, we refer to this as the "event envelope" as it tells us something about the event but not the trace.
We use the event id within this envelope to deduplicate messages'
- info:
name: LegacyMetricsV1
type: folder
items:
- info:
name: legacy_metricsV1_metrics
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/metrics'
params:
- name: query
value: ''
type: query
description: "JSON string containing the query parameters with the following structure:\n```json\n{\n \"view\": string,\
\ // Required. One of \"traces\", \"observations\", \"scores-numeric\", \"scores-categorical\"\n \"dimensions\"\
: [ // Optional. Default: []\n {\n \"field\": string // Field to group by, e.g. \"name\"\
, \"userId\", \"sessionId\"\n }\n ],\n \"metrics\": [ // Required. At least one metric must be\
\ provided\n {\n \"measure\": string, // What to measure, e.g. \"count\", \"latency\", \"value\"\n \
\ \"aggregation\": string // How to aggregate, e.g. \"count\", \"sum\", \"avg\", \"p95\", \"histogram\"\n \
\ }\n ],\n \"filters\": [ // Optional. Default: []\n {\n \"column\": string, // Column\
\ to filter on\n \"operator\": string, // Operator, e.g. \"=\", \">\", \"<\", \"contains\"\n \"value\"\
: any, // Value to compare against\n \"type\": string, // Data type, e.g. \"string\", \"number\"\
, \"stringObject\"\n \"key\": string // Required only when filtering on metadata\n }\n ],\n \"\
timeDimension\": { // Optional. Default: null. If provided, results will be grouped by time\n \"granularity\"\
: string // One of \"minute\", \"hour\", \"day\", \"week\", \"month\", \"auto\"\n },\n \"fromTimestamp\": string,\
\ // Required. ISO datetime string for start of time range\n \"toTimestamp\": string, // Required. ISO datetime\
\ string for end of time range\n \"orderBy\": [ // Optional. Default: null\n {\n \"field\"\
: string, // Field to order by\n \"direction\": string // \"asc\" or \"desc\"\n }\n ],\n \"config\"\
: { // Optional. Query-specific configuration\n \"bins\": number, // Optional. Number of\
\ bins for histogram (1-100), default: 10\n \"row_limit\": number // Optional. Row limit for results (1-1000)\n\
\ }\n}\n```"
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: 'Get metrics from the Langfuse project using a query object.
Consider using the [v2 metrics endpoint](/api-reference#tag/metricsv2/GET/api/public/v2/metrics) for better performance.
For more details, see the [Metrics API documentation](https://langfuse.com/docs/metrics/features/metrics-api).'
- info:
name: LegacyObservationsV1
type: folder
items:
- info:
name: legacy_observationsV1_get
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/observations/:observationId'
params:
- name: observationId
value: ''
type: path
description: The unique langfuse identifier of an observation, can be an event, span or generation
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a observation
- info:
name: legacy_observationsV1_getMany
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/observations'
params:
- name: page
value: ''
type: query
description: Page number, starts at 1.
- name: limit
value: ''
type: query
description: Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.
- name: name
value: ''
type: query
- name: userId
value: ''
type: query
- name: type
value: ''
type: query
- name: traceId
value: ''
type: query
- name: level
value: ''
type: query
description: Optional filter for observations with a specific level (e.g. "DEBUG", "DEFAULT", "WARNING", "ERROR").
- name: parentObservationId
value: ''
type: query
- name: environment
value: ''
type: query
description: Optional filter for observations where the environment is one of the provided values.
- name: fromStartTime
value: ''
type: query
description: Retrieve only observations with a start_time on or after this datetime (ISO 8601).
- name: toStartTime
value: ''
type: query
description: Retrieve only observations with a start_time before this datetime (ISO 8601).
- name: version
value: ''
type: query
description: Optional filter to only include observations with a certain version.
- name: filter
value: ''
type: query
description: "JSON string containing an array of filter conditions. When provided, this takes precedence over query\
\ parameter filters (userId, name, type, level, environment, fromStartTime, ...).\n\n## Filter Structure\nEach filter\
\ condition has the following structure:\n```json\n[\n {\n \"type\": string, // Required. One of:\
\ \"datetime\", \"string\", \"number\", \"stringOptions\", \"categoryOptions\", \"arrayOptions\", \"stringObject\"\
, \"numberObject\", \"boolean\", \"null\"\n \"column\": string, // Required. Column to filter on (see\
\ available columns below)\n \"operator\": string, // Required. Operator based on type:\n \
\ // - datetime: \">\", \"<\", \">=\", \"<=\"\n // - string: \"=\"\
, \"contains\", \"does not contain\", \"starts with\", \"ends with\"\n // - stringOptions:\
\ \"any of\", \"none of\"\n // - categoryOptions: \"any of\", \"none of\"\n \
\ // - arrayOptions: \"any of\", \"none of\", \"all of\"\n //\
\ - number: \"=\", \">\", \"<\", \">=\", \"<=\"\n // - stringObject: \"=\", \"contains\"\
, \"does not contain\", \"starts with\", \"ends with\"\n // - numberObject: \"=\",\
\ \">\", \"<\", \">=\", \"<=\"\n // - boolean: \"=\", \"<>\"\n \
\ // - null: \"is null\", \"is not null\"\n \"value\": any, // Required (except for null\
\ type). Value to compare against. Type depends on filter type\n \"key\": string // Required only\
\ for stringObject, numberObject, and categoryOptions types when filtering on nested fields like metadata\n }\n\
]\n```\n\n## Available Columns\n\n### Core Observation Fields\n- `id` (string) - Observation ID\n- `type` (string)\
\ - Observation type (SPAN, GENERATION, EVENT)\n- `name` (string) - Observation name\n- `traceId` (string) - Associated\
\ trace ID\n- `startTime` (datetime) - Observation start time\n- `endTime` (datetime) - Observation end time\n-\
\ `environment` (string) - Environment tag\n- `level` (string) - Log level (DEBUG, DEFAULT, WARNING, ERROR)\n- `statusMessage`\
\ (string) - Status message\n- `version` (string) - Version tag\n\n### Performance Metrics\n- `latency` (number)\
\ - Latency in seconds (calculated: end_time - start_time)\n- `timeToFirstToken` (number) - Time to first token\
\ in seconds\n- `tokensPerSecond` (number) - Output tokens per second\n\n### Token Usage\n- `inputTokens` (number)\
\ - Number of input tokens\n- `outputTokens` (number) - Number of output tokens\n- `totalTokens` (number) - Total\
\ tokens (alias: `tokens`)\n\n### Cost Metrics\n- `inputCost` (number) - Input cost in USD\n- `outputCost` (number)\
\ - Output cost in USD\n- `totalCost` (number) - Total cost in USD\n\n### Model Information\n- `model` (string)\
\ - Provided model name\n- `promptName` (string) - Associated prompt name\n- `promptVersion` (number) - Associated\
\ prompt version\n\n### Structured Data\n- `metadata` (stringObject/numberObject/categoryOptions) - Metadata key-value\
\ pairs. Use `key` parameter to filter on specific metadata keys.\n\n### Associated Trace Fields (requires join\
\ with traces table)\n- `userId` (string) - User ID from associated trace\n- `traceName` (string) - Name from associated\
\ trace\n- `traceEnvironment` (string) - Environment from associated trace\n- `traceTags` (arrayOptions) - Tags\
\ from associated trace\n\n## Filter Examples\n```json\n[\n {\n \"type\": \"string\",\n \"column\": \"type\"\
,\n \"operator\": \"=\",\n \"value\": \"GENERATION\"\n },\n {\n \"type\": \"number\",\n \"column\"\
: \"latency\",\n \"operator\": \">=\",\n \"value\": 2.5\n },\n {\n \"type\": \"stringObject\",\n \"\
column\": \"metadata\",\n \"key\": \"environment\",\n \"operator\": \"=\",\n \"value\": \"production\"\n\
\ }\n]\n```"
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: 'Get a list of observations.
Consider using the [v2 observations endpoint](/api-reference#tag/observationsv2/GET/api/public/v2/observations) for
cursor-based pagination and field selection.'
- info:
name: LegacyScoreV1
type: folder
items:
- info:
name: legacy_scoreV1_create
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/scores'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create a score (supports both trace and session scores)
- info:
name: legacy_scoreV1_delete
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/scores/:scoreId'
params:
- name: scoreId
value: ''
type: path
description: The unique langfuse identifier of a score
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete a score (supports both trace and session scores)
- info:
name: LlmConnections
type: folder
items:
- info:
name: llmConnections_list
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/llm-connections'
params:
- name: page
value: ''
type: query
description: page number, starts at 1
- name: limit
value: ''
type: query
description: limit of items per page
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get all LLM connections in a project
- info:
name: llmConnections_upsert
type: http
http:
method: PUT
url: '{{baseUrl}}/api/public/llm-connections'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Create or update an LLM connection. The connection is upserted on provider.
- info:
name: llmConnections_delete
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/public/llm-connections/:id'
params:
- name: id
value: ''
type: path
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Delete an LLM connection by id. Evaluators that depend on the deleted connection are automatically paused.
- info:
name: Media
type: folder
items:
- info:
name: media_get
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/media/:mediaId'
params:
- name: mediaId
value: ''
type: path
description: The unique langfuse identifier of a media record
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a media record
- info:
name: media_patch
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/public/media/:mediaId'
params:
- name: mediaId
value: ''
type: path
description: The unique langfuse identifier of a media record
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Patch a media record
- info:
name: media_getUploadUrl
type: http
http:
method: POST
url: '{{baseUrl}}/api/public/media'
body:
type: json
data: '{}'
auth:
type: basic
username: '{{username}}'
password: '{{password}}'
docs: Get a presigned upload URL for a media record
- info:
name: Metrics
type: folder
items:
- info:
name: metrics_metrics
type: http
http:
method: GET
url: '{{baseUrl}}/api/public/v2/metrics'
params:
- name: query
value: ''
type: query
description: "JSON string containing the query parameters with the following structure:\n```json\n{\n \"view\": string,\
\ // Required. One of \"observations\", \"scores-numeric\", \"scores-categorical\"\n \"dimensions\":\
\ [ // Optional. Default: []\n {\n \"field\": string // Field to group by (see available\
\ dimensions above)\n }\n ],\n \"metrics\": [ // Required. At least one metric must be provided\n\
\ {\n \"measure\": string, // What to measure (see available measures above)\n \"aggregation\":\
\ string // How to aggregate: \"sum\", \"avg\", \"count\", \"max\", \"min\", \"p50\", \"p75\", \"p90\", \"p95\"\
, \"p99\", \"histogram\"\n }\n ],\n \"filters\": [ // Optional. Default: []\n {\n \"column\"\
: string, // Column to filter on (any dimension field)\n \"operator\": string, // Operator based on type:\n\
\ // - datetime: \">\", \"<\", \">=\", \"<=\"\n // - string:\
\ \"=\", \"contains\", \"does not contain\", \"starts with\", \"ends with\"\n // - stringOptions:\
\ \"any of\", \"none of\"\n // - arrayOptions: \"any of\", \"none of\", \"all of\"\n\
\ // - number: \"=\", \">\", \"<\", \">=\", \"<=\"\n // -\
\ stringObject/numberObject: same as string/number with required \"key\"\n // - boolean:\
\ \"=\", \"<>\"\n // - null: \"is null\", \"is not null\"\n \"value\": any, \
\ // Value to compare against\n \"type\": string, // Data type: \"datetime\", \"string\", \"number\"\
, \"stringOptions\", \"categoryOptions\", \"arrayOptions\", \"stringObject\", \"numberObject\", \"boolean\", \"\
null\"\n \"key\": string // Required only for stringObject/numberObject types (e.g., metadata filtering)\n\
\ }\n ],\n \"timeDimension\": { // Optional. Default: null. If provided, results will be grouped by\
\ time\n \"granularity\": string // One of \"auto\", \"minute\", \"hour\", \"day\", \"week\", \"month\"\n \
\ },\n \"fromTimestamp\": string, // Required. ISO datetime string for start of time range\n \"toTimestamp\"\
: string, // Required. ISO datetime string for end of time range (must be after fromTimestamp)\n \"orderBy\"\
: [ // Optional. Default: null\n {\n \"field\": string, // Field to order by (dimension\
\ or metric alias)\n \"direction\": string // \"asc\" or \"desc\"\n }\n ],\n \"config\": { \
\ // Optional. Query-specific configuration\n
# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/langfuse/refs/heads/main/apis.yml