patients

List patients

Returns one page of the workspace's patients, each with its owner's name. Combine searchQuery (a case-insensitive substring of the patient name, identifier or owner name) with the optional filters; all supplied conditions must match. Ordered by sort, newest first by default. Paginate with page and pageSize and use totalCount to know when to stop. Every workspace member can list all patients.

get/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

Query parameters

pageinteger

1-based page number. A page past the end returns an empty patients array.

Example:1
pageSizeinteger

Patients per page, 1 to 100.

Example:20
searchQuerystring

Case-insensitive substring matched against the patient name, the patient identifier (for example a microchip number) and the owner's name. Up to 200 characters, used as typed (not trimmed); % and _ act as wildcards. Species is not searched; use speciesFilter.

Example:Bella
speciesFilterstring

Species to filter by, case-insensitive. A known species name in any language Vetnio supports (for example Dog, dog or Hund) matches every stored spelling of that species, with or without a - <breed> suffix. Any other value must match the stored species exactly (case-insensitive), optionally followed by - <breed>.

Example:Dog
insuranceFilterstring

Insurance company name; must match the stored value exactly, ignoring case.

Example:Agria
genderFilterstring

Sex value; must match the stored value exactly, ignoring case (for example Female Neutered does not match Female).

Example:Female
hasWeightFilter'yes' | 'no'

Filter on whether a weight is recorded:

  • yes — only patients with a non-empty weight.
  • no — only patients without a weight. Omit to include both.
Example:yes
sort'date_added' | 'last_visit' | 'name'

Order of the results (default date_added):

  • date_added — newest patients first.
  • last_visit — patients with the most recent consultation first; patients without consultations last.
  • name — alphabetical by name, case-insensitive; patients without a name last. Ties are broken by newest first.
Example:last_visit

Response

Paginated patient list with total count for pagination.

totalCountnumber required

Number of patients matching the search and filters across all pages. The number of pages is ceil(totalCount / pageSize).

Example response

{
  "patients": [
    {
      "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",
      "clientName": "Alex Morgan",
      "createdAt": "2026-09-12T08:41:07.000Z",
      "updatedAt": "2026-10-01T14:03:22.000Z"
    }
  ],
  "totalCount": 142
}

Changes

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