---
title: "Create an appointment booking (anonymous with client info)"
method: POST
path: "/public/widget/appointments"
tags: ["Widget"]
---

# Create an appointment booking (anonymous with client info)

`POST /public/widget/appointments`

## Request

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

## Request body

- CreateWidgetAppointmentRequest
  - `sessionId` string, required
  - `clinicId` string, required
  - `slotId` string, required
  - `appointmentTypeId` string, nullable: The chosen online-bookable appointment type (ITE-430). Optional: null resolves to the clinic's default (or its only bookable type). Must be in the bookable set, else 400.
  - `clientInfo` WidgetClientInfoDto, required
    - `name` string, required
    - `email` string, required
    - `phone` string, required
    - `referralSource` string, nullable: "How did you hear about us" (ITE-413), answered by the client at booking. Written to `Client.ReferralSource` — marketing attribution — only when this booking creates the client; an existing client's answer is never overwritten by a later booking. Ignored for returning clients. Free text: usually one of IReadOnlyList&lt;string&gt; ReferralSourceOptions.Presets, but anything is accepted and stored verbatim.
  - `patientInfo` WidgetPatientInfoDto, required
    - `existingPatientId` string, nullable
    - `name` string, nullable
    - `species` string, nullable
    - `breed` string, nullable
  - `reason` string, nullable
  - `notes` string, nullable

## Response `200`

OK

- WidgetAppointmentResponse
  - `appointmentId` string
  - `clientId` string
  - `patientId` string
  - `scheduledTime` string, date-time
  - `providerName` string, nullable
  - `locationName` string, nullable
  - `confirmationNumber` string

## Changes

- **2026-08-26** `a57456aa87b0`: 6 info
  - added the new optional request property `appointmentTypeId` (media type: application/json)
  - added the new optional request property `appointmentTypeId` (media type: text/json)
  - added the new optional request property `appointmentTypeId` (media type: application/*+json)
  - added the new optional request property `clientInfo/referralSource` (media type: application/json)
  - …2 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/public/widget/appointments/post.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)
