Langfuse website screenshot

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.

9 APIs 0 Features
AILLMObservabilityOpen SourceEvaluations

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

OPEN

Pricing Plans

Langfuse Plans Pricing

5 plans

PLANS

Rate Limits

Langfuse Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
APIReference
APIReference
💰
Pricing
Pricing
👥
GitHub
GitHub
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText

Sources

Raw ↑
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