OpenAPI Specification
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