---
title: "Appointment created"
method: POST
path: "appointment.created"
tags: ["webhooks"]
---

# Appointment created

`POST appointment.created` (webhook)

Triggered when a client appointment is created by a clinic user.

## Payload

- AppointmentCreatedWebhookPayload
  - `data` object, required: Appointments represent scheduled visits for patients at a clinic. Each appointment is uniquely associated with a patient and can include details about the visit, such as the reason for the appointment, duration, and any special instructions. If a client has scheduled two patients, this will be represented as two separate appointments in our system. Unlike select legacy PIMS systems that create additional appointments for pickup and dropoff events, our appointment object includes both pickup and dropoff times when applicable, streamlining the scheduling process. This means a surgery would be represented as a single appointment with both check-in and check-out times, rather than as multiple separate appointments.
    - `alert_tags` union[], required: Array of alert tags associated with this appointment.
      - union
        - 'CONTAGIOUS'
        - ''
    - `calendar.clinic_id` integer, required: The ID of the clinic this appointment belongs to.
    - `calendar_id` integer, required: The ID of the calendar this appointment belongs to.
    - `cancelation_reason` union, required: The reason for cancelation or no-show, if applicable.
      - 'PATIENT_SEEN_ELSEWHERE' | 'CONCERN_RESOLVED' | 'PENDING_RESCHEDULE' | 'NO_LONGER_NEEDED' | 'WILL_RESCHEDULE' | 'DOCTOR_UNAVAILABLE' | 'CLINIC_SCHEDULE_CHANGE' | 'CREATED_IN_ERROR' | 'DUPLICATE' | 'WRONG_PATIENT' | 'WRONG_DATE_OR_TIME' | 'UNKNOWN' | 'OTHER' | 'NO_SHOW'
      - ''
    - `cancelation_reason_other` string, nullable, required: Free-text explanation of the cancelation, if one was provided.
    - `client_id` integer, nullable, required: The ID of the clinic client responsible for the appointment.
    - `clinic_notes` unknown, required
    - `created` string, date-time, required: The datetime this object was created.
    - `deleted` string, date-time, nullable, required: The datetime this record was soft deleted.
    - `dropoff_start_datetime` string, date-time, nullable, required: ISO 8601 formatted datetime for when the patient should be dropped off.
    - `end_datetime` string, date-time, nullable, required: ISO 8601 formatted datetime for when the appointment ends.
    - `followup_appointment_ids` integer[]: List of followup appointment IDs associated with this appointment.
    - `form_requests` ExternalAppointmentCreatedWebhookFormRequestSchema[]: Auto-created form requests linked to this appointment.
      - `appointment_id` integer, nullable, required: The ID of the linked appointment, if any.
      - `client_id` integer, required: The ID of the clinic client this form request belongs to.
      - `completed_at` string, date-time, nullable, required: When the client submitted the completed form.
      - `created` string, date-time, required: The datetime this object was created.
      - `dashboard_url` string, nullable, required: The client-facing dashboard URL for all pending forms for this client. Null until the form request has been sent.
      - `expires_at` string, date-time, nullable, required: When the form request expires and is no longer available.
      - `form_type` ExternalFormTypeSchema, required: Form definition metadata for a form request.
        - `client_facing_title` string, nullable, required: The client-facing title of the form.
        - `id` integer, required: The ID of the form definition.
        - `internal_name` string, required: The internal name of the form used by clinic staff.
      - `id` integer, required: The unique identifier for the form request.
      - `modified` string, date-time, required: The datetime this object was last modified; changes to related entities will not update this field.
      - `patient_id` integer, required: The ID of the clinic patient this form request belongs to.
      - `sent_at` string, date-time, nullable, required: When the form request was sent to the client.
      - `started_at` string, date-time, nullable, required: When the client first opened or began filling out the form.
      - `status` 'CREATED' | 'SENT' | 'STARTED' | 'COMPLETED' | 'EXPIRED', required: Status of a form request exposed on the Connect API.
      - `url` string, required: The client-facing URL for this individual form request.
    - `id` integer, required: The unique identifier for the appointment.
    - `is_deleted` boolean, required: Whether this record is soft deleted or not.
    - `kind.label` string, nullable: The appointment kind (type of appointment).
    - `kind_id` integer, nullable: The ID of the appointment kind (type of appointment).
    - `medical_record_id` integer, nullable: The ID of the medical record associated with this appointment, if any.
    - `modified` string, date-time, required: The datetime this object was last modified; changes to related entities will not update this field.
    - `patient_id` integer, nullable, required: The ID of the clinic patient this appointment is for.
    - `pickup_start_datetime` string, date-time, nullable, required: ISO 8601 formatted datetime for when the patient should be picked up.
    - `reason` string, nullable, required: The reason for this appointment.
    - `resource.name` string, nullable: The name of the calendar resource (provider/room) assigned to handle this appointment.
    - `resource_id` integer, nullable, required: The ID of the calendar resource (provider/room) assigned to handle this appointment.
    - `room.name` string, nullable: The name of the room assigned to this appointment, if any.
    - `room_id` integer, nullable, required: The ID of the room assigned to this appointment, if any.
    - `start_datetime` string, date-time, nullable, required: ISO 8601 formatted datetime for when the appointment starts.
    - `status` 'CREATING' | 'CLIENT_CREATING' | 'UNSCHEDULED' | 'UNCONFIRMED' | 'CONFIRMED' | 'DROPPED_OFF' | 'CHECKED_IN' | 'IN_PROGRESS' | 'READY_TO_GO' | 'COMPLETED' | 'NO_SHOW' | 'CANCELED' | 'IMPORTED' | 'CLIENT_REQUESTED', required
  - `type` 'appointment.created', required: The event type identifier.

## Acknowledgement `200`

Webhook received

---

[API](https://skmtc.dev/vetcove/apis/ninjaapi.md) - [All operations](https://skmtc.dev/vetcove/apis/ninjaapi/llms.txt) - [OpenAPI document](https://skmtc.dev/vetcove/apis/ninjaapi/revisions/4ceaed956e15?raw)
