---
title: "Update Employee Training Record"
method: PUT
path: "/api/v1/training/record/{employeeTrainingRecordId}"
tags: ["Training", "Public API"]
---

# Update Employee Training Record

`PUT /api/v1/training/record/{employeeTrainingRecordId}`

Updates an existing employee training record. The 'completed' date (yyyy-mm-dd) is required; all other fields are optional. Returns the updated TrainingRecord with HTTP 201. Returns 405 when the record cannot be updated. The authenticated caller must have permission to edit trainings for the employee.

OAuth Scopes: training.write

## Path parameters

- `employeeTrainingRecordId` integer, required

## Request body

- object
  - `completed` string, required — Completed is the only required field and must be in yyyy-mm-dd format. The other parameters are optional.
  - `cost` object — Optional cost for the training record.
    - `currency` string — ISO 4217 currency code (e.g. 'USD').
    - `amount` string — Monetary amount as a decimal string (e.g. '100.00').
  - `instructor` string — Name of the training instructor.
  - `hours` number — Number of hours for the training.
  - `credits` number — Credits earned for the training.
  - `notes` string — Optional notes about the training record.

## Response `201`

Updated

- TrainingRecord
  - `id` integer — The ID of the training record.
  - `employeeId` string — The internal employee ID of the employee associated with the training, returned as a string.
  - `completed` string, date — Completed is a date in the format yyyy-mm-dd.
  - `notes` string, nullable — Notes left on the training record. Null when not set.
  - `instructor` string, nullable — Name of the instructor. Null when not set or when disabled by company training settings.
  - `credits` string, nullable — Credits earned for the training record, returned as a string. Null when not set or when disabled by company training settings.
  - `hours` string, nullable — Hours associated with the training record, returned as a string. Null when not set or when disabled by company training settings.
  - `cost` string, nullable — The cost in the format '{amount} {currency}', e.g. '50.00 USD'. May be null or empty string when not set.
  - `type` union — The training type ID. Returned as a string on update/list responses, and as an integer on create responses.
    - string — String form
    - integer — Integer form

## Other responses

- `400` — Bad request parameters.
- `401` — Unauthorized. Invalid API credentials.
- `403` — Insufficient user permissions or API access is not turned on.
- `404` — Bad request url.
- `405` — Training record could not be updated.
- `500` — Internal server error.

---

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