/v1/partner/, and there is no version header. Within v1 changes are additive, so a well-built integration keeps working when fields, events or codes are added. Every change is listed below by date and split into Breaking, Added and Changed, newest first.
Last reviewed: 2026-11-04
How is the Partner API versioned?
- The version is in the path:
/v1/partner/.... There is no version header. - Within v1, changes are additive: new endpoints, new optional request fields, new response fields, new event types, new error codes and new enum values.
- A change that would break a working integration, such as removing or renaming a field or changing its meaning, ships under a new path version, with notice.
- The only exceptions are the changes listed under Breaking below. They were made in v1 in the first weeks of the Partner API, and each one names exactly what to update.
How do I build for additive change?
- Ignore response fields you do not know.
- Ignore webhook event types you do not know (see Webhooks).
- Treat unknown enum values, such as a new
fulfilment.route, as “other” rather than failing. - Branch on error
code, never onmessage(see Errors).
schema_version and schema_hash; see Questionnaires and schema.
Changelog
Standard Webhooks, answer values removed from information requests
Breaking
-
Webhooks follow the Standard Webhooks specification, so any Standard Webhooks library verifies them. The old headers, all prefixed with
Hi-Doctorand a hyphen, are replaced:The signed message is now{webhook-id}.{webhook-timestamp}.{body}, the HMAC key is the base64-decoded part of the secret afterwhsec_, and the signature is base64 rather than hex. The tolerance stays 300 seconds. Update your verifier with the code in Verify the signature. -
Information requests no longer return answer values.
answer_entriesandanswer_document_idsare removed from the information-request response, in the API and in the Business portal; each request now carriesanswered_question_keys,answer_countandanswer_document_count. If you read the removed fields, keep your own record of what the patient answered. See Read the request.
Added
- Consent withdrawal is recorded with
POST /v1/partner/patients/{id}/consent-withdrawal/. - Published the full Partner API reference, generated from the Partner API itself: products, questionnaires, files, consultations, patients, information requests, prescriptions, webhooks and test mode.
- Questionnaires take an optional
locale(en,esorzh, falling back to English);schema_hashis per locale and any supported locale’s hash is accepted on submission. See Questionnaires and schema. - Submissions accept an optional
patient.national_identifier, validated per product country and never echoed. See National identifier. - Submissions accept an optional
patient.identity_document(type,number,issuing_state) and never echoed. A doctor who needs it asks with the information request reasonidentity_document_required, answered withidentity_document. See Identity document. - Business portal: cancel a consultation before a doctor opens it, and see the team roster. See Business portal.
- Responses carry
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset. - The Business portal shows the network each API key was last used from and exports the usage ledger as CSV.
Changed
- Webhook secrets are
whsec_followed by standard base64 of 32 random bytes. Existing secrets were converted in place and keep their key bytes, so you do not need to rotate. If you stored an older secret (whsec_followed by URL-safe base64 without padding), convert it yourself: in the part afterwhsec_, replace-with+and_with/, then append=until the length is a multiple of 4. For example, in Python:"whsec_" + base64.b64encode(base64.urlsafe_b64decode(old[6:] + "=" * (-len(old[6:]) % 4))).decode(). Rotating the secret also gives you a new one in the current format. - Consent: the reference lists
trueas the only accepted value of each consent flag, andconsent.ipmust be an IPv4 or IPv6 address ornull; any other value fails with422 invalid_request. See Consent. - A skipped answer entry carries only its locator,
skipand, optionally, the step’s ownstep_id; any other member fails with422 invalid_answers. - An information-request answer entry is located by
question_key, or by its aliaskeywhenquestion_keyis left out, empty ornull; whenquestion_keyis set,keyis ignored. - An answer to a step that the other answers hide now fails with
422 unexpected_question_key. - Information-request answers: an answer to a request withdrawn by a consent withdrawal fails with
409 info_request_not_open; the body must carry an answer, an upload or the identity document (an empty body fails with422 invalid_requestfirst);uploadstakes at most 10 unique ids, and a duplicate fails with422 upload_unusable. See Answer the request. - Every information-request answer entry needs a
question_key, or its aliaskey; the alias applies only to information-request answers, and a consultation submission entry withoutquestion_keyfails with422 invalid_answers. Identity document errors keep their nested field for structural problems, such aspatient.identity_document.type. - Test advance validates the shape of
reason_codeandquestion_keyson every request, before the transition. See Test mode. prescription.activedoes not check expiry; compareexpires_atyourself. See Prescriptions.- The reference now states the backend’s request constraints: required strings must contain a non-blank character,
limitis 1 to 100 (default 50, outside it400 invalid_request), a skipped answer entry carries novalue,valuesoroption_inputs(422 invalid_answers), and an information-requestidentity_documenthas onlytype,numberandissuing_state. patient.address.line2is stored withline1; together they are limited to 200 characters.- Expired uploads no longer count towards the storage quota and are deleted by a periodic cleanup.
- Error messages no longer repeat submitted answer values or identifiers. An unexpected answer key is still named in
errors[].question_key. cancellablenow applies exactly the cancel rule, andversionadvances on every change to the public consultation resource except a change to a product’s display name.
Partner guides published
Added
- Published the partner guides: authentication, test mode, questionnaires and schema, submission, photos and files, consultation lifecycle, prescriptions, webhooks, information requests, errors, rate limits, idempotency, pagination, the Business portal, security and compliance, and the go-live checklist.
Next steps
Partner API overview
What the Partner API does and how to get access.
Developer FAQ
Short answers to common integration questions.