












Beta Observability Judges Endpoints
(beta) Create, update, and manage judges for evaluating chat completions.












Examples
Real world code examples
Get judges with optional filtering and search
GET /v1/observability/judges
200
Successful Response
Playground
Test the endpoints live
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.list(page_size=50, page=1)
# Handle response
print(res)
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.list(page_size=50, page=1)
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/judges \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/judges \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'200
{
"judges": {
"count": 87
}
}{
"judges": {
"count": 87
}
}Create a new judge
POST /v1/observability/judges
description
instructions
model_name
name
tools
201
Successful Response
base_revision
created_at
deleted_at
description
down_revision
id
instructions
model_name
name
owner_id
tools
up_revision
updated_at
workspace_id
Playground
Test the endpoints live
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.create(name="<value>", description="border freely down whenever broadly whenever restructure catalyze after", model_name="<value>", output={
"type": "REGRESSION",
"min": 0,
"min_description": "<value>",
"max": 1,
"max_description": "<value>",
}, instructions="<value>", tools=[
"<value 1>",
"<value 2>",
])
# Handle response
print(res)
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.create(name="<value>", description="border freely down whenever broadly whenever restructure catalyze after", model_name="<value>", output={
"type": "REGRESSION",
"min": 0,
"min_description": "<value>",
"max": 1,
"max_description": "<value>",
}, instructions="<value>", tools=[
"<value 1>",
"<value 2>",
])
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/judges \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"instructions": "consequat do",
"model_name": "reprehenderit ut dolore",
"name": "occaecat dolor sit",
"output": {
"options": [
{
"description": "nostrud",
"value": "aute aliqua aute commodo"
}
]
},
"tools": [
"irure"
]
}'curl https://api.mistral.ai/v1/observability/judges \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"instructions": "consequat do",
"model_name": "reprehenderit ut dolore",
"name": "occaecat dolor sit",
"output": {
"options": [
{
"description": "nostrud",
"value": "aute aliqua aute commodo"
}
]
},
"tools": [
"irure"
]
}'201
{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"instructions": "reprehenderit ut dolore",
"model_name": "occaecat dolor sit",
"name": "nostrud",
"output": {
"options": [
{
"description": "aute aliqua aute commodo",
"value": "irure"
}
]
},
"owner_id": "dolor",
"tools": [
"sunt"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nisi minim commodo irure minim"
}{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"instructions": "reprehenderit ut dolore",
"model_name": "occaecat dolor sit",
"name": "nostrud",
"output": {
"options": [
{
"description": "aute aliqua aute commodo",
"value": "irure"
}
]
},
"owner_id": "dolor",
"tools": [
"sunt"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nisi minim commodo irure minim"
}Get judge by id
GET /v1/observability/judges/{judge_id}
judge_id
200
Successful Response
base_revision
created_at
deleted_at
description
down_revision
id
instructions
model_name
name
owner_id
tools
up_revision
updated_at
workspace_id
Playground
Test the endpoints live
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.fetch(judge_id="19ae5cf8-2ade-4a40-b9d2-730aaebe8429")
# Handle response
print(res)
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.beta.observability.judges.fetch(judge_id="19ae5cf8-2ade-4a40-b9d2-730aaebe8429")
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'200
{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"instructions": "reprehenderit ut dolore",
"model_name": "occaecat dolor sit",
"name": "nostrud",
"output": {
"options": [
{
"description": "aute aliqua aute commodo",
"value": "irure"
}
]
},
"owner_id": "dolor",
"tools": [
"sunt"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nisi minim commodo irure minim"
}{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"instructions": "reprehenderit ut dolore",
"model_name": "occaecat dolor sit",
"name": "nostrud",
"output": {
"options": [
{
"description": "aute aliqua aute commodo",
"value": "irure"
}
]
},
"owner_id": "dolor",
"tools": [
"sunt"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nisi minim commodo irure minim"
}Update a judge
PUT /v1/observability/judges/{judge_id}
judge_id
description
instructions
model_name
name
tools
Playground
Test the endpoints live
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
mistral.beta.observability.judges.update(judge_id="9f28c7db-1fb7-4e1c-b137-d7039561ddb7", name="<value>", description="noteworthy and unless", model_name="<value>", output={
"type": "REGRESSION",
"min": 0,
"min_description": "<value>",
"max": 1,
"max_description": "<value>",
}, instructions="<value>", tools=[])
# Use the SDK ...
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
mistral.beta.observability.judges.update(judge_id="9f28c7db-1fb7-4e1c-b137-d7039561ddb7", name="<value>", description="noteworthy and unless", model_name="<value>", output={
"type": "REGRESSION",
"min": 0,
"min_description": "<value>",
"max": 1,
"max_description": "<value>",
}, instructions="<value>", tools=[])
# Use the SDK ...
curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X PUT \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"instructions": "consequat do",
"model_name": "reprehenderit ut dolore",
"name": "occaecat dolor sit",
"output": {
"options": [
{
"description": "nostrud",
"value": "aute aliqua aute commodo"
}
]
},
"tools": [
"irure"
]
}'curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X PUT \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"instructions": "consequat do",
"model_name": "reprehenderit ut dolore",
"name": "occaecat dolor sit",
"output": {
"options": [
{
"description": "nostrud",
"value": "aute aliqua aute commodo"
}
]
},
"tools": [
"irure"
]
}'Delete a judge
DELETE /v1/observability/judges/{judge_id}
judge_id
Playground
Test the endpoints live
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
mistral.beta.observability.judges.delete(judge_id="80deecde-e10f-409c-a13a-c242d3760f6e")
# Use the SDK ...
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
mistral.beta.observability.judges.delete(judge_id="80deecde-e10f-409c-a13a-c242d3760f6e")
# Use the SDK ...
curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X DELETE \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json'curl https://api.mistral.ai/v1/observability/judges/{judge_id} \
-X DELETE \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json'Run a saved judge on a conversation
POST /v1/observability/judges/{judge_id}/live-judging
judge_id
messages
properties
200
Successful Response
analysis
answer
Playground
Test the endpoints live
curl https://api.mistral.ai/v1/observability/judges/{judge_id}/live-judging \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"messages": [
[
null
]
]
}'curl https://api.mistral.ai/v1/observability/judges/{judge_id}/live-judging \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"messages": [
[
null
]
]
}'200
{
"analysis": "ipsum eiusmod",
"answer": "consequat do"
}{
"analysis": "ipsum eiusmod",
"answer": "consequat do"
}