---
title: "Replaces every updatable header field of a direct hire (BF-7509)."
method: PUT
path: "/v{version}/DirectHires/{jobId}"
tags: ["DirectHires"]
---

# Replaces every updatable header field of a direct hire (BF-7509).

`PUT /v{version}/DirectHires/{jobId}`

Required: candidateName, candidateTitle, startDate, mailInvoiceDate, candidateSalary, fee (a
percentage), mailInvoiceToAddress. Every other field that is absent or null is cleared - use PATCH
to change only some. Field names are those of GET /v1/DirectHires/{jobId}, so its data can be sent
back; keys that are not fields are ignored. A jobId in the body must equal the route; a clientId
must equal the stored client. totalInvoiceAmount and totalGrossProfit are computed by the server.
Once the direct hire is invoiced or voided its money (salary, fee, credit discount, sign-on bonus,
other GP reduction) cannot change. Invoice splits, custom fields, contacts and offer letters are
not changed. When every value equals the stored one nothing is written.

## Path parameters

- `jobId` integer, required
- `version` string, required

## Headers

- `company-id` string, required

## Request body

- DirectHiresContractsCommandsUpdatesPutDirectHireCommand
  - `jobId` integer
  - `clientId` integer, nullable
  - `candidateName` string, nullable
  - `candidateTitle` string, nullable
  - `startDate` string, date-time, nullable
  - `mailInvoiceDate` string, date-time, nullable
  - `candidateSalary` number, double, nullable
  - `fee` number, double, nullable
  - `creditDiscount` number, double, nullable
  - `creditDiscountNotes` string, nullable
  - `signOnBonus` number, double, nullable
  - `otherGPReduction` number, double, nullable
  - `reductionNotes` string, nullable
  - `invoiceMessage` string, nullable
  - `notes` string, nullable
  - `mailInvoiceToAddress` boolean, nullable
  - `addressId` integer, nullable
  - `contractId` integer, nullable
  - `remittanceId` integer, nullable
  - `paymentTermId` integer, nullable
  - `bonusPayableTo` string, nullable
  - `bonusAddress1` string, nullable
  - `bonusAddress2` string, nullable
  - `bonusCity` string, nullable
  - `bonusState` string, nullable
  - `bonusZipCode` string, nullable
  - `mailCheckOn` string, date-time, nullable

## Response `200`

Success

- DirectHiresContractsCommandsUpdatesUpdateDirectHireResponse
  - `isValid` boolean
  - `errors` string[], nullable
  - `warnings` string[], nullable
  - `info` string[], nullable
  - `message` string, nullable
  - `data` DirectHiresContractsCommandsUpdatesUpdatedDirectHireResponse
    - `jobId` integer

## Changes

- **2026-09-24** `b6c431404f24` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/bilflo/apis/bilflo-api/changes/v:version/DirectHires/:jobId/put.md)

---

[API](https://skmtc.dev/bilflo/apis/bilflo-api.md) · [All operations](https://skmtc.dev/bilflo/apis/bilflo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bilflo/apis/bilflo-api/revisions/5063eab95b17?raw)
