- If
true
the job is not spawned, instead the query returns a handful of useful metadata for the user to perform sanity checks (seeLegacyJobMetadataOut
response). - Otherwise, the job is started and the query returns the job ID along with some of the
input parameters (see
JobOut
response).













Fine Tuning Endpoints
Fine-tuning API












Examples
Real world code examples
Get Fine Tuning Jobs
GET /v1/fine_tuning/jobs
Get a list of fine-tuning jobs for your organization and user.
200
OK
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.fineTuning.jobs.list({});
console.log(result);
}
run();
import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({
apiKey: "MISTRAL_API_KEY",
});
async function run() {
const result = await mistral.fineTuning.jobs.list({});
console.log(result);
}
run();
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.list(page=0, page_size=100, created_by_me=False)
# Handle response
print(res)
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.list(page=0, page_size=100, created_by_me=False)
# Handle response
print(res)
curl https://api.mistral.ai/v1/fine_tuning/jobs \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
curl https://api.mistral.ai/v1/fine_tuning/jobs \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
200
{
"total": 87
}
{
"total": 87
}
Create Fine Tuning Job
POST /v1/fine_tuning/jobs
Create a new fine-tuning job, it will be queued for processing.
dry_run
auto_start
This field will be required in a future release.
classifier_targets
invalid_sample_skip_percentage
Default Value: 0
job_type
model
The name of the model to fine-tune.
repositories
suffix
A string that will be added to your fine-tuning model name. For example, a suffix of "my-great-model" would produce a model name like ft:open-mistral-7b:my-great-model:xxx...
training_files
validation_files
A list containing the IDs of uploaded files that contain validation data. If you provide these files, the data is used to generate validation metrics periodically during fine-tuning. These metrics can be viewed in checkpoints
when getting the status of a running fine-tuning job. The same data should not be present in both train and validation files.
200
OK
CompletionJobOut
ClassifierJobOut
LegacyJobMetadataOut
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.fineTuning.jobs.create({
model: "Camaro",
hyperparameters: {
learningRate: 0.0001,
},
});
console.log(result);
}
run();
import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({
apiKey: "MISTRAL_API_KEY",
});
async function run() {
const result = await mistral.fineTuning.jobs.create({
model: "Camaro",
hyperparameters: {
learningRate: 0.0001,
},
});
console.log(result);
}
run();
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.create(model="Camaro", hyperparameters={
"learning_rate": 0.0001,
}, invalid_sample_skip_percentage=0)
# Handle response
print(res)
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.create(model="Camaro", hyperparameters={
"learning_rate": 0.0001,
}, invalid_sample_skip_percentage=0)
# Handle response
print(res)
curl https://api.mistral.ai/v1/fine_tuning/jobs \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-d '{
"hyperparameters": {},
"model": "ministral-3b-latest"
}'
curl https://api.mistral.ai/v1/fine_tuning/jobs \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE' \
-d '{
"hyperparameters": {},
"model": "ministral-3b-latest"
}'
200
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
Get Fine Tuning Job
GET /v1/fine_tuning/jobs/{job_id}
Get a fine-tuned job details by its UUID.
job_id
The ID of the job to analyse.
200
OK
CompletionDetailedJobOut
ClassifierDetailedJobOut
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.fineTuning.jobs.get({
jobId: "c167a961-ffca-4bcf-93ac-6169468dd389",
});
console.log(result);
}
run();
import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({
apiKey: "MISTRAL_API_KEY",
});
async function run() {
const result = await mistral.fineTuning.jobs.get({
jobId: "c167a961-ffca-4bcf-93ac-6169468dd389",
});
console.log(result);
}
run();
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.get(job_id="c167a961-ffca-4bcf-93ac-6169468dd389")
# Handle response
print(res)
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.get(job_id="c167a961-ffca-4bcf-93ac-6169468dd389")
# Handle response
print(res)
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id} \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id} \
-X GET \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
200
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
Cancel Fine Tuning Job
POST /v1/fine_tuning/jobs/{job_id}/cancel
Request the cancellation of a fine tuning job.
job_id
The ID of the job to cancel.
200
OK
CompletionDetailedJobOut
ClassifierDetailedJobOut
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.fineTuning.jobs.cancel({
jobId: "6188a2f6-7513-4e0f-89cc-3f8088523a49",
});
console.log(result);
}
run();
import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({
apiKey: "MISTRAL_API_KEY",
});
async function run() {
const result = await mistral.fineTuning.jobs.cancel({
jobId: "6188a2f6-7513-4e0f-89cc-3f8088523a49",
});
console.log(result);
}
run();
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.cancel(job_id="6188a2f6-7513-4e0f-89cc-3f8088523a49")
# Handle response
print(res)
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.cancel(job_id="6188a2f6-7513-4e0f-89cc-3f8088523a49")
# Handle response
print(res)
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id}/cancel \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id}/cancel \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
200
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
Start Fine Tuning Job
POST /v1/fine_tuning/jobs/{job_id}/start
Request the start of a validated fine tuning job.
job_id
200
OK
CompletionDetailedJobOut
ClassifierDetailedJobOut
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.fineTuning.jobs.start({
jobId: "56553e4d-0679-471e-b9ac-59a77d671103",
});
console.log(result);
}
run();
import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({
apiKey: "MISTRAL_API_KEY",
});
async function run() {
const result = await mistral.fineTuning.jobs.start({
jobId: "56553e4d-0679-471e-b9ac-59a77d671103",
});
console.log(result);
}
run();
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.start(job_id="56553e4d-0679-471e-b9ac-59a77d671103")
# Handle response
print(res)
from mistralai import Mistral
import os
with Mistral(
api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
res = mistral.fine_tuning.jobs.start(job_id="56553e4d-0679-471e-b9ac-59a77d671103")
# Handle response
print(res)
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id}/start \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
curl https://api.mistral.ai/v1/fine_tuning/jobs/{job_id}/start \
-X POST \
-H 'Authorization: Bearer YOUR_APIKEY_HERE'
200
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}
{
"auto_start": false,
"created_at": 87,
"hyperparameters": {},
"id": "ipsum eiusmod",
"model": "ministral-3b-latest",
"modified_at": 14,
"status": "QUEUED",
"training_files": [
"consequat do"
]
}