Download OpenAPI Spec
Tree BG 1
Tree
Tree
TreeLeaves
TreeLeaves
Cat IdleGrassGrassRockRock

Beta Observability Evaluations Optimizations Endpoints

(beta) Observability - Evaluations - Optimizations API.

List projects

GET /v1/observability/projects#

List projects

200

Successful Response

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.projects.list({});

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.projects.list(page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/projects \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "projects": {
    "count": 87
  }
}

Get project by slug

GET /v1/observability/projects/{project_slug}#

Get project by slug

200

Successful Response

created_at#
*date-time
creator_id#
*string
deleted_at#
*date-time|null
description#
*string|null
id#
*string
is_favorite#
boolean

Default Value: false

name#
*string
slug#
*string
updated_at#
*date-time
workspace_id#
*string

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.projects.get({
    projectSlug: "<value>",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.projects.get(project_slug="<value>")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/projects/{project_slug} \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "created_at": "2025-12-17T10:25:07.818693Z",
  "creator_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "deleted_at": null,
  "description": null,
  "id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "name": "My resource",
  "slug": "occaecat dolor sit",
  "updated_at": "2025-12-17T10:41:03.469341Z",
  "workspace_id": "019b2bd7-96e7-7219-8c0b-45a73da50088"
}

Search evaluation runs with filters

POST /v1/observability/evaluations_v2/{evaluation_slug}/runs/search#

Search evaluation runs with filters

200

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.runs.search({
    evaluationSlug: "<value>",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.runs.search(evaluation_slug="<value>", page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluations_v2/{evaluation_slug}/runs/search \
 -X POST \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE' \
 -H 'Content-Type: application/json' \
 -d 'null'

200

{
  "runs": {
    "count": 87
  }
}

Search evaluation runs across all evaluations

POST /v1/observability/evaluation-runs_v2/search#

Search evaluation runs across all evaluations

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.runs.searchAll({});

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.runs.search_all(page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/search \
 -X POST \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE' \
 -H 'Content-Type: application/json' \
 -d 'null'

200

{
  "runs": {
    "count": 87
  }
}

Get a specific evaluation run by ID

GET /v1/observability/evaluation-runs_v2/{run_id}#

Get a specific evaluation run by ID

200

Successful Response

created_at#
*date-time
creator_id#
*string
dataset_id#
string|null
deleted_at#
*date-time|null
description#
*string|null
evaluation_id#
*string
evaluators#
*array<EvaluatorV2>
goal_results#
map<GoalResult>
id#
*string
metadata_#
*map<any>
name#
*string
num_generations#
*integer
optimization#
RunOptimizationRef|null

Typed run→optimization back-ref, derived at read from the optimization_run link.

Not stored on the run (single source of truth = optimization_run); lets a run row show its optimization (id + name) without an extra request per run.

passed#
boolean|null
run_evaluators#
array<EvaluatorV2>
run_info#
map<any>|null
status#
string

Default Value: "completed"

system#
SystemV2|null
tags#
*array<string>
updated_at#
*date-time

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.runs.get({
    runId: "c120b634-146a-4ae3-bd38-b7a168c4c8ce",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.runs.get(run_id="c120b634-146a-4ae3-bd38-b7a168c4c8ce")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/{run_id} \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "created_at": "2025-12-17T10:25:07.818693Z",
  "creator_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "deleted_at": null,
  "description": null,
  "evaluation_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "evaluators": [
    {
      "created_at": "2025-12-17T10:25:07.818693Z",
      "deleted_at": null,
      "description": null,
      "id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
      "name": "My resource",
      "num_scores": 87,
      "tags": [
        "nostrud"
      ],
      "updated_at": "2025-12-17T10:41:03.469341Z"
    }
  ],
  "id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "metadata_": [
    null
  ],
  "name": "My resource",
  "num_generations": 14,
  "tags": [
    "dolor"
  ],
  "updated_at": "2025-12-17T10:41:03.469341Z"
}

Get statistics for a specific evaluation run

GET /v1/observability/evaluation-runs_v2/{run_id}/statistics#

Get statistics for a specific evaluation run

200

Successful Response

goal_results#
map<GoalResult>
passed#
boolean|null
run_id#
*string

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.runs.getStatistics({
    runId: "a38473a2-532a-4cb8-9320-a7f617d16595",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.runs.get_statistics(run_id="a38473a2-532a-4cb8-9320-a7f617d16595")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/{run_id}/statistics \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "run_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "statistics": [
    {}
  ]
}

Compute statistics for a specific evaluation run with optional filters

POST /v1/observability/evaluation-runs_v2/{run_id}/statistics/compute#

Compute statistics for a specific evaluation run with optional filters

200

Successful Response

goal_results#
map<GoalResult>
passed#
boolean|null
run_id#
*string

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.runs.computeStatistics({
    runId: "c5e1142f-de29-45b2-b29c-fe37e6509c8a",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.runs.compute_statistics(run_id="c5e1142f-de29-45b2-b29c-fe37e6509c8a")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/{run_id}/statistics/compute \
 -X POST \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE' \
 -H 'Content-Type: application/json' \
 -d 'null'

200

{
  "run_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "statistics": [
    {}
  ]
}

Get a specific record from an evaluation run

GET /v1/observability/evaluation-runs_v2/{run_id}/records/{record_id}#

Get a specific record from an evaluation run

200

Successful Response

created_at#
*date-time
dataset_record_id#
string|null
deleted_at#
*date-time|null
id#
*string
input#
*any
updated_at#
*date-time

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.records.get({
    runId: "4561f251-c638-4a33-8739-db876b032f73",
    recordId: "24b40e66-4e0d-4788-bb5a-df09239c7ba9",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.records.get(run_id="4561f251-c638-4a33-8739-db876b032f73", record_id="24b40e66-4e0d-4788-bb5a-df09239c7ba9")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/{run_id}/records/{record_id} \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "created_at": "2025-12-17T10:25:07.818693Z",
  "deleted_at": null,
  "id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "input": null,
  "updated_at": "2025-12-17T10:41:03.469341Z"
}

Search records for an evaluation run with content filters

POST /v1/observability/evaluation-runs_v2/{run_id}/records/search#

Search records for an evaluation run with content filters

200

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.records.search({
    runId: "3ec2a158-4bb7-4020-8a52-0f64a2745094",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.records.search(run_id="3ec2a158-4bb7-4020-8a52-0f64a2745094", page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/evaluation-runs_v2/{run_id}/records/search \
 -X POST \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE' \
 -H 'Content-Type: application/json' \
 -d 'null'

200

{
  "records": {
    "count": 87
  }
}

List optimizations with optional filters

GET /v1/observability/optimizations#

List optimizations with optional filters

200

Successful Response

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.optimizations.list({});

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.optimizations.list(page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/optimizations \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "optimizations": {
    "count": 87
  }
}

Get an optimization by id (with its anchored evaluation + project)

GET /v1/observability/optimizations/{optimization_id}#

Get an optimization by id (with its anchored evaluation + project)

200

Successful Response

algorithm#
*string
created_at#
*date-time
creator_id#
*string
deleted_at#
*date-time|null
description#
string|null
evaluation#
OptimizationReference|null
evaluation_id#
string|null
id#
*string
name#
*string
objective_spec#
map<any>|null
outcome#
map<any>|null
project_id#
*string
source#
*string
status#
*string
steer#
string|null
tags#
array<string>
updated_at#
*date-time
workflow_execution_id#
string|null
workflow_run_id#
string|null

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.optimizations.get({
    optimizationId: "fd7cc96b-0c32-4b79-b7e4-63786d9dcfea",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.optimizations.get(optimization_id="fd7cc96b-0c32-4b79-b7e4-63786d9dcfea")

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/optimizations/{optimization_id} \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "algorithm": "ipsum eiusmod",
  "created_at": "2025-12-17T10:25:07.818693Z",
  "creator_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "deleted_at": null,
  "id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "name": "My resource",
  "project_id": "019b2bd7-96e7-7219-8c0b-45a73da50088",
  "source": "upload",
  "status": "irure",
  "updated_at": "2025-12-17T10:41:03.469341Z"
}

List an optimization's trials with their observation runs (paginated)

GET /v1/observability/optimizations/{optimization_id}/trials#

List an optimization's trials with their observation runs (paginated)

Playground

Test the endpoints live

import { Mistral } from "@mistralai/mistralai";

const mistral = new Mistral({
  apiKey: "MISTRAL_API_KEY",
});

async function run() {
  const result = await mistral.beta.observability.evaluations.optimizations.listTrials({
    optimizationId: "54622d5d-6e77-4a86-9908-87b1f8f16424",
  });

  console.log(result);
}

run();
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.beta.observability.evaluations.optimizations.list_trials(optimization_id="54622d5d-6e77-4a86-9908-87b1f8f16424", page_size=50, page=1)

    # Handle response
    print(res)

curl https://api.mistral.ai/v1/observability/optimizations/{optimization_id}/trials \
 -X GET \
 -H 'Authorization: Bearer YOUR_APIKEY_HERE'

200

{
  "trials": {
    "count": 87
  }
}