---
title: "Get a paginated list of patients with optional filters"
method: GET
path: "/Patients"
tags: ["Patients"]
---

# Get a paginated list of patients with optional filters

`GET /Patients`

## Query parameters

- `page` union
  - integer
  - string, int32
- `pageSize` union
  - integer
  - string, int32
- `clientId` string
- `species` string
- `query` string
- `sortBy` string
- `sortOrder` string
- `includeInactive` boolean
- `tagId` string

## Response `200`

Paginated list of patients with appointment summary data

- PatientListResponseDto
  - `data` PatientResponseDto[]
    - `id` string — Unique patient identifier
    - `name` string — The patient's name
    - `species` string — The species name. References a species from GET /species endpoint.
    - `speciesId` string, nullable — The species ID for programmatic lookups (e.g., location species restrictions).
    - `breed` string — The breed name
    - `dateOfBirth` string, date-time, nullable
    - `isEstimatedAge` boolean
    - `color` string, nullable
    - `microchipNo` string, nullable
    - `clientId` string
    - `client` ClientSummaryDto
      - `id` string
      - `firstName` string
      - `lastName` string
      - `email` string, nullable
      - `phoneNumber` string, nullable
    - `clientName` string, nullable
    - `clientPhone` string, nullable
    - `clientEmail` string, nullable
    - `fixed` boolean
    - `sex` integer
    - `vaccinationStatus` integer
    - `lastVaccinationDate` string, date-time, nullable
    - `previousVet` string, nullable
    - `previousVetPhone` string, nullable
    - `tags` TagAssignmentDto[] — Smart Tag assignments on this patient. Populated on list responses so the UI can surface tags (incl. severity-bearing alert tags) per row without an N+1 fetch; the single-patient detail page fetches tags directly via the tag-assignments endpoint.
      - `id` string
      - `tagId` string
      - `tagName` string
      - `tagColor` string, nullable
      - `tagIcon` string, nullable
      - `tagSeverity` integer
      - `entityType` string
      - `entityId` string
      - `value` string, nullable
      - `note` string, nullable
      - `assignedByUserId` string, nullable
      - `assignedByName` string, nullable
      - `assignedAt` string, date-time
    - `contacts` PatientContactDto[] — Contacts (people) related to this patient with their relationship type and per-patient permissions. Populated on the single-patient read (GET /patients/{id}); empty on list responses. The primary owner is also reflected in string PatientResponseDto.ClientId / ClientSummaryDto? PatientResponseDto.Client.
      - `id` string
      - `patientId` string
      - `clientId` string
      - `client` ClientSummaryDto
        - `id` string
        - `firstName` string
        - `lastName` string
        - `email` string, nullable
        - `phoneNumber` string, nullable
      - `relationshipType` integer — Describes who a contact (Client) is in relation to a specific patient. One contact per patient is the `PrimaryOwner`; all others are additional relationships (co-owners, agents, emergency contacts, etc.). Stored as text on `patient_contacts.relationship_type`.
      - `isPrimary` boolean
      - `permissions` string[] — The set permission flags by name (e.g. `"ApproveTreatment"`). Exposed as a list rather than the raw ContactPermissions bitmask so clients can check individual permissions without bit math.
      - `verificationMethod` integer — How a patient contact's identity was verified by clinic staff. Stored as text on `patient_contacts.verification_method`.
      - `verifiedByUserId` string, nullable
      - `verifiedAt` string, date-time, nullable
      - `verificationNotes` string, nullable
      - `displayOrder` union
        - integer
        - string, int32
      - `createdAt` string, date-time
      - `updatedAt` string, date-time
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `lastVisitDate` string, date-time, nullable
    - `hasActiveAppointments` boolean
    - `isDeceased` boolean — Whether the patient is deceased
    - `deceasedDate` string, date-time, nullable — Date the patient was marked as deceased
    - `isActive` boolean — Whether the patient is active (not transferred, discharged, etc.)
    - `profilePhotoUrl` string, nullable — Presigned URL (~60min) for the patient's profile photo, or null if none is set. Backed by the PatientFile flagged with IsProfilePhoto.
    - `treatmentAcceptanceRate` union — Read-only treatment-acceptance rate (0-100) over the patient's entire history: the share of decided recommended services that were performed rather than client-declined. Null when the patient has no decided services. Clinical compliance, not regulatory.
      - number, double
      - string, double
    - `treatmentAcceptanceRateRecent` union — Read-only treatment-acceptance rate (0-100) over the trailing 12 months. Null when the patient has no decided services in that window.
      - number, double
      - string, double
    - `deferredServiceCount` union — Lifetime count of deferred (client-declined) services for this patient.
      - integer
      - string, int32
  - `totalCount` union
    - integer
    - string, int32
  - `page` union
    - integer
    - string, int32
  - `pageSize` union
    - integer
    - string, int32
  - `totalPages` union
    - integer
    - string, int32

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/versions/a905bde4e796/schema)
