Reference · PATCH /v1/jobs/:id

Update job

Update job
Edit a job you previously created while it’s still in an editable state (typically before scheduling). Send only the fields you want to change. Returns 204 No Content on success.

Request

curl -X PATCH -H "Authorization: Bearer fi_pk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Annual service (rescheduled)",
    "notes": "Customer asked to push back a week.",
    "start_time": "2026-07-08T09:00:00+10:00",
    "custom_fields": { "scope_of_work": "Install + commissioning" }
  }' \
  https://<host>/v1/jobs/21172159

Response

HTTP/1.1 204 No Content

Fields

title
string
Replace the title. 1–200 chars. Example: `"Annual service (rescheduled)"`.
notes
string
Replace the office-scoped job log. This field is for the scheduling and admin team — not seen by the field tech. The new value overwrites the old one, so append on your side if you want to preserve history. ≤ 2000 chars.
start_time
ISO 8601
New preferred start time. Example: `"2026-07-08T09:00:00+10:00"`.
end_time
ISO 8601
New preferred end time.
purchase_order_number
string
Replace the PO number. ≤ 100 chars.
external_id
string
Replace your reference. ≤ 36 chars.
custom_fields
object<string, string>
Update one or more custom-field values. Send only the keys you want to change. Example: `{ "scope_of_work": "Install + commissioning" }`.

Errors

400 invalid-body400 unknown-custom-field400 field-not-writable401 unauthorized404 not-found409 editing-locked429 rate-limited

409 editing-locked means the job has moved past the editable states (e.g. scheduling has confirmed it). At that point, contact your internal coordinator instead. 404 covers both 'no such job' and 'this job isn’t yours' — they look the same from the outside.