---
title: "List jobs"
method: GET
path: "/v1/fine_tuning/jobs"
tags: ["fine-tuning"]
---

# List jobs

`GET /v1/fine_tuning/jobs`

Return the key's jobs, newest first.

## Query parameters

- `limit` integer — Jobs per page. Default 20, max 100.
- `after` string — Job id cursor. Returns jobs created before it.

## Response `200`

A page of jobs.

- FineTuningJobList — A page of fine-tuning jobs owned by the API key.
  - `object` string, required — Always `list` for a page of jobs.
  - `data` FineTuningJob[], required — The page of jobs, newest first.
    - `id` string, required — Job id, prefixed `ftjob-`.
    - `object` string, required — Always `fine_tuning.job`.
    - `model` string, required — What the job trained from: the reflex you warm-started from, or the from-scratch base for a cold start.
    - `created_at` integer, required — Unix timestamp (seconds) at creation.
    - `finished_at` integer, nullable, required — Unix timestamp at a terminal state, else null.
    - `fine_tuned_model` string, nullable, required — Served model name once `succeeded` (the `suffix`, or the job id if none).
    - `status` 'queued' | 'validating_files' | 'running' | 'succeeded' | 'failed' | 'cancelled', required — `validating_files` is the data-prep phase for `generate`/`label_data` jobs.
    - `labels` string[], required — The classes this job trained on.
    - `trained_examples` integer, required — Number of training examples.
    - `hyperparameters` object, required — Fully managed.
      - `n_epochs` integer, required — Passes over the training set.
      - `batch_size` string, required — Batch size, always `auto`.
      - `learning_rate_multiplier` string, required — Learning-rate multiplier, always `auto`.
    - `result` object, nullable, required — `{accuracy, f1_score}` when `succeeded`, else null. Each value may be null.
      - `accuracy` number, nullable, required — Held-out accuracy of the trained model.
      - `f1_score` number, nullable, required — Held-out macro F1 of the trained model.
    - `error` object, nullable, required — `{code, message, param}` when `failed`, else null.
      - `code` string, nullable, required — Machine-readable failure code.
      - `message` string, nullable, required — Human-readable reason the training job failed.
      - `param` string, nullable, required — The request field that caused the failure.
    - `suffix` string, nullable, required — The suffix supplied at creation, else null.
  - `has_more` boolean, required — True when more jobs exist past this page.

## Other responses

- `400` — Malformed request — missing or invalid fields.
- `401` — Missing or invalid API key.
- `429` — Rate limited — retry after the interval in the Retry-After header.
- `500` — Internal error — safe to retry with backoff.

---

[API](https://skmtc.dev/morphllm/apis/morph-api.md) · [All operations](https://skmtc.dev/morphllm/apis/morph-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/morphllm/morph-api/revisions/b9a74274b2ab/schema)
