OpenAPI Specification
openapi: 3.0.3
info:
title: Kareo Integration SOAP Administrative Patients 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: Patients
description: Patient demographic and record management
paths:
/KareoServices.svc/CreatePatient:
post:
operationId: createPatient
summary: Create a new patient record
description: Creates a new patient record in Kareo practice management. Returns the newly created patient identifier. Requires CustomerKey authentication.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/CreatePatientRequest'
responses:
'200':
description: Patient created successfully
content:
application/xml:
schema:
$ref: '#/components/schemas/CreatePatientResponse'
'401':
description: Authentication failed - invalid CustomerKey, username, or password
'400':
description: Bad request - invalid patient data
/KareoServices.svc/UpdatePatient:
post:
operationId: updatePatient
summary: Update an existing patient record
description: Updates demographic and contact information for an existing patient record identified by PatientId or PatientExternalId.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/UpdatePatientRequest'
responses:
'200':
description: Patient updated successfully
content:
application/xml:
schema:
$ref: '#/components/schemas/UpdatePatientResponse'
'401':
description: Authentication failed
'404':
description: Patient not found
/KareoServices.svc/GetPatient:
post:
operationId: getPatient
summary: Retrieve a single patient record
description: Retrieves a single patient record by PatientId or PatientExternalId.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/GetPatientRequest'
responses:
'200':
description: Patient record retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/GetPatientResponse'
'401':
description: Authentication failed
'404':
description: Patient not found
/KareoServices.svc/GetPatients:
post:
operationId: getPatients
summary: Retrieve multiple patient records with filters
description: Retrieves a filtered list of patient records. Supports filtering by LastModifiedDate range and other criteria.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/GetPatientsRequest'
responses:
'200':
description: Patient list retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/GetPatientsResponse'
'401':
description: Authentication failed
/KareoServices.svc/GetAllPatients:
post:
operationId: getAllPatients
summary: Retrieve all patient records for a practice
description: Retrieves all patient records for the authenticated practice. Use with caution on large datasets; consider GetPatients with date filters.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/GetAllPatientsRequest'
responses:
'200':
description: All patients retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/GetPatientsResponse'
'401':
description: Authentication failed
/KareoServices.svc/UpdatePatientsExternalID:
post:
operationId: updatePatientsExternalID
summary: Update external identifier for patients
description: Bulk updates the external identifier field for one or more patient records, enabling synchronization with external systems.
tags:
- Patients
requestBody:
required: true
content:
application/xml:
schema:
$ref: '#/components/schemas/UpdatePatientsExternalIDRequest'
responses:
'200':
description: External IDs updated successfully
content:
application/xml:
schema:
$ref: '#/components/schemas/UpdatePatientsExternalIDResponse'
'401':
description: Authentication failed
components:
schemas:
Patient:
type: object
properties:
PatientId:
type: integer
description: Internal Kareo patient identifier.
example: 100234
PatientExternalId:
type: string
description: External system identifier for the patient.
example: EXT-PT-9876
PatientFullName:
type: string
description: Full name of the patient (LastName, FirstName).
example: Doe, Jane
FirstName:
type: string
example: Jane
LastName:
type: string
example: Doe
DateOfBirth:
type: string
format: date
description: Patient date of birth in YYYY-MM-DD format.
example: '1985-03-15'
Gender:
type: string
enum:
- Male
- Female
- Unknown
Email:
type: string
format: email
example: jane.doe@example.com
HomePhone:
type: string
example: 555-123-4567
MobilePhone:
type: string
example: 555-987-6543
Address:
$ref: '#/components/schemas/Address'
InsurancePolicyId:
type: integer
description: Internal identifier for the patient's insurance policy.
InsurancePolicyExternalId:
type: string
description: External identifier for the patient's insurance policy.
LastModifiedDate:
type: string
format: date-time
description: Timestamp of the last modification to the record.
CreatePatientResponse:
type: object
properties:
PatientId:
type: integer
ErrorCode:
type: string
ErrorMessage:
type: string
GetAllPatientsRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
GetPatientResponse:
type: object
properties:
Patient:
$ref: '#/components/schemas/Patient'
ErrorCode:
type: string
ErrorMessage:
type: string
GetPatientsRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
LastModifiedStartDate:
type: string
format: date-time
LastModifiedEndDate:
type: string
format: date-time
UpdatePatientResponse:
type: object
properties:
Success:
type: boolean
ErrorCode:
type: string
ErrorMessage:
type: string
GetPatientsResponse:
type: object
properties:
Patients:
type: array
items:
$ref: '#/components/schemas/Patient'
ErrorCode:
type: string
ErrorMessage:
type: string
CreatePatientRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
Patient:
$ref: '#/components/schemas/Patient'
UpdatePatientsExternalIDRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
PatientExternalIdMappings:
type: array
items:
type: object
properties:
PatientId:
type: integer
ExternalId:
type: string
UpdatePatientRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
Patient:
$ref: '#/components/schemas/Patient'
GetPatientRequest:
type: object
properties:
RequestHeader:
$ref: '#/components/schemas/RequestHeader'
PatientId:
type: integer
PatientExternalId:
type: string
UpdatePatientsExternalIDResponse:
type: object
properties:
UpdatedCount:
type: integer
ErrorCode:
type: string
ErrorMessage:
type: string
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.
Address:
type: object
properties:
Address1:
type: string
example: 123 Main St
Address2:
type: string
example: Suite 100
City:
type: string
example: Los Angeles
State:
type: string
example: CA
ZipCode:
type: string
example: '90001'
Country:
type: string
example: US
externalDocs:
description: Kareo API and Integration Documentation
url: https://helpme.tebra.com/01_Kareo_PM/12_API_and_Integration