---
title: "Update Compensation Benchmark"
method: PUT
path: "/api/v1/compensation/benchmarks"
tags: ["Compensation Benchmarking", "Public API"]
---

# Update Compensation Benchmark

`PUT /api/v1/compensation/benchmarks`

Updates an existing compensation benchmark identified by `id`. The `id` of an existing benchmark can be obtained from `GET /api/v1/compensation/benchmarks/details`. Request fields that are omitted or `null` are cleared on the stored benchmark; callers should send the full benchmark payload to preserve values. On success, returns the saved benchmark row wrapped in `savedBenchmark` together with a status `message`.

OAuth Scopes: compensation_benchmarks.write

## Request body

- object
  - `id` string, required — ID of the benchmark to update.
  - `currencyCode` string, required — ISO 4217 currency code for the benchmark values.
  - `mjlJobCode` string — Mercer Job Library code associated with this benchmark. Stored on the benchmark as `mercerJobCode`.
  - `benchmarkValue` number, required — Benchmark median value.
  - `benchmarkMin` number, required — Benchmark minimum value.
  - `benchmarkMax` number, required — Benchmark maximum value.
  - `benchmarkSource` string — Free-text label describing where the benchmark came from.
  - `externalJobTitle` string
  - `externalLocation` string
  - `externalLevel` string
  - `externalJobDescription` string
  - `companiesSurveyed` integer
  - `employeesSurveyed` integer
  - `sourceId` string — ID of the benchmark source from `GET /api/v1/compensation/benchmarks/sources`.
  - `sourceDate` string — Date the benchmark source data applies to.
  - `dataYear` string — Year of the underlying survey data. Omitting this field clears `data_year` on the stored benchmark, so callers updating a Mercer benchmark should resend the existing value.
  - `externalCountry` string
  - `externalSecondaryLocation` string
  - `externalCompanySize` string
  - `externalIndustry` string

## Response `200`

Object containing the saved benchmark row and a status message.

- object
  - `savedBenchmark` object
    - `id` string
    - `jobTitleId` string
    - `jobLocationId` string, nullable
    - `mercerJobCode` string, nullable
    - `benchmarkSource` string, nullable
    - `currencyCode` string, nullable
    - `benchmarkValue` number, nullable
    - `benchmarkMin` number, nullable
    - `benchmarkMax` number, nullable
    - `externalJobTitle` string, nullable
    - `externalLocation` string, nullable
    - `externalLevel` string, nullable
    - `externalJobDescription` string, nullable
    - `companiesSurveyed` integer, nullable
    - `employeesSurveyed` integer, nullable
    - `sourceId` string, nullable
    - `sourceDate` string, nullable
    - `dataYear` string, nullable
    - `externalCountry` string, nullable
    - `externalSecondaryLocation` string, nullable
    - `externalCompanySize` string, nullable
    - `externalIndustry` string, nullable
  - `message` string

## Other responses

- `403` — The authenticated caller lacks permission to modify compensation benchmarks.
- `500` — Unexpected server error while saving the benchmark.

---

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