openapi: 3.0.1 info: title: Evidently Platform REST API description: > The Evidently Platform REST API provides programmatic access to the Evidently AI observability platform. It enables developers to manage projects, upload evaluation snapshots, query monitoring dashboards, manage datasets, and run trace-based LLM evaluations. Authentication uses a Bearer token (API key) passed via the Authorization header or configured through the EVIDENTLY_API_KEY environment variable. The API is built on the Litestar ASGI framework and exposes versioned routes under /api and /api/v2. version: '0.7.17' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 contact: name: Evidently AI url: https://www.evidentlyai.com/ email: hello@evidentlyai.com servers: - url: https://app.evidently.cloud/api description: Evidently Cloud (hosted platform) - url: http://localhost:8000/api description: Self-hosted / local instance security: - bearerAuth: [] tags: - name: Service description: Service metadata and version information - name: Projects description: Manage Evidently projects — create, list, update, delete - name: Snapshots description: Upload and query evaluation snapshots (reports and test suites) - name: Dashboards description: Manage project monitoring dashboards - name: Datasets description: Upload, list, and manage evaluation datasets - name: Artifacts description: Manage versioned model artifacts attached to projects paths: # ─── Service ────────────────────────────────────────────────────────────── /version: get: operationId: getVersion summary: Get service version description: Returns the current Evidently application name, version string, and git commit hash. tags: - Service security: [] responses: '200': description: Version information content: application/json: schema: $ref: '#/components/schemas/Version' # ─── Projects v1 ────────────────────────────────────────────────────────── /projects/: get: operationId: listProjects summary: List all projects description: Returns all projects accessible to the authenticated user, optionally filtered by team or organisation. tags: - Projects parameters: - name: team_id in: query description: Filter projects by team ID required: false schema: type: string format: uuid - name: org_id in: query description: Filter projects by organisation ID required: false schema: type: string format: uuid responses: '200': description: List of projects content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' post: operationId: addProject summary: Create a project description: Creates a new Evidently project for the authenticated user. tags: - Projects parameters: - name: org_id in: query required: false schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Project' responses: '201': description: ID of the newly created project content: application/json: schema: type: string format: uuid /projects/search/{project_name}: get: operationId: searchProjects summary: Search projects by name description: Returns projects whose name matches the given string, filtered optionally by team or org. tags: - Projects parameters: - name: project_name in: path required: true schema: type: string - name: team_id in: query required: false schema: type: string format: uuid - name: org_id in: query required: false schema: type: string format: uuid responses: '200': description: Matching projects content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' /projects/{project_id}/info: get: operationId: getProjectInfo summary: Get project details description: Returns metadata and settings for a single project. tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Project details content: application/json: schema: $ref: '#/components/schemas/Project' '404': $ref: '#/components/responses/NotFound' post: operationId: updateProjectInfo summary: Update project info description: Updates project metadata fields (name, description, etc.). tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Project' responses: '200': description: Updated project content: application/json: schema: $ref: '#/components/schemas/Project' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}: delete: operationId: deleteProject summary: Delete a project description: Permanently deletes a project and all its snapshots. tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' responses: '204': description: Project deleted '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/reload: get: operationId: reloadProjectSnapshots summary: Reload project snapshots description: Forces a reload of all snapshots cached for this project. tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Reload triggered '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/reports: get: operationId: listReports summary: List reports for a project description: Returns all snapshot-based reports stored under this project. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: List of reports content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportModel' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/snapshots: get: operationId: listSnapshots summary: List snapshots for a project description: Returns metadata for all snapshots (reports and test suites) stored in this project. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Snapshot metadata list content: application/json: schema: type: array items: $ref: '#/components/schemas/SnapshotMetadata' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/{snapshot_id}/metadata: get: operationId: getSnapshotMetadata summary: Get snapshot metadata description: Returns metadata for a single snapshot identified by its UUID. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/SnapshotId' responses: '200': description: Snapshot metadata content: application/json: schema: $ref: '#/components/schemas/SnapshotMetadata' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/{snapshot_id}/data: get: operationId: getSnapshotData summary: Get snapshot widget data description: Returns JSON-serialised dashboard/widget data for a snapshot. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/SnapshotId' responses: '200': description: Dashboard info JSON content: application/json: schema: type: string '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/{snapshot_id}/download: get: operationId: downloadSnapshot summary: Download a snapshot description: Downloads a snapshot as HTML or JSON. Use the `report_format` query parameter to choose format. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/SnapshotId' - name: report_format in: query required: false schema: type: string enum: [html, json] default: html responses: '200': description: Snapshot file download content: text/html: schema: type: string format: binary application/json: schema: type: string format: binary '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/{snapshot_id}/graphs_data/{graph_id}: get: operationId: getSnapshotGraphData summary: Get graph data from a snapshot description: Returns JSON data for a specific graph widget within a snapshot. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/SnapshotId' - name: graph_id in: path required: true description: ID of the graph widget within the snapshot schema: type: string responses: '200': description: Graph widget data JSON content: application/json: schema: type: string '404': $ref: '#/components/responses/NotFound' # ─── Projects v2 ────────────────────────────────────────────────────────── /v2/projects/: get: operationId: listProjectsV2 summary: List projects (v2) description: v2 variant of list projects with extended response models. tags: - Projects parameters: - name: team_id in: query required: false schema: type: string format: uuid - name: org_id in: query required: false schema: type: string format: uuid responses: '200': description: List of projects content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' post: operationId: addProjectV2 summary: Create a project (v2) description: Creates a new project (v2 route). tags: - Projects requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Project' responses: '201': description: Created project ID content: application/json: schema: type: string format: uuid /v2/projects/{project_id}: patch: operationId: updateProjectV2 summary: Update a project (v2) description: Performs a partial update of project fields using PATCH semantics. tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Project' responses: '200': description: Updated project ID content: application/json: schema: type: string format: uuid '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteProjectV2 summary: Delete a project (v2) description: Permanently deletes a project (v2 route). tags: - Projects parameters: - $ref: '#/components/parameters/ProjectId' responses: '204': description: Project deleted '404': $ref: '#/components/responses/NotFound' # ─── Snapshots v2 ───────────────────────────────────────────────────────── /v2/snapshots/{project_id}: post: operationId: addSnapshot summary: Upload a snapshot description: > Uploads a serialised Evidently snapshot (report or test suite) to a project. The request body should be a JSON-encoded SnapshotModel object. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/octet-stream: schema: type: string format: binary responses: '201': description: Snapshot upload result content: application/json: schema: $ref: '#/components/schemas/AddSnapshotResponse' '404': $ref: '#/components/responses/NotFound' /v2/snapshots/{project_id}/{snapshot_id}: delete: operationId: deleteSnapshot summary: Delete a snapshot description: Permanently removes a snapshot from a project. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/SnapshotId' responses: '204': description: Snapshot deleted '404': $ref: '#/components/responses/NotFound' /v2/snapshots/{project_id}/metrics: get: operationId: getSnapshotsMetrics summary: List snapshot metrics description: Returns the list of metric types recorded in snapshots for a project, optionally filtered by tags and metadata. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - name: tags in: query required: false schema: type: string description: JSON-encoded list of tag strings - name: metadata in: query required: false schema: type: string description: JSON-encoded key-value metadata map responses: '200': description: List of metric type names content: application/json: schema: $ref: '#/components/schemas/MetricsList' /v2/snapshots/{project_id}/labels: get: operationId: getSnapshotsMetricLabels summary: List metric labels description: Returns the label keys for a given metric type across all snapshots in a project. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - name: metric_type in: query required: true schema: type: string - name: tags in: query required: false schema: type: string - name: metadata in: query required: false schema: type: string responses: '200': description: Label keys content: application/json: schema: $ref: '#/components/schemas/LabelsList' /v2/snapshots/{project_id}/label_values: get: operationId: getSnapshotsMetricLabelValues summary: List metric label values description: Returns the distinct values for a metric label across all snapshots in a project. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - name: metric_type in: query required: true schema: type: string - name: label in: query required: true schema: type: string - name: tags in: query required: false schema: type: string - name: metadata in: query required: false schema: type: string responses: '200': description: Label values content: application/json: schema: $ref: '#/components/schemas/LabelValuesList' /v2/snapshots/{project_id}/data_series_batch: post: operationId: getSnapshotsMetricsDataBatch summary: Get metric data series (batch) description: > Returns time-series data for one or more metrics across all snapshots in a project, optionally bounded by timestamp range. tags: - Snapshots parameters: - $ref: '#/components/parameters/ProjectId' - name: timestamp_start in: query required: false schema: type: string format: date-time - name: timestamp_end in: query required: false schema: type: string format: date-time requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchMetricData' responses: '200': description: Series data response content: application/json: schema: $ref: '#/components/schemas/SeriesResponse' # ─── Dashboards v2 ──────────────────────────────────────────────────────── /v2/dashboards/{project_id}: get: operationId: getProjectDashboard summary: Get project dashboard description: Returns the monitoring dashboard configuration for a project. tags: - Dashboards parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Dashboard model content: application/json: schema: $ref: '#/components/schemas/DashboardModel' '404': $ref: '#/components/responses/NotFound' post: operationId: updateProjectDashboard summary: Update project dashboard description: Saves an updated dashboard configuration for a project. tags: - Dashboards parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DashboardModel' responses: '200': description: Updated dashboard model content: application/json: schema: $ref: '#/components/schemas/DashboardModel' '404': $ref: '#/components/responses/NotFound' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: API Key description: > Bearer token (API key) obtained from the Evidently platform settings. Set via the Authorization header or the EVIDENTLY_API_KEY environment variable. parameters: ProjectId: name: project_id in: path required: true description: UUID of the project schema: type: string format: uuid SnapshotId: name: snapshot_id in: path required: true description: UUID of the snapshot schema: type: string format: uuid responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' schemas: Version: type: object description: Service version metadata properties: application: type: string description: Application name example: Evidently UI version: type: string description: Package version string example: 0.7.17 commit: type: string description: Short git commit hash example: abc1234 Project: type: object description: An Evidently project — the top-level container for snapshots and dashboards required: - name properties: id: type: string format: uuid readOnly: true name: type: string description: Human-readable project name example: My LLM Monitor description: type: string description: Optional project description team_id: type: string format: uuid description: Team that owns this project org_id: type: string format: uuid description: Organisation that owns this project created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ReportModel: type: object description: Summary metadata for a snapshot-based report properties: id: type: string format: uuid project_id: type: string format: uuid name: type: string timestamp: type: string format: date-time metadata: type: object additionalProperties: true tags: type: array items: type: string SnapshotMetadata: type: object description: Metadata for a single Evidently snapshot (report or test suite) properties: id: type: string format: uuid project_id: type: string format: uuid timestamp: type: string format: date-time metadata: type: object additionalProperties: true tags: type: array items: type: string links: type: array description: Links to associated datasets items: type: object AddSnapshotResponse: type: object description: Response returned after a successful snapshot upload properties: snapshot_id: type: string format: uuid MetricsList: type: object description: List of metric type identifiers properties: metrics: type: array items: type: string example: - DatasetDriftMetric - ColumnDriftMetric - DatasetMissingValuesMetric LabelsList: type: object description: List of label keys for a metric properties: labels: type: array items: type: string LabelValuesList: type: object description: Distinct values for a metric label properties: label_values: type: array items: type: string BatchMetricData: type: object description: Request body for batch metric data series retrieval properties: series_filter: type: array description: List of metric series filters items: type: object additionalProperties: true SeriesResponse: type: object description: Time-series data response for metrics across snapshots additionalProperties: true DashboardModel: type: object description: Project monitoring dashboard configuration properties: id: type: string format: uuid project_id: type: string format: uuid panels: type: array description: Dashboard panel configurations items: type: object additionalProperties: true ErrorDetail: type: object description: Error response body properties: detail: type: string description: Human-readable error message example: project not found status_code: type: integer example: 404