Template gallery / change-order

change-order

Letter-size construction change order: added and deducted scope, the delta against the original contract sum, schedule impact, and owner/contractor signature blocks.

chromium default PDF 16 top-level fields 1 unit per page

Rendered preview of the change-order template
Rendered by Galley from the example payload below, at 816px wide , scale 2.

Fields

The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.

Field Type Required Description
change_order_number string required Sequential change order reference for this contract.
issued_on string (date) required
contract_number string optional
contract_date string (date) optional Date of the original signed contract.
currency string optional
accent string optional
reason string optional Why the change is needed. Written for the homeowner.
terms string optional
contractor object { name, address, phone, email, … } required
owner object { name, address, email } required
project object { name, address } optional
items array of object { description, detail, labor, material, … } required Added or deducted scope. Use a negative `amount` for a credit.
original_contract_sum number required Contract sum before any change orders.
prior_change_orders_total number optional Net of all previously authorized change orders.
schedule_impact_days integer optional Calendar days added to (or, if negative, removed from) the contract time.
new_completion_date string (date) optional

Default render options

Applied unless you override them. Options are part of the cache key.

page_size "Letter"
margin "0.5in"
print_background true

Example payload

This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.

example.jsonjson
{
  "change_order_number": "CO-003",
  "issued_on": "2026-09-16",
  "contract_number": "HR-2026-118",
  "contract_date": "2026-07-08",
  "currency": "USD",
  "reason": "Opening the joist bay under the tub exposed water damage to the subfloor and to two joists that was not visible at the time of the estimate. The owner also elected to upgrade the shower valve and to delete the recessed niche.",
  "contractor": {
    "name": "Halyard Remodeling LLC",
    "address": "18 Dock St, Fernandina Beach, FL 32034",
    "phone": "(904) 555-0142",
    "email": "office@halyardremodel.test",
    "license_number": "CBC1259847",
    "license_state": "FL"
  },
  "owner": {
    "name": "Dana and Marcus Reyes",
    "address": "412 Ash Street, Fernandina Beach, FL 32034",
    "email": "dana.reyes@example.test"
  },
  "project": {
    "name": "Hall bathroom remodel",
    "address": "412 Ash Street, Fernandina Beach, FL 32034"
  },
  "items": [
    {
      "description": "Replace damaged subfloor and sister two joists",
      "detail": "Sister 2x8 to joists 4 and 5, new 3/4 in. tongue-and-groove decking over the affected bay, treated for moisture.",
      "labor": 1240,
      "material": 385,
      "amount": 1625
    },
    {
      "description": "Upgrade to thermostatic shower valve",
      "detail": "Owner-selected Delta thermostatic valve in place of the pressure-balance valve in the original scope.",
      "labor": 180,
      "material": 465,
      "amount": 645
    },
    {
      "description": "Delete recessed shower niche",
      "detail": "Credit for the niche shown on the original scope. Wall will be tiled flat.",
      "amount": -540
    }
  ],
  "original_contract_sum": 24888.2,
  "prior_change_orders_total": 1150,
  "schedule_impact_days": 4,
  "new_completion_date": "2026-11-06",
  "terms": "This change order is part of the contract identified above. All other terms and conditions remain in force. Work under this change order does not begin until both parties have signed, and the amount is added to the next scheduled draw."
}

Render it

With an API keyshell
curl -sS https://api.galleyrender.com/v1/render \
  -H "Authorization: Bearer $GALLEY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
  "template": "change-order@1",
  "format": "pdf",
  "data": "… the example payload above …"
}'
With no API key, over MCPshell
# No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "render",
      "arguments": {
        "template": "change-order",
        "format": "pdf",
        "data": { … see the example payload above … }
      }
    }
  }'

Pin the version — change-order@1 — in anything you ship. Publishing a new version never changes an old one. Render endpoint reference →

Try a free tool

Renders the example payload on the production service. No account, no key.

JSON Schema

schema.json (16 top-level properties)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Change order",
  "type": "object",
  "required": [
    "change_order_number",
    "issued_on",
    "contractor",
    "owner",
    "original_contract_sum",
    "items"
  ],
  "additionalProperties": true,
  "properties": {
    "change_order_number": {
      "type": "string",
      "description": "Sequential change order reference for this contract.",
      "examples": [
        "CO-003"
      ]
    },
    "issued_on": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-09-16"
      ]
    },
    "contract_number": {
      "type": "string",
      "examples": [
        "HR-2026-118"
      ]
    },
    "contract_date": {
      "type": "string",
      "format": "date",
      "description": "Date of the original signed contract.",
      "examples": [
        "2026-07-08"
      ]
    },
    "currency": {
      "type": "string",
      "default": "USD",
      "examples": [
        "USD"
      ]
    },
    "accent": {
      "type": "string",
      "examples": [
        "#b45309"
      ]
    },
    "reason": {
      "type": "string",
      "description": "Why the change is needed. Written for the homeowner.",
      "examples": [
        "Opening the joist bay exposed water damage to the subfloor and two joists that was not visible at the time of the estimate."
      ]
    },
    "terms": {
      "type": "string",
      "examples": [
        "This change order is part of the contract above. All other terms remain in force. Work under this change order does not begin until both parties sign."
      ]
    },
    "contractor": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Halyard Remodeling LLC"
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "18 Dock St, Fernandina Beach, FL 32034"
          ]
        },
        "phone": {
          "type": "string",
          "examples": [
            "(904) 555-0142"
          ]
        },
        "email": {
          "type": "string",
          "format": "email",
          "examples": [
            "office@halyardremodel.test"
          ]
        },
        "license_number": {
          "type": "string",
          "examples": [
            "CBC1259847"
          ]
        },
        "license_state": {
          "type": "string",
          "examples": [
            "FL"
          ]
        },
        "logo_url": {
          "type": "string",
          "format": "uri",
          "examples": [
            "https://example.com/logo.png"
          ]
        }
      }
    },
    "owner": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Dana and Marcus Reyes"
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "412 Ash Street, Fernandina Beach, FL 32034"
          ]
        },
        "email": {
          "type": "string",
          "format": "email",
          "examples": [
            "dana.reyes@example.test"
          ]
        }
      }
    },
    "project": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Hall bathroom remodel"
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "412 Ash Street, Fernandina Beach, FL 32034"
          ]
        }
      }
    },
    "items": {
      "type": "array",
      "minItems": 1,
      "description": "Added or deducted scope. Use a negative `amount` for a credit.",
      "items": {
        "type": "object",
        "required": [
          "description",
          "amount"
        ],
        "properties": {
          "description": {
            "type": "string",
            "examples": [
              "Replace damaged subfloor and sister two joists"
            ]
          },
          "detail": {
            "type": "string",
            "examples": [
              "Sister 2x8 to joists 4 and 5, new 3/4 in. tongue-and-groove decking over the affected bay."
            ]
          },
          "labor": {
            "type": "number",
            "examples": [
              1240
            ]
          },
          "material": {
            "type": "number",
            "examples": [
              385
            ]
          },
          "amount": {
            "type": "number",
            "description": "Signed delta for the line. Negative is a credit to the owner.",
            "examples": [
              1625
            ]
          }
        }
      }
    },
    "original_contract_sum": {
      "type": "number",
      "minimum": 0,
      "description": "Contract sum before any change orders.",
      "examples": [
        24888.2
      ]
    },
    "prior_change_orders_total": {
      "type": "number",
      "description": "Net of all previously authorized change orders.",
      "examples": [
        1150
      ]
    },
    "schedule_impact_days": {
      "type": "integer",
      "description": "Calendar days added to (or, if negative, removed from) the contract time.",
      "examples": [
        4
      ]
    },
    "new_completion_date": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-11-06"
      ]
    }
  }
}