patients

Create a patient

Creates a patient and, always, a new owner (client) for it: the client object fills in the owner's details, and omitting it creates an empty placeholder owner. An existing client cannot be reused through this endpoint. All fields are optional and stored as given. Returns the patient with the new owner embedded.

Not idempotent and not deduplicated: Vetnio does not check for an existing patient with the same name or identifier, so repeating the call creates another patient and owner. Search the patient list by identifier first if duplicates matter. An invalid dateOfBirth fails with 500 and may leave the new owner behind without a patient.

post/workspaces/{workspaceId}/patients

Request

  • Base URL
    https://vetnio.com/api/v2
  • URL
    https://vetnio.com/api/v2/workspaces/{workspaceId}/patients
  • Auth
    HTTP bearer

Path parameters

workspaceIdstring required

Identifier of the workspace (clinic) that owns the patients and clients. The caller must be a member of it; patients and clients are shared by all members of the workspace.

Example:furunculotic-loud-chihuahua

Request body

namestring

The animal's name. Free text; Vetnio does not enforce uniqueness.

speciesstring

Species, free text. The Vetnio web app stores the English species name, followed by - <breed> when a breed is chosen (for example Dog or Dog - Labrador Retriever); patients synced from a practice-management system may use that system's values.

breedstring

Breed, free text.

dateOfBirthstring

Date of birth as an ISO-8601 calendar date (YYYY-MM-DD). Stored as a date, so other formats are rejected by the database.

genderstring

Sex and neuter status, free text. The Vetnio web app uses Male, Female, Male Neutered and Female Neutered; use the same values so the patient list's gender filter and the UI stay consistent.

weightstring

Body weight as free text including the unit, as the web app writes it (for example 24.5 kg). Not parsed or converted.

identifierstring

The animal's identifier, typically a microchip (transponder) number, but it can be a tattoo, registration number or practice-management-system id. Free text, not unique; matched by the patient list search.

insurancestring

Name of the animal's insurance company, free text.

Example request

{
  "name": "Bella",
  "species": "Dog - Labrador Retriever",
  "breed": "Labrador Retriever",
  "dateOfBirth": "2018-04-12",
  "gender": "Female Neutered",
  "weight": "24.5 kg",
  "identifier": "752098100012345",
  "insurance": "Agria",
  "client": {
    "name": "Alex Morgan",
    "email": "alex.morgan@example.com",
    "address": "12 Harbour Street, Riverside",
    "zipCode": "114 51",
    "phoneNumbers": [
      "+46701234567"
    ]
  }
}

Response

The newly created patient with its embedded client.

idstring required

Patient id (UUID), generated by Vetnio.

namestring nullable required

The animal's name. Free text; Vetnio does not enforce uniqueness. null when not recorded.

speciesstring nullable required

Species, free text. The Vetnio web app stores the English species name, followed by - <breed> when a breed is chosen (for example Dog or Dog - Labrador Retriever); patients synced from a practice-management system may use that system's values. null when not recorded.

breedstring nullable required

Breed, free text. null when not recorded.

dateOfBirthstring nullable required

Date of birth (YYYY-MM-DD), or null when not recorded.

genderstring nullable required

Sex and neuter status, free text. The Vetnio web app uses Male, Female, Male Neutered and Female Neutered; use the same values so the patient list's gender filter and the UI stay consistent. null when not recorded.

weightstring nullable required

Body weight as free text including the unit, as the web app writes it (for example 24.5 kg). Not parsed or converted. null when not recorded.

identifierstring nullable required

The animal's identifier, typically a microchip (transponder) number, but it can be a tattoo, registration number or practice-management-system id. Free text, not unique; matched by the patient list search. null when not recorded.

insurancestring nullable required

Name of the animal's insurance company, free text. null when the animal is uninsured or it is not recorded.

clientIdstring nullable required

Id of the owner (client). Patients created through the API always have one (an empty placeholder owner when no owner details were given); null only for patients created without an owner by other flows.

createdAtstring nullable required

When the patient was created (ISO-8601). May be null for very old records.

updatedAtstring nullable required

When the patient was last changed (ISO-8601). Set on every update, even one that changes nothing, and by practice-management-system syncs.

Example response

{
  "id": "f2a3b4c5-d6e7-4890-fabc-012345678901",
  "name": "Bella",
  "species": "Dog - Labrador Retriever",
  "breed": "Labrador Retriever",
  "dateOfBirth": "2018-04-12",
  "gender": "Female Neutered",
  "weight": "24.5 kg",
  "identifier": "752098100012345",
  "insurance": "Agria",
  "clientId": "e1f2a3b4-c5d6-4789-efab-901234567890",
  "createdAt": "2026-09-12T08:41:07.000Z",
  "updatedAt": "2026-10-01T14:03:22.000Z",
  "client": {
    "id": "e1f2a3b4-c5d6-4789-efab-901234567890",
    "name": "Alex Morgan",
    "address": "12 Harbour Street, Riverside",
    "zipCode": "114 51",
    "phoneNumbers": [
      "+46701234567"
    ],
    "email": "alex.morgan@example.com"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.