---
title: "List Training Jobs"
method: GET
path: "/felix/training-jobs"
tags: ["felix"]
---

# List Training Jobs

`GET /felix/training-jobs`

List training jobs for the authenticated user.

Supports pagination via ``limit`` and ``offset`` query parameters.
Optionally filter by status (requested, running, complete, deployed, errored).

## Query parameters

- `status` string, nullable
- `project_id` string, nullable
- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- TrainingJobListResponse — List of training jobs response.
  - `success` boolean, required
  - `training_jobs` TrainingJobResponse[], required
    - `id` string, required
    - `user_id` string, required
    - `project_id` string, nullable — Project ID this training job is associated with
    - `model_name` string, nullable
    - `datasets` DatasetReference[], required
      - `name` string, required — Dataset name
      - `version` string, nullable — Version (latest if omitted)
    - `base_model` string, required
    - `validation_data_percentage` number, required
    - `nr_epochs` integer, required
    - `learning_rate` number, required
    - `batch_size` integer, required
    - `seed` integer, nullable — Effective reproducibility seed for Modal decoder training. Null for Fireworks, unknown, and other providers that cannot honor this contract.
    - `trained_model_path` string, nullable
    - `job_reference` string, nullable
    - `instance_type` string, nullable
    - `status` string, required
    - `normalized_status` string, nullable — Canonical status alias for compatibility handling (requested, running, complete, deployed, failed, cancelled)
    - `is_terminal_status` boolean, nullable — Whether this status is terminal for polling loops
    - `error_message` string, nullable
    - `created_at` string, required
    - `updated_at` string, required
    - `started_at` string, nullable
    - `completed_at` string, nullable
    - `model_auto_selected` boolean, nullable
    - `model_selection_reason` string, nullable
    - `task_type` string, nullable — Task type derived from training datasets: 'ner', 'classification', 'custom', or 'decoder'
    - `training_type` string, nullable — Raw training method as persisted: 'lora', 'qlora', or 'full'.
    - `model_kind` 'lora' | 'full', nullable — Normalized fine-tune kind: 'lora' for adapters (lora/qlora) or 'full' for merged weights. Null when the persisted training type is unrecognised -- clients must not claim a kind in that case.
    - `artifact_ready` boolean, nullable — Whether an artifact location is recorded, so there is something to serve.
    - `provider_ready` boolean, nullable — Whether a provider is already serving this artifact. False is not a deployment blocker: promotion provisions or re-warms a provider.
    - `is_deployable` boolean, nullable — Whether this job passes server-side deployability validation for its own project. Authoritative -- the same check the deployment endpoints enforce.
    - `deployability_reason` string, nullable — Why the job is not deployable (e.g. 'job_incomplete', 'missing_artifact', 'provider_incompatible'). Null when deployable.
    - `labels` string[], nullable — Merged labels from training datasets (entity types for NER, class labels for classification)
    - `example` string, nullable — Sample text to pre-load into inference input
    - `metrics` object, nullable — Training and evaluation metrics dictionary. Contains final_training_loss, final_validation_loss, best_validation_loss from training logs, and optional evaluation metrics (f1_score, precision_score, recall_score, accuracy) if an evaluation has been run.
    - `version_number` string, nullable — Version number for this training job (e.g., '1', '2', '3')
    - `root_job_id` string, nullable — ID of the original/root training job this version derives from
    - `provider_deployments` object, nullable — Provider-specific deployment metadata written by the training monitor, keyed by provider: {"modal": {...}}.
    - `provider_name` string, nullable — Training provider that handled this job (e.g. 'modal'). Jobs predating a provider removal carry an 'archived_<provider>' label.
    - `progress_percent` integer, nullable — Overall training completion percentage (0-100). Updated live during training.
    - `current_epoch` integer, nullable — Epoch currently in progress (1-indexed). Updated live during training.
    - `deployment_status` string, nullable, required — Deprecated. Always returns None -- deployment_status no longer exists. Kept for backward compat with clients that read this field.
  - `count` integer, required
  - `total` integer — Total number of matching jobs (before pagination).
  - `has_more` boolean — True when more results exist beyond this page.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/revisions/b92f75fd3b61/schema)
