Versioning & Deprecation
The PartnerHub API evolves in place: we add to it continuously, but we don't break
integrations that already work. There is no /v1 versus
/v2 to choose or migrate between — you always call the current
API. This page is our backwards-compatibility contract: what may change without notice,
what counts as a breaking change, and how we announce and phase out anything we retire.
Compatibility: what can change
We may make backwards-compatible changes at any time, without prior notice. Anything that would break an existing integration is a breaking change, and we only make those through the deprecation process below.
Backwards-compatible (non-breaking) — may ship at any time
- New API endpoints and resources.
- New optional fields in a response.
- New optional request parameters, where leaving them out keeps the existing behaviour.
- New possible values for a field — for example a new status. Build your integration to tolerate values it doesn't recognise yet.
- Wording changes to human-readable messages (not the HTTP status code or the documented error shape).
Breaking — only through the deprecation process
- Removing or renaming a field, endpoint, or resource.
- Changing the type or format of an existing field.
- Adding a new required request parameter, or making an existing optional one required.
- Removing a value a field could return, or changing the meaning of an existing value.
- Changing how you authenticate, or the HTTP status code returned for an existing outcome.
Build defensively. Ignore fields you don't use, and tolerate new fields and values you don't recognise. Integrations that do this are never affected by a backwards-compatible change.
How we announce deprecations
When we need to make a breaking change, we deprecate the old behaviour first and keep it working for a transition period. We announce it in two places:
-
Response headers on the affected
endpoint, so your integration can detect a deprecation automatically — even if nobody read
this page:
Deprecation: true— this endpoint, or a field it returns, is deprecated.Sunset: <date>— the date (an HTTP-date, RFC 8594) after which the old behaviour may stop working.Link: <url>; rel="successor-version"— where the replacement lives, when there is one.X-Deprecated-Fields— the specific response fields being retired, when only fields (not the whole endpoint) are affected.- A
Warning: 299header, and sometimes a note in the response body, for a change you need to act on during the transition.
- This documentation — the deprecation and its replacement are described on the relevant reference page.
HTTP/1.1 200 OK
Deprecation: true
Sunset: Thu, 01 Oct 2026 00:00:00 GMT
Link: </api/financing_cases>; rel="successor-version"
Minimum transition period
We keep a deprecated endpoint or field working for
at least three months after we announce
it — the date we commit to is always in the Sunset header, in the
future. For larger changes, such as retiring a whole endpoint or field, the window is
typically longer (around six months). We never remove something without a future
Sunset date.
What to do: watch your responses for the
Deprecation and Sunset headers — log
them, or alert on them — and migrate to the documented replacement before the sunset date.
Current transitions
As of August 2026
Two changes are in their transition period right now. If your integration uses them, plan
your migration before the dates below. Always treat the Sunset
header on your own responses as the authoritative date.
- Idempotency-Key becomes required on checkout — 2026-09-06
-
From 2026-09-06,
POST /api/carts/{id}/checkoutrequires anIdempotency-Keyheader. Until then a request without one still succeeds but returns aDeprecation/Warningheader. Send a unique key (a UUID v4) per checkout so retries are safe. See the Cart reference. - The /api/quotes endpoint is being retired — Sunset 2026-10-01
-
/api/quotesis superseded by/api/financing_cases(Sunset: 2026-10-01). The checkout response fieldsquoteId/quoteLinkare likewise superseded byfinanceCaseId/financeCaseLink. Migrate to the Financing Case reference.
The API version
The API is versionless in its URLs. Every endpoint lives under
/api — there is no /v1 or
/v2 to pin to or migrate between. You always call the current
API, and the compatibility contract above is what protects your integration.
The machine-readable API description at /api/docs.json does carry
a version field. That is the
release version of the PartnerHub
platform — a calendar-based build tag such as 2026.06.22. It tells
you which build you're talking to; it is not a contract version, and it does not change how you
call the API.
The API handbook and this portal may also carry their own document version — that is the
version of the documentation, separate again from the platform release. None of these numbers
is something your code needs to send or match: rely on the compatibility contract and the
Deprecation / Sunset headers instead.