GET
GET /fine_tuning/jobs — OpenAI API
OpenAI API key (required); https://api.openai.com/v1
OpenAI APIList fine-tuning jobs
- Base URL
- https://api.openai.com/v1
- Auth
- Authorization: Bearer <OPENAI_API_KEY>
- Last verified
- 2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 212 tokens · Vary: Accept
→ 212 tokens · Vary: Accept
Critical gotchas
The Responses API is the primary interface for new text and tool workflows; Chat Completions remains a separate compatibility API.
Audio transcription uploads use multipart form data rather than a JSON request body.
cURL
curl -X GET 'https://api.openai.com/v1/fine_tuning/jobs?after=example-after&limit=20&metadata=example-metadata' \ -H "Authorization: Bearer $OPENAI_API_KEY"
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| after | query | string | No | Identifier for the last job from the previous pagination request. |
| limit | query | integer | No | Number of fine-tuning jobs to retrieve. |
| metadata | query | object | No | Optional metadata filter. To filter, use the syntax `metadata[k]=v`. Omitting the parameter or passing an empty object applies no metadata filter. An empty value, such as `metadata[k]=`, filters for that key with an empty string value. To select jobs with null metadata, send the literal query string `metadata=null`. Nullable caller types do not specify how a client serializes null for a deep-object parameter. Use a raw query parameter if the client omits null. Do not combine the two query forms. |
Response 200 OK
{
"data": [
{
"id": "string",
"created_at": 0,
"error": {
"code": "string",
"message": "string",
"param": "string"
},
"fine_tuned_model": "string",
"finished_at": 0,
"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": 0,
"training_file": "string",
"validation_file": "string",
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "[recursive or deeply nested schema]",
"name": "[recursive or deeply nested schema]",
"entity": "[recursive or deeply nested schema]",
"tags": "[recursive or deeply nested schema]"
}
}
],
"seed": 0,
"estimated_finish": 0,
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"batch_size": "[recursive or deeply nested schema]",
"learning_rate_multiplier": "[recursive or deeply nested schema]",
"n_epochs": "[recursive or deeply nested schema]"
}
},
"dpo": {
"hyperparameters": {
"beta": "[recursive or deeply nested schema]",
"batch_size": "[recursive or deeply nested schema]",
"learning_rate_multiplier": "[recursive or deeply nested schema]",
"n_epochs": "[recursive or deeply nested schema]"
}
},
"reinforcement": {
"grader": {
"type": "[recursive or deeply nested schema]",
"name": "[recursive or deeply nested schema]",
"input": "[recursive or deeply nested schema]",
"reference": "[recursive or deeply nested schema]",
"operation": "[recursive or deeply nested schema]"
},
"hyperparameters": {
"batch_size": "[recursive or deeply nested schema]",
"learning_rate_multiplier": "[recursive or deeply nested schema]",
"n_epochs": "[recursive or deeply nested schema]",
"reasoning_effort": "[recursive or deeply nested schema]",
"compute_multiplier": "[recursive or deeply nested schema]",
"eval_interval": "[recursive or deeply nested schema]",
"eval_samples": "[recursive or deeply nested schema]"
}
}
},
"metadata": {}
}
],
"has_more": true,
"object": "list"
} Get a free OpenAI API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.