Private preview of the new site. Not live.

changes.create

Write a change order on a job: a priced change to its scope, from lines a worker wrote (never filled in by AI). Discount lines take work out; a change order may total less than 0 (a credit). Tax: the shop default rate unless tax_rate_id is given (null for no tax). It starts as a draft; send it to the customer with changes.send.

WhoAgents can call this
RESTPOST /v1/change-orders
MCP toolchanges_create
Writesyes, send an Idempotency-Key
AreaField work (checklists, forms, time, notes, change orders, subcontractors)

When to use it

A change order is a priced change to a job's scope: extra work, or a credit for work taken out. A worker writes the lines (changes.create; never fill prices in yourself).

What to tell the owner

Say what you did in plain words and what happens next.

Input

FieldTypeRequired
job_idstring (uuid)yes
titlestringyes
descriptionstringno
linesarrayyes
lines[].descriptionstringyes
lines[].quantitynumberyes
lines[].unit_price_minorintegeryes
lines[].kindstring (one of item, fee, discount)no
lines[].taxablebooleanno
tax_rate_id['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')']no

Example

POST https://doingwork.work/v1/change-orders
content-type: application/json
Idempotency-Key: 3f1c...

{
  "job_id": "00000000-0000-4000-8000-000000000000",
  "title": "...",
  "lines": [
    {
      "description": "40 gallon gas heater, installed",
      "quantity": "...",
      "unit_price_minor": 50000
    }
  ]
}

Output

JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are {code, message, status}.

Errors

CodeStatusWhat to do
invalid_input, invalid_token, rate_limitedCan happen on any call. See errors.