> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prets.io/llms.txt
> Use this file to discover all available pages before exploring further.

# API Changelog

> Changes to the public Prets API, updated weekly.

<Update label="July 13–19, 2026" description="A richer correlation-claims response, with a deprecated field." tags={["Correlation claims", "Deprecation"]}>
  **🔗 Correlation claims**

  * `POST /v1/correlation-claims/resolve`: a matched response now includes a `correlationClaim` object with `id` (the canonical Prets correlation claim identifier) and `uuid` (its lowercase UUID encoding). **(Additive)**
  * `POST /v1/correlation-claims/resolve`: the top-level `correlationClaimId` field on a matched response is now deprecated in favor of `correlationClaim.id`. It is still returned for now. **(Deprecation)**
</Update>

<Update label="July 6–12, 2026" description="A new correlation-claims endpoint for partner intake integrations." tags={["Correlation claims"]}>
  **🔗 Correlation claims**

  * Added `POST /v1/correlation-claims/resolve`. It matches a consumer by `email` and/or install address (`postalCode` plus `houseNumber`) and returns `{ data: { matched: true, correlationClaimId } }` when a match is found, or `{ data: { matched: false } }` when none is. The `correlationClaimId` is a stable identifier for use in partner intake integrations. Returns `401` when unauthenticated and `403` when the calling organization is not permitted to resolve correlation claims. **(Additive)**
</Update>

<Update label="June 29 – July 5, 2026" description="Subsidy line items, quote portal deeplinks, and more forgiving postal code validation." tags={["Quotes"]}>
  **🧾 Quotes**

  * `POST /v1/quotes` and `GET /v1/quotes/{quoteId}`: added a new `subsidy` line item type. It carries a negative `totalInclTax` (a reduction applied to the quote total) and a required `incentiveCodes` array, whose codes must match incentive codes declared on the work line items. **(Additive)**
  * `POST /v1/quotes` and `GET /v1/quotes/{quoteId}`: added `links.portalQuote`, a deeplink to the quote in the merchant portal. Present only for organization API keys. **(Additive)**
  * `POST /v1/quotes`: Dutch postal codes with a lowercase letter suffix (for example `8101xp`) are now accepted and normalized to the `1234 AB` format. Requests that previously failed validation now succeed. **(Additive)**
</Update>

<Update label="June 22–28, 2026" description="A richer quote financing contract, a renamed financing webhook event, and a standardized error format." tags={["Quotes", "Events", "Breaking"]}>
  **🧾 Quotes**

  * `GET /v1/quotes/{quoteId}` and `POST /v1/quotes`: the `financing` object is now always present and richer. Added `phase`, `method` (array of `loan` / `own_funds` / `subsidy`), and `waitingOn`. **(Breaking)**
  * `financing.subStatus` is now required and uses a `type` discriminator with `none`, `on_hold`, and `canceled` arms (the previous `extra_info_needed` arm was removed). **(Breaking)**
  * `financing.status` values changed: `financing_completed` → `completed`, and `cancelled_by_customer` was split into `canceled_by_consumer` and `offer_canceled`. Added `additional_documents_required` and `invoice_pending`. **(Breaking)**
  * New `on_hold` reasons: `installation_blocked`, `general_question`, and `unknown`. **(Additive)**

  ***

  **🔔 Events**

  * The `quote.financing.cancelled` webhook event was renamed to `quote.financing.canceled`. **(Breaking)**

  ***

  **⚠️ Errors**

  * All endpoints now return a standardized error envelope: `{ error: { type, code, message, param?, requestId } }`. The `message` field is unchanged; `type`, `code`, `param`, and `requestId` are new. **(Additive)**
</Update>

<Update label="June 15–21, 2026" description="Stricter validation for quote incentive codes and terms." tags={["Quotes", "Breaking"]}>
  **🧾 Quotes**

  * `POST /v1/quotes`: `lineItems[].incentiveCodes` and `terms` no longer accept values containing a semicolon (`;`). Requests that include a semicolon in these fields now fail validation. **(Breaking)**
</Update>
