Kareo Appointments API

Appointment scheduling and management

Specifications

OpenAPI Specification

kareo-appointments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kareo Integration SOAP Administrative Appointments API
  description: The Kareo Integration SOAP API provides a web services interface for integrating third-party applications with Kareo practice management data. This OpenAPI description is derived from the publicly accessible WSDL at https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl. The underlying service is SOAP/XML-based; this document describes the logical operations and data shapes for reference and tooling purposes. Authentication requires a CustomerKey, Username, and Password issued by a Kareo System Administrator. Kareo is now part of Tebra.
  version: '2.1'
  contact:
    name: Kareo / Tebra Support
    url: https://helpme.tebra.com/01_Kareo_PM/12_API_and_Integration
  termsOfService: https://www.tebra.com/api-terms-of-use/
  x-api-type: SOAP
  x-wsdl-url: https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl
servers:
- url: https://webservice.kareo.com/services/soap/2.1
  description: Kareo SOAP Web Service (production)
tags:
- name: Appointments
  description: Appointment scheduling and management
paths:
  /KareoServices.svc/CreateAppointment:
    post:
      operationId: createAppointment
      summary: Create a new appointment
      description: Schedules a new appointment for a patient with a specified provider at a service location. Returns the appointment identifier.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CreateAppointmentRequest'
      responses:
        '200':
          description: Appointment created successfully
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CreateAppointmentResponse'
        '401':
          description: Authentication failed
        '409':
          description: Scheduling conflict
  /KareoServices.svc/UpdateAppointment:
    post:
      operationId: updateAppointment
      summary: Update an existing appointment
      description: Updates the details of an existing appointment including date, time, provider, or service location.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/UpdateAppointmentRequest'
      responses:
        '200':
          description: Appointment updated
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/UpdateAppointmentResponse'
        '401':
          description: Authentication failed
        '404':
          description: Appointment not found
  /KareoServices.svc/DeleteAppointment:
    post:
      operationId: deleteAppointment
      summary: Delete an appointment
      description: Cancels and removes an appointment record by appointment identifier.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/DeleteAppointmentRequest'
      responses:
        '200':
          description: Appointment deleted
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/DeleteAppointmentResponse'
        '401':
          description: Authentication failed
        '404':
          description: Appointment not found
  /KareoServices.svc/UpdateAppointmentStatus:
    post:
      operationId: updateAppointmentStatus
      summary: Update appointment status
      description: Updates the status of an appointment (e.g., Confirmed, Cancelled, No-Show, Checked-In).
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/UpdateAppointmentStatusRequest'
      responses:
        '200':
          description: Appointment status updated
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/UpdateAppointmentStatusResponse'
        '401':
          description: Authentication failed
        '404':
          description: Appointment not found
  /KareoServices.svc/GetAppointment:
    post:
      operationId: getAppointment
      summary: Retrieve a single appointment
      description: Retrieves a single appointment record by appointment identifier.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/GetAppointmentRequest'
      responses:
        '200':
          description: Appointment retrieved
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/GetAppointmentResponse'
        '401':
          description: Authentication failed
        '404':
          description: Appointment not found
  /KareoServices.svc/GetAppointments:
    post:
      operationId: getAppointments
      summary: Retrieve appointments with filters
      description: Retrieves a filtered list of appointments. Supports filtering by date range, provider, patient, and status. Recommended polling interval is 5-15 minutes for integrations.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/GetAppointmentsRequest'
      responses:
        '200':
          description: Appointments retrieved
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/GetAppointmentsResponse'
        '401':
          description: Authentication failed
  /KareoServices.svc/CreateAppointmentReason:
    post:
      operationId: createAppointmentReason
      summary: Create an appointment reason/type
      description: Creates a new appointment reason code for use in scheduling.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CreateAppointmentReasonRequest'
      responses:
        '200':
          description: Appointment reason created
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CreateAppointmentReasonResponse'
        '401':
          description: Authentication failed
  /KareoServices.svc/GetAppointmentReasons:
    post:
      operationId: getAppointmentReasons
      summary: Retrieve appointment reasons
      description: Retrieves the list of configured appointment reason codes for the practice.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/GetAppointmentReasonsRequest'
      responses:
        '200':
          description: Appointment reasons retrieved
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/GetAppointmentReasonsResponse'
        '401':
          description: Authentication failed
components:
  schemas:
    UpdateAppointmentRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        Appointment:
          $ref: '#/components/schemas/Appointment'
    UpdateAppointmentStatusResponse:
      type: object
      properties:
        Success:
          type: boolean
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    AppointmentReason:
      type: object
      properties:
        AppointmentReasonId:
          type: integer
        ReasonName:
          type: string
          example: Annual Physical
        Duration:
          type: integer
          description: Default duration in minutes.
          example: 30
    UpdateAppointmentResponse:
      type: object
      properties:
        Success:
          type: boolean
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    GetAppointmentResponse:
      type: object
      properties:
        Appointment:
          $ref: '#/components/schemas/Appointment'
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    CreateAppointmentRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        Appointment:
          $ref: '#/components/schemas/Appointment'
    GetAppointmentRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        AppointmentId:
          type: integer
    GetAppointmentReasonsRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
    DeleteAppointmentRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        AppointmentId:
          type: integer
    CreateAppointmentResponse:
      type: object
      properties:
        AppointmentId:
          type: integer
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    CreateAppointmentReasonResponse:
      type: object
      properties:
        AppointmentReasonId:
          type: integer
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    DeleteAppointmentResponse:
      type: object
      properties:
        Success:
          type: boolean
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    Appointment:
      type: object
      properties:
        AppointmentId:
          type: integer
          description: Internal Kareo appointment identifier.
        PatientId:
          type: integer
          description: Internal Kareo patient identifier.
        ProviderId:
          type: integer
          description: Internal Kareo provider identifier.
        ServiceLocationId:
          type: integer
          description: Internal Kareo service location identifier.
        StartTime:
          type: string
          format: date-time
          description: Appointment start date and time.
          example: '2026-06-15T09:00:00'
        EndTime:
          type: string
          format: date-time
          description: Appointment end date and time.
          example: '2026-06-15T09:30:00'
        AppointmentStatus:
          type: string
          enum:
          - Scheduled
          - Confirmed
          - CheckedIn
          - CheckedOut
          - Cancelled
          - NoShow
          example: Scheduled
        AppointmentReasonId:
          type: integer
          description: Identifier for the appointment reason/type.
        Notes:
          type: string
          description: Free-text notes for the appointment.
    RequestHeader:
      type: object
      required:
      - CustomerKey
      - User
      - Password
      properties:
        CustomerKey:
          type: string
          description: Unique key issued by the Kareo System Administrator identifying the practice integration.
          example: ABC123XYZ
        User:
          type: string
          description: Kareo username for authentication.
          example: admin@mypractice.com
        Password:
          type: string
          format: password
          description: Kareo password for authentication.
    GetAppointmentsResponse:
      type: object
      properties:
        Appointments:
          type: array
          items:
            $ref: '#/components/schemas/Appointment'
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    CreateAppointmentReasonRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        AppointmentReason:
          $ref: '#/components/schemas/AppointmentReason'
    GetAppointmentsRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        StartDate:
          type: string
          format: date-time
        EndDate:
          type: string
          format: date-time
        ProviderId:
          type: integer
        PatientId:
          type: integer
        AppointmentStatus:
          type: string
    GetAppointmentReasonsResponse:
      type: object
      properties:
        AppointmentReasons:
          type: array
          items:
            $ref: '#/components/schemas/AppointmentReason'
        ErrorCode:
          type: string
        ErrorMessage:
          type: string
    UpdateAppointmentStatusRequest:
      type: object
      properties:
        RequestHeader:
          $ref: '#/components/schemas/RequestHeader'
        AppointmentId:
          type: integer
        AppointmentStatus:
          type: string
externalDocs:
  description: Kareo API and Integration Documentation
  url: https://helpme.tebra.com/01_Kareo_PM/12_API_and_Integration