Welcome to the Coperniq API release notes. This section highlights noteworthy changes across endpoints, schemas, and docs.

Recent highlights

  • New: AHJs — GET /ahjs (search, filter, and lat+lng geo lookup), GET /ahjs/{id}, and PATCH /ahjs/{id} to update custom property values. v2 mirrors these under /v2 with the standard success envelope.
  • Updated: GET /properties — now documents the ahj record type (custom AHJ properties only) and adds an isCustom boolean to every property to distinguish custom columns from built-in standard ones.
  • New: Sections — line items on projects, invoices, and bills can now be grouped into named sections (matching quotes and work orders); read responses expose sectionName per line item.
  • New: Vendors — full CRUD via GET/POST /vendors, GET/PATCH/DELETE /vendors/{vendorId}, GET /vendors/search, and many-to-many project linking via POST/DELETE /projects/{projectId}/vendors/{vendorId}. Vendor-specific fields: vendorType (enum), website, and projectIds.
  • New: Labels — GET /labels (filter by type), POST /labels, GET /labels/{labelId}. type is WORK (work orders) or ASSET. v2 mirrors these under /v2 with the standard success envelope.
  • New: Assets — GET /assets (filter by account_id), POST /assets, GET/PATCH /assets/{assetId} (set isArchived: true via PATCH to archive). v2 mirrors these under /v2 with the standard success envelope.

Looking for a specific date? See the entries below.

Naming updates & new features

Object renames

Coperniq’s API terminology now matches the UI:

Old nameNew nameEndpoints
ClientsAccounts/accounts, /accounts/{accountId}
RequestsOpportunities/opportunities, /opportunities/{opportunityId}
CommentsNotes/{resource}/{id}/comments (unchanged); new PATCH /notes/{noteId}

Existing /{resource}/{id}/comments paths are unchanged — no updates to existing integrations are required. A new unified PATCH /notes/{noteId} endpoint is also available. The renamed terms appear in operation names, tags, and SDK method names going forward.

Retrieve archived records

All GET list and get-by-ID endpoints for projects, opportunities, accounts, and workflows now support an include_archived query parameter.

GET /projects?include_archived=true
GET /opportunities?include_archived=true
GET /accounts?include_archived=true
GET /workflows?include_archived=true

By default (include_archived=false) only active records are returned — existing behavior is unchanged. Set include_archived=true to include archived records in the response.

Form template endpoints

Two new read-only endpoints let you retrieve form templates and their structure:

  • GET /form-templates — List all workflow form templates for your company.
  • GET /form-templates/{formTemplateId} — Get a specific form template by ID, including its field definitions.

These are useful for dynamically building form submissions or inspecting available form structures before creating a form instance.