Forz API v2 — Changelog
The API version is 2026-04-30. Everything below is additive: no existing
field, endpoint or error code has been renamed or removed since that date, so
no client needs to change its Forz-Version header. A breaking change would
ship as a new dated version and be announced here first.
Each entry names what changed on the wire. Dates are when the change reached production.
2026-09
- Custom fields: list endpoints accept custom-field filters; attachment
custom fields can be set and cleared via
PUT/DELETE /api/v2/{resource}/{id}/custom_fields/{field_id}. Stricter input validation on custom field values. - Contacts: contact linkages to customers and sites are exposed; updating a contact no longer replaces an existing primary contact.
- Contacts:
phone_numbersexposed on contact resources. - Spec conformance: the OpenAPI document was audited against the live server and corrected where they disagreed.
- Notes and comments:
GET/POST /api/v2/{resource}/{id}/noteson every parent resource; unmatched/api/v2/*paths now returnproblem+json404s. - Authorization: policy denials report
auth.permission_denied; lookup catalogs are readable by non-admin keys.
2026-07
- Line items:
unit_priceis resolved server-side when omitted on new lines (from the item's price book and the customer's pricing). - Custom fields: fields marked required in the web app are enforced on
POST/PATCHfor jobs. - Estimates: labor visibility and taxability fields on estimate line items.
2026-06
- Jobs:
referenceis persisted; customerreferenceexposed. - Errors:
status.transition_invalidadded to the error code catalog. - List endpoints:
?sort=, field filters (eq,gte,lte,gt,lt,in) and?q=full-text search on every core list endpoint. Each endpoint documents its searchable fields on itsqparameter. - Writes: required fields and allowed values match the web app on every write endpoint.
- Numbering: client-supplied record numbers are respected, checked for collisions and immutable after creation.
- Identity:
GET /api/v2/mereturns the account, user, key scopes and resolvedapi_version. - Systems:
/api/v2/systemsendpoint; relationship integrity checks on foreign keys. - Lookups: statuses lookup;
custom_field_definitionsendpoint (renamed from its preview name).
2026-05
- Errors:
validation.no_topicsadded for webhook endpoints without topics. - Schema:
idand TypeID foreign-key columns documented as UUID strings. - Webhooks: control-plane and lifecycle topics renamed; lifecycle events pre-registered.
- Estimates: customer-facing labor view fields.
- Line items: shared
Lineitemschema across jobs, estimates, invoices and sales orders. - Labels and custom fields: exposed consistently across resources.
2026-04-30 — initial version
- Customers, sites, contacts, jobs, estimates, invoices, sales orders, items, tasks, leads, deals, projects.
- Read-only lookup endpoints.
assignee_idreplacesuser_idon the wire.- Every field annotated with descriptions, enums and
readOnly.