---
title: "List training events"
method: GET
path: "/v1/fine_tuning/jobs/{job_id}/events"
tags: ["fine-tuning"]
---

# List training events

`GET /v1/fine_tuning/jobs/{job_id}/events`

Return lifecycle events interleaved with the loss curve, oldest first. `type` is `metrics` for a loss point and `message` for a lifecycle line. Add `?stream=true` for a live Server-Sent Events stream.

## Path parameters

- `job_id` string, required — The `ftjob-` prefixed id whose training log you want.

## Query parameters

- `stream` 'true' — Set `true` for a live SSE stream instead of a JSON list.

## Response `200`

The job's events.

- FineTuningJobEventList — A page of training events for one job.
  - `object` string, required — Always `list` for a page of events.
  - `data` FineTuningJobEvent[], required — The job's events, oldest first.
    - `id` string, required — Event id, prefixed `ftevent-`.
    - `object` string, required — Always `fine_tuning.job.event`.
    - `created_at` integer, required — Unix timestamp (seconds) when the event was emitted.
    - `level` 'info' | 'warn' | 'error', required — Severity of the event.
    - `message` string, required — Human-readable event line.
    - `type` 'message' | 'metrics', required — `metrics` for a loss-curve point, `message` for a lifecycle line.
    - `data` object, required — For a metrics event: `{epoch, step, train_loss}`.
  - `has_more` boolean, required — True when more events exist past this page.

## Other responses

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

## Changes

- **2026-08-13** `b9a74274b2ab` — 2 warning, 21 info
  - removed the optional property `error/type` from the response with the `401` status
  - removed the optional property `error/type` from the response with the `404` status
  - api operation id `listReflexJobEvents` removed and replaced with `listFineTuningJobEvents`
  - the endpoint scheme security `bearerAuth` was added to the API
  - …19 more

[Change history](https://skmtc.dev/morphllm/apis/morph-api/changes/v1/fine_tuning/jobs/:job_id/events/get.md)

---

[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/681b2f463d11/schema)
