---
title: "Get a paginated list of clients with optional search and sorting"
method: GET
path: "/Clients"
tags: ["Clients"]
---

# Get a paginated list of clients with optional search and sorting

`GET /Clients`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Clients`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Clients/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

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

## Response `200`

Paginated list of clients

- ClientListResponseDto
  - `data` ClientResponseDto[]
    - `id` string
    - `email` string, nullable
    - `phoneNumber` string, nullable
    - `firstName` string
    - `lastName` string
    - `address` string, nullable
    - `addressLine2` string, nullable: Apartment / suite / unit. Second address line.
    - `city` string, nullable
    - `state` string, nullable
    - `zipCode` string, nullable
    - `countryCode` string, nullable: ISO 3166-1 alpha-2 country code (e.g. "US", "GB"). Defaults to clinic's region if null.
    - `dateOfBirth` string, date-time, nullable
    - `accountStatus` integer
    - `emergencyContact` EmergencyContactDto
      - `name` string, nullable
      - `phone` string, nullable
      - `email` string, nullable
      - `relationship` string, nullable
    - `secondaryEmergencyContact` SecondaryEmergencyContactDto: A client's secondary (backup) emergency contact — free-text, same shape as the primary one (PAW-650). Backed by the `SecondaryEmergencyContact*` columns on the client.
      - `name` string, nullable
      - `phone` string, nullable
      - `email` string, nullable
      - `relationship` string, nullable
    - `communicationPreferences` CommunicationPreferencesDto
      - `preferredMethod` integer
      - `allowAppointmentReminders` boolean
      - `allowEmailMarketing` boolean
      - `allowPhoneCalls` boolean
      - `allowSmsMarketing` boolean
      - `notes` string, nullable
    - `emailSuppressedAt` string, date-time, nullable: When email to this client stopped being sent because SES reported a spam complaint or a permanent bounce. Null = deliverable. Cleared by changing the email address.
    - `emailSuppressionReason` string, nullable: "Complaint" or "PermanentBounce"; null when not suppressed.
    - `preferredLanguage` string, nullable
    - `referralSource` string, nullable: Marketing attribution — "how did you hear about us". Staff/client entered.
    - `createdVia` string, nullable: Read-only provenance — the channel that created the record (ITE-419).
    - `registrationPending` boolean: Placeholder owner created by emergency intake whose details have not been completed.
    - `allowHouseAccount` boolean: House account (ITE-670): approved to charge invoices to their account. Changed only via PUT /clients/{id}/house-account (settings permission).
    - `paymentTermsDays` union: Payment terms in days (0 = due on receipt); null = tenant default.
      - integer
      - string, int32
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `totalCount` union
    - integer
    - string, int32
  - `page` union
    - integer
    - string, int32
  - `pageSize` union
    - integer
    - string, int32
  - `totalPages` union
    - integer
    - string, int32

## Changes

- **2026-10-28** `099cf36186e0`: 6 info
  - added the optional property `data/items/emailSuppressedAt` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/items/emailSuppressedAt` to the response with the `200` status (media type: application/json)
  - added the optional property `data/items/emailSuppressedAt` to the response with the `200` status (media type: text/json)
  - added the optional property `data/items/emailSuppressionReason` to the response with the `200` status (media type: text/plain)
  - …2 more
- **2026-10-07** `021fabd866ff`: 3 info
  - added the optional property `data/items/registrationPending` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/items/registrationPending` to the response with the `200` status (media type: application/json)
  - added the optional property `data/items/registrationPending` to the response with the `200` status (media type: text/json)
- **2026-09-17** `d4ae30be0619`: 3 info
  - added the optional property `data/items/addressLine2` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/items/addressLine2` to the response with the `200` status (media type: application/json)
  - added the optional property `data/items/addressLine2` to the response with the `200` status (media type: text/json)
- …earlier changes not shown

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Clients/get.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
