curl --request POST \
--url https://vaeroapi.com/v1/fine_tuning/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"training_files": [
"file-abc123",
"file-abc124"
],
"style_model": "vaero-2",
"suffix": "custom-name",
"match_output_length": false
}
'import requests
url = "https://vaeroapi.com/v1/fine_tuning/jobs"
payload = {
"training_files": ["file-abc123", "file-abc124"],
"style_model": "vaero-2",
"suffix": "custom-name",
"match_output_length": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
training_files: ['file-abc123', 'file-abc124'],
style_model: 'vaero-2',
suffix: 'custom-name',
match_output_length: false
})
};
fetch('https://vaeroapi.com/v1/fine_tuning/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vaeroapi.com/v1/fine_tuning/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'training_files' => [
'file-abc123',
'file-abc124'
],
'style_model' => 'vaero-2',
'suffix' => 'custom-name',
'match_output_length' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://vaeroapi.com/v1/fine_tuning/jobs"
payload := strings.NewReader("{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://vaeroapi.com/v1/fine_tuning/jobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vaeroapi.com/v1/fine_tuning/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}"
response = http.request(request)
puts response.read_body{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"style_model": "vaero-2",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"status": "queued",
"training_files": [
"file-abc123",
"file-abc124"
]
}{
"error": "Invalid model name."
}Create fine-tuning job
Creates a fine-tuning job which begins the process of creating a new model from a given dataset. The response includes details of the enqueued job, including job status and the name of the fine-tuned model once complete.
curl --request POST \
--url https://vaeroapi.com/v1/fine_tuning/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"training_files": [
"file-abc123",
"file-abc124"
],
"style_model": "vaero-2",
"suffix": "custom-name",
"match_output_length": false
}
'import requests
url = "https://vaeroapi.com/v1/fine_tuning/jobs"
payload = {
"training_files": ["file-abc123", "file-abc124"],
"style_model": "vaero-2",
"suffix": "custom-name",
"match_output_length": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
training_files: ['file-abc123', 'file-abc124'],
style_model: 'vaero-2',
suffix: 'custom-name',
match_output_length: false
})
};
fetch('https://vaeroapi.com/v1/fine_tuning/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vaeroapi.com/v1/fine_tuning/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'training_files' => [
'file-abc123',
'file-abc124'
],
'style_model' => 'vaero-2',
'suffix' => 'custom-name',
'match_output_length' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://vaeroapi.com/v1/fine_tuning/jobs"
payload := strings.NewReader("{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://vaeroapi.com/v1/fine_tuning/jobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vaeroapi.com/v1/fine_tuning/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"training_files\": [\n \"file-abc123\",\n \"file-abc124\"\n ],\n \"style_model\": \"vaero-2\",\n \"suffix\": \"custom-name\",\n \"match_output_length\": false\n}"
response = http.request(request)
puts response.read_body{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"style_model": "vaero-2",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"status": "queued",
"training_files": [
"file-abc123",
"file-abc124"
]
}{
"error": "Invalid model name."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Array of IDs of uploaded files to use for training.
["file-abc123", "file-abc124"]
The name of the model to fine-tune for styling. Options: 'vaero-2'.
"vaero-2"
A string of up to 16 characters that will be added to your fine-tuned model name. For example, a suffix of 'custom-name' would produce a model name like 'ftm-custom-name-0b5ace7e-ffb2-43cf-8a4d-0af17bc2b1d1'.
"custom-name"
Controls whether the model preserves the original input length. When true, the model outputs text matching the length of the input -- use this if you have curated the input text to contain all desired facts. When false, the model may shorten the output to reduce AI verbosity -- use this when the input is raw AI-generated text with minimal prompt engineering or post-processing.
Response
A fine-tuning job object.
The type of the object, always 'fine_tuning.job'.
"fine_tuning.job"
The ID of the fine-tuning job.
"ftjob-abc123"
The model being fine-tuned.
"vaero-2"
The Unix timestamp for when the job was created.
1721764800
The name of the fine-tuned model.
null
The organization ID associated with this fine-tuning job.
"org-123"
The current status of the job.
"queued"
Array of file IDs used for training.
["file-abc123", "file-abc124"]

