---
title: "Update Training Job"
method: PATCH
path: "/v1/training-jobs/{job_id}"
tags: ["training-jobs"]
---

# Update Training Job

`PATCH /v1/training-jobs/{job_id}`

## Request

- Base URL: `https://api.pioneer.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pioneer.ai/v1/training-jobs/{job_id}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/pioneer/apis/brain-api/docs/v1/training-jobs/:job_id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Patch a training job. Currently exposes only ``project_id``.

Delegates to :func:`services.projects.movement.assign_resource_to_project`
which owns the visibility check, target-project gating, and the
service-role ``UPDATE``. Send ``project_id: null`` to unassign the job
from its project.

Movement is **label-only**: only ``training_jobs.project_id`` changes.
Dependent rows that carry their own ``project_id`` (``deployments``,
``inferences``, ``project_evaluation_runs``) are intentionally not cascaded.
Callers needing aggregate-model movement must update dependents
explicitly.

## Path parameters

- `job_id` string, required

## Request body

- TrainingJobUpdate: Thin PATCH body for ``PATCH /felix/training-jobs/{job_id}``. Exposes only ``project_id``. Send ``null`` to unassign the training job from its current project. Unknown fields are rejected with HTTP 422. Movement semantics: this endpoint moves only the ``training_jobs.project_id`` label. It does NOT cascade ``project_id`` updates to dependent rows (``deployments``, ``inferences``, ``project_evaluation_runs``) which each carry their own ``project_id``. Those records remain attached to their original project. Callers needing aggregate-model movement must update the dependents explicitly.
  - `project_id` string, nullable: Project ID (UUID) to assign the training job to, or null to unassign.

## Response `200`

Successful Response

- UpdateResourceProjectResponse: Response for project assignment update.
  - `success` boolean, required
  - `message` string, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-24** `0e5e86e2bae5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pioneer/apis/brain-api/changes/v1/training-jobs/:job_id/patch.md)

---

[API](https://skmtc.dev/pioneer/apis/brain-api.md) - [All operations](https://skmtc.dev/pioneer/apis/brain-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pioneer/apis/brain-api/revisions/0e5e86e2bae5?raw)
