












Beta Observability Campaigns Endpoints
(beta) Create and manage evaluation campaigns.












Examples
Real world code examples
Get all campaigns
GET /v1/observability/campaigns
page_size
page
q
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.campaigns.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.campaigns.list(page_size=50, page=1)
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/campaigns \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/campaigns \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'200
{
"campaigns": {
"count": 87
}
}{
"campaigns": {
"count": 87
}
}Create and start a new campaign
POST /v1/observability/campaigns
201
Successful Response
created_at
deleted_at
description
id
max_nb_events
name
owner_id
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.campaigns.create(search_params={
"filters": {
"field": "<value>",
"op": "lt",
"value": "<value>",
},
}, judge_id="9b501b9f-3525-44a7-a51a-5352679be9ed", name="<value>", description="shakily triangular scotch requirement whether once oh", max_nb_events=232889)
# 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.campaigns.create(search_params={
"filters": {
"field": "<value>",
"op": "lt",
"value": "<value>",
},
}, judge_id="9b501b9f-3525-44a7-a51a-5352679be9ed", name="<value>", description="shakily triangular scotch requirement whether once oh", max_nb_events=232889)
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/campaigns \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"judge_id": "consequat do",
"max_nb_events": 87,
"name": "reprehenderit ut dolore",
"search_params": {
"filters": null
}
}'curl https://api.mistral.ai/v1/observability/campaigns \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"description": "ipsum eiusmod",
"judge_id": "consequat do",
"max_nb_events": 87,
"name": "reprehenderit ut dolore",
"search_params": {
"filters": null
}
}'201
{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"judge": {
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "reprehenderit ut dolore",
"id": "occaecat dolor sit",
"instructions": "nostrud",
"model_name": "aute aliqua aute commodo",
"name": "irure",
"output": {
"options": [
{
"description": "dolor",
"value": "sunt"
}
]
},
"owner_id": "nisi minim commodo irure minim",
"tools": [
"do do sint mollit"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "occaecat"
},
"max_nb_events": 87,
"name": "fugiat",
"owner_id": "non nisi proident Lorem",
"search_params": {
"filters": null
},
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nostrud anim"
}{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"judge": {
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "reprehenderit ut dolore",
"id": "occaecat dolor sit",
"instructions": "nostrud",
"model_name": "aute aliqua aute commodo",
"name": "irure",
"output": {
"options": [
{
"description": "dolor",
"value": "sunt"
}
]
},
"owner_id": "nisi minim commodo irure minim",
"tools": [
"do do sint mollit"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "occaecat"
},
"max_nb_events": 87,
"name": "fugiat",
"owner_id": "non nisi proident Lorem",
"search_params": {
"filters": null
},
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nostrud anim"
}Get campaign by id
GET /v1/observability/campaigns/{campaign_id}
campaign_id
200
Successful Response
created_at
deleted_at
description
id
max_nb_events
name
owner_id
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.campaigns.fetch(campaign_id="fd7945d6-00e2-4852-9054-bcbb968d7f98")
# 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.campaigns.fetch(campaign_id="fd7945d6-00e2-4852-9054-bcbb968d7f98")
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id} \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/campaigns/{campaign_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",
"judge": {
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "reprehenderit ut dolore",
"id": "occaecat dolor sit",
"instructions": "nostrud",
"model_name": "aute aliqua aute commodo",
"name": "irure",
"output": {
"options": [
{
"description": "dolor",
"value": "sunt"
}
]
},
"owner_id": "nisi minim commodo irure minim",
"tools": [
"do do sint mollit"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "occaecat"
},
"max_nb_events": 87,
"name": "fugiat",
"owner_id": "non nisi proident Lorem",
"search_params": {
"filters": null
},
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nostrud anim"
}{
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "ipsum eiusmod",
"id": "consequat do",
"judge": {
"created_at": "2025-10-07T20:56:01.974Z",
"deleted_at": null,
"description": "reprehenderit ut dolore",
"id": "occaecat dolor sit",
"instructions": "nostrud",
"model_name": "aute aliqua aute commodo",
"name": "irure",
"output": {
"options": [
{
"description": "dolor",
"value": "sunt"
}
]
},
"owner_id": "nisi minim commodo irure minim",
"tools": [
"do do sint mollit"
],
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "occaecat"
},
"max_nb_events": 87,
"name": "fugiat",
"owner_id": "non nisi proident Lorem",
"search_params": {
"filters": null
},
"updated_at": "2025-10-07T20:56:01.974Z",
"workspace_id": "nostrud anim"
}Delete a campaign
DELETE /v1/observability/campaigns/{campaign_id}
campaign_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.campaigns.delete(campaign_id="90e07b45-8cf7-4081-8558-a786779e039d")
# Use the SDK ...
from mistralai.client import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
mistral.beta.observability.campaigns.delete(campaign_id="90e07b45-8cf7-4081-8558-a786779e039d")
# Use the SDK ...
curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id} \
-X DELETE \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json'curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id} \
-X DELETE \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-H 'Content-Type: application/json'Get campaign status by campaign id
GET /v1/observability/campaigns/{campaign_id}/status
campaign_id
200
Successful Response
status
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.campaigns.fetch_status(campaign_id="4b1dd9a5-8dc9-48e1-bd11-29443e959902")
# 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.campaigns.fetch_status(campaign_id="4b1dd9a5-8dc9-48e1-bd11-29443e959902")
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id}/status \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id}/status \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'200
{
"status": "RUNNING"
}{
"status": "RUNNING"
}Get event ids that were selected by the given campaign
GET /v1/observability/campaigns/{campaign_id}/selected-events
campaign_id
page_size
page
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.campaigns.list_events(campaign_id="305b5e46-a650-4d8a-8b5b-d23ef90ec831", 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.campaigns.list_events(campaign_id="305b5e46-a650-4d8a-8b5b-d23ef90ec831", page_size=50, page=1)
# Handle response
print(res)
curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id}/selected-events \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'curl https://api.mistral.ai/v1/observability/campaigns/{campaign_id}/selected-events \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'200
{
"completion_events": {
"count": 87
}
}{
"completion_events": {
"count": 87
}
}