Jobs

Edits a material line's quantity, price and/or note.

Requires ManageJobs and an Idempotency-Key header. PATCH semantics: only the fields you send change. Quantity changes only apply while the line is Planned (or a counter-sales line) and can't drop below the delivered amount; price edits are kept as a manual override unless they equal the resolved price (send clearPriceOverride to revert). A configured (add-on) line's price is changed through the app. Lines on a finalized invoice change only through Return Items. Notes may be edited even on billed lines.

patch/api/v1/jobs/{id}/items/{itemId}

Request

  • Base URL: https://app.flexonthejob.com
  • URL: https://app.flexonthejob.com/api/v1/jobs/{id}/items/{itemId}
  • Auth: HTTP bearer

Path parameters

idinteger required

Job id from GET /api/v1/jobs.

itemIdinteger required

Material line id (items[].id of the job).

Request body

quantityinteger nullable

New quantity, ≥ 1. Only Planned lines (or counter-sales lines) change; can't drop below what was already delivered. Omit to leave unchanged.

unitPricenumber double nullable

New unit price, ≥ 0, kept as a manual override unless it equals the resolved price. Omit to leave unchanged; set clearPriceOverride to revert to the tier/base price instead.

clearPriceOverrideboolean

Revert the line to its tier/base-resolved price (clears any manual override). Takes precedence over unitPrice. Default false.

notesstring nullable

New line note. Omit to leave unchanged; send an empty string to clear it. ≤ 500 characters.

Response

The updated job.

idinteger

Numeric id used in /api/v1/jobs/{id}. Unique within this organization. Example: 1042.

syncIdstring uuid

Stable cross-device identifier (GUID) — also the pagination cursor value. Example: 3f2504e0-4f89-11d3-9a0c-0305e82c3301.

jobNumberstring

Human-readable job number shown to staff and customers. Example: J-2026-0042.

jobTypestring nullable

Free-text job category configured by the organization. Example: Installation, Repair.

statusstring

Workflow status name. One of Draft, InspectionInProgress, Estimated, AwaitingOptionSelection, Scheduled, InProgress, Completed, Invoiced, Paid, Cancelled, Outstanding.

statusNamestring

Display label of the status as the organization has customised it (falls back to status). Example: On Site.

paymentStatusstring nullable

Payment state, independent of workflow status: Unpaid, Partial, Paid, Overpaid or Refunded.

customerIdinteger

Id of the customer the job is for (see /api/v1/customers/{id}).

customerNamestring

Customer display name at read time. Example: Acme Property Management.

descriptionstring nullable

Short description of the work. May be null for drafts.

createdAtstring date-time

When the job was created, ISO-8601 UTC. Example: 2026-09-01T14:03:22Z.

updatedAtstring date-time

Last modification time, ISO-8601 UTC (creation time when never modified). Use with the updatedSince filter to poll for changes.

scheduledDatestring date-time nullable

Scheduled start as the organization's local wall-clock time with no UTC offset (the date-time format here is a local time, not RFC 3339 with zone), e.g. 2026-09-08T08:30:00. Null when unscheduled.

scheduledDurationMinutesinteger nullable

Planned duration in minutes (default 120 when scheduled without an explicit duration). Null when unscheduled.

startDatestring date-time nullable

When work actually started, ISO-8601 UTC. Null until the job is in progress.

completedDatestring date-time nullable

When work was completed, ISO-8601 UTC. Null until completed.

totalPricenumber double

Customer price before tax, after the job-level discount, in the organization's currency (decimal, e.g. 1250.00).

notesstring nullable

Internal notes typed on the job itself (not the timeline). Null when empty.

materialPricenumber double

Sum of material lines before job-level discount and tax (decimal currency, e.g. 800.00).

laborPricenumber double

Sum of labor lines before job-level discount and tax (decimal currency).

customChargesTotalnumber double

Sum of custom charges before job-level discount and tax (decimal currency).

discountPercentnumber double nullable

Job-level discount as a percentage of every line (0–100), or null when a fixed amount / no discount applies.

discountAmountnumber double nullable

Job-level fixed discount amount (decimal currency), or null when a percentage / no discount applies.

taxRatenumber double

Tax rate locked in at creation, as a percentage (e.g. 8.25).

downPaymentAmountnumber double nullable

Money collected before invoicing (decimal currency), or null when none.

warningstring nullable

Set only on the POST /api/v1/jobs response when publishImmediately was requested but the job could not be published yet (it was created as a Draft), e.g. Not published yet: Cannot finalize estimate. All material items must have a unit price.. Always null on GET.

Changes

No recorded changes to this operation across all 1 revision of this API.