Update patient details
Edit a patient's name, contact, address and patient-form answers.
PUT /v1/patients/:patientId/basic-detailsA full replace of the patient's demographic record. Use it to keep Medos in step with your own CRM or EMR — a corrected surname, a new address, an updated intake form.
Not OTP-gated: you are addressing a patient record by its id, which you can only have obtained through a gated lookup or a booking you made.
This is a PUT, not a PATCH
Fields you omit are cleared, not preserved. Read the patient first — from search-by-phone — then send the merged record back.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
patientId | number | Yes | The patient record. |
Body
| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | Must not be blank. |
middleName | string | No | |
lastName | string | No | |
email | string | No | |
countryCode | string | No | Dial code with the +. |
phoneNumber | string | No | |
dob | string | No | YYYY-MM-DD. |
age | number | No | An alternative to dob when the patient does not know their date of birth. |
gender | string | No | MALE, FEMALE, OTHER. |
bloodGroup | string | No | The clinic's blood-group codes. |
patientAddress | object | No | addressLine1, addressLine2, completeAddress, city, state, country, zipcode, landmark, countryCode, phoneNumber. Send the address's own id to edit it in place. |
patientFormValues | object | No | Answers to the clinic's patient form, keyed by field id. |
Try it
/v1/patients/:patientId/basic-detailsPath
Body
PUT /v1/patients//basic-details{}https://api.medos.oneUse a dedicated test key, and put your browser's address on its allowlist
A Developer API key authenticates on its own, so it only works from the addresses registered against it — and this page calls from your browser, not your servers. Unless your own public address is on the list you get a 403 naming it, which is the allowlist doing its job. Your browser may also reach us over IPv6 even when your server does not, so the address in the error is often not the one you expected. The key here is kept in memory only and never written to storage, but create a test key for it and deactivate that key when you are done.
Request
curl -sX PUT "https://api.medos.one/v1/patients/774/basic-details" \
-H "x-api-key: $MEDOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Asha",
"lastName": "Nair-Menon",
"email": "asha@example.com",
"countryCode": "+91",
"phoneNumber": "9876543210",
"dob": "1991-04-02",
"gender": "FEMALE",
"patientAddress": {
"addressLine1": "12 Residency Road",
"city": "Bengaluru",
"state": "Karnataka",
"country": "India",
"zipcode": "560025"
},
"patientFormValues": { "occupation": "Architect" }
}'Response
The updated record:
{
"id": 774,
"firstName": "Asha",
"lastName": "Nair-Menon",
"email": "asha@example.com",
"countryCode": "+91",
"phoneNumber": "9876543210",
"dob": "1991-04-02",
"age": 35,
"gender": "FEMALE",
"bloodGroup": null,
"patientAddress": {
"id": 991,
"addressLine1": "12 Residency Road",
"city": "Bengaluru",
"state": "Karnataka",
"country": "India",
"zipcode": "560025"
},
"patientFormValues": { "occupation": "Architect" }
}Common failures
| Status | Cause |
|---|---|
400 | firstName blank or missing. |
400 | A patientFormValues entry that fails the clinic's form validation — a required field left empty, or a value outside an allowed set. |
404 | No patient with that id in your workspace. |
Creating a patient is a different call
There is no create route on this surface. A new patient comes into existence
through the find-or-create patientPayload on any booking route — see
book-appointment.