POST
/
fine_tuning
/
jobs
Create a fine-tuning job
curl --request POST \
  --url https://api.openai.com/v1/fine_tuning/jobs \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "gpt-4o-mini",
  "training_file": "file-abc123",
  "hyperparameters": {
    "batch_size": "auto",
    "learning_rate_multiplier": "auto",
    "n_epochs": "auto"
  },
  "suffix": null,
  "validation_file": "file-abc123",
  "integrations": [
    {
      "type": "wandb",
      "wandb": {
        "project": "my-wandb-project",
        "name": "<string>",
        "entity": "<string>",
        "tags": [
          "custom-tag"
        ]
      }
    }
  ],
  "seed": 42,
  "method": {
    "type": "supervised",
    "supervised": {
      "hyperparameters": {
        "batch_size": "auto",
        "learning_rate_multiplier": "auto",
        "n_epochs": "auto"
      }
    },
    "dpo": {
      "hyperparameters": {
        "beta": "auto",
        "batch_size": "auto",
        "learning_rate_multiplier": "auto",
        "n_epochs": "auto"
      }
    }
  },
  "metadata": {}
}'
{
  "id": "<string>",
  "created_at": 123,
  "error": {
    "code": "<string>",
    "message": "<string>",
    "param": "<string>"
  },
  "fine_tuned_model": "<string>",
  "finished_at": 123,
  "hyperparameters": {
    "batch_size": "auto",
    "learning_rate_multiplier": "auto",
    "n_epochs": "auto"
  },
  "model": "<string>",
  "object": "fine_tuning.job",
  "organization_id": "<string>",
  "result_files": [
    "file-abc123"
  ],
  "status": "validating_files",
  "trained_tokens": 123,
  "training_file": "<string>",
  "validation_file": "<string>",
  "integrations": [
    {
      "type": "wandb",
      "wandb": {
        "project": "my-wandb-project",
        "name": "<string>",
        "entity": "<string>",
        "tags": [
          "custom-tag"
        ]
      }
    }
  ],
  "seed": 123,
  "estimated_finish": 123,
  "method": {
    "type": "supervised",
    "supervised": {
      "hyperparameters": {
        "batch_size": "auto",
        "learning_rate_multiplier": "auto",
        "n_epochs": "auto"
      }
    },
    "dpo": {
      "hyperparameters": {
        "beta": "auto",
        "batch_size": "auto",
        "learning_rate_multiplier": "auto",
        "n_epochs": "auto"
      }
    }
  },
  "metadata": {}
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
model
required

The name of the model to fine-tune. You can select one of the supported models.

Example:

"gpt-4o-mini"

training_file
string
required

The ID of an uploaded file that contains training data.

See upload file for how to upload a file.

Your dataset must be formatted as a JSONL file. Additionally, you must upload your file with the purpose fine-tune.

The contents of the file should differ depending on if the model uses the chat, completions format, or if the fine-tuning method uses the preference format.

See the fine-tuning guide for more details.

Example:

"file-abc123"

hyperparameters
object
deprecated

The hyperparameters used for the fine-tuning job. This value is now deprecated in favor of method, and should be passed in under the method parameter.

suffix
string | null

A string of up to 64 characters that will be added to your fine-tuned model name.

For example, a suffix of "custom-model-name" would produce a model name like ft:gpt-4o-mini:openai:custom-model-name:7p4lURel.

Required string length: 1 - 64
validation_file
string | null

The ID of an uploaded file that contains validation data.

If you provide this file, the data is used to generate validation metrics periodically during fine-tuning. These metrics can be viewed in the fine-tuning results file. The same data should not be present in both train and validation files.

Your dataset must be formatted as a JSONL file. You must upload your file with the purpose fine-tune.

See the fine-tuning guide for more details.

Example:

"file-abc123"

integrations
object[] | null

A list of integrations to enable for your fine-tuning job.

seed
integer | null

The seed controls the reproducibility of the job. Passing in the same seed and job parameters should produce the same results, but may differ in rare cases. If a seed is not specified, one will be generated for you.

Required range: 0 <= x <= 2147483647
Example:

42

method
object

The method used for fine-tuning.

metadata
object | null

Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.

Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.

Response

200 - application/json

OK

The fine_tuning.job object represents a fine-tuning job that has been created through the API.

id
string
required

The object identifier, which can be referenced in the API endpoints.

created_at
integer
required

The Unix timestamp (in seconds) for when the fine-tuning job was created.

error
object | null
required

For fine-tuning jobs that have failed, this will contain more information on the cause of the failure.

fine_tuned_model
string | null
required

The name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.

finished_at
integer | null
required

The Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.

hyperparameters
object
required

The hyperparameters used for the fine-tuning job. This value will only be returned when running supervised jobs.

model
string
required

The base model that is being fine-tuned.

object
enum<string>
required

The object type, which is always "fine_tuning.job".

Available options:
fine_tuning.job
organization_id
string
required

The organization that owns the fine-tuning job.

result_files
string[]
required

The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.

status
enum<string>
required

The current status of the fine-tuning job, which can be either validating_files, queued, running, succeeded, failed, or cancelled.

Available options:
validating_files,
queued,
running,
succeeded,
failed,
cancelled
trained_tokens
integer | null
required

The total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.

training_file
string
required

The file ID used for training. You can retrieve the training data with the Files API.

validation_file
string | null
required

The file ID used for validation. You can retrieve the validation results with the Files API.

seed
integer
required

The seed used for the fine-tuning job.

integrations
Fine-Tuning Job Integration · object[] | null

A list of integrations to enable for this fine-tuning job.

Maximum length: 5
estimated_finish
integer | null

The Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.

method
object

The method used for fine-tuning.

metadata
object | null

Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.

Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.