Skip to main content

Kareo

Kareo (now Tebra) is a cloud-based healthcare technology platform built for independent medical practices. It combines electronic health records (EHR), practice management, and medical billing into a single integrated system. The platform provides clinical documentation, e-prescribing, appointment scheduling, insurance eligibility verification, electronic claims submission, and patient engagement tools. Kareo's web services API enables integration with auxiliary healthcare information systems, offering read access to patients, providers, appointments, transactions, and charges, as well as write access to patients and encounters.

Kareo icon

Power end-to-end data operations for your Kareo API with Nexla. Our bi-directional Kareo connector is purpose-built for Kareo, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Kareo or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Kareo workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Kareo uses a combination of a Customer Key, Username, and Password to authenticate API requests. Before creating a Kareo credential in Nexla, you will need to gather all three values from your Kareo (Tebra) account.

Obtain Your Customer Key

The Customer Key is an account-level identifier required by the Kareo SOAP API. It is unique to your organization, is the same for all users on the account, and never changes or expires. Only Kareo System Administrators can generate or view the Customer Key.

  1. Log in to your Kareo (Tebra) account at app.kareo.com using your System Administrator credentials.

  2. Navigate to Help in the top navigation bar, then select Get Customer Key from the dropdown menu.

  3. In the dialog that appears, click the Create my customer key button. Your Customer Key will be generated and displayed next to Your Key.

  4. Copy and securely store the Customer Key — you will need it when configuring the credential in Nexla.

The Customer Key is an account-wide identifier and is the same for all users in your organization. It does not expire and does not need to be regenerated unless your organization requests a new one.

Create a Dedicated API User

Kareo recommends creating a dedicated user account for API integrations rather than using a personal administrator login. This makes it easier to manage access and to audit API activity.

  1. In your Kareo account, navigate to Settings > User Accounts (or Manage Users, depending on your version).

  2. Click Add User or New User to create a new user account.

  3. Assign the new user the System Administrator role. This role is required for full API access, including read access to patients, providers, appointments, transactions, and charges, as well as write access to patients and encounters.

  4. In the user's permissions configuration, select EHR's and API, then click Full Control to grant the necessary API permissions.

  5. Set a strong, secure password for the new user account.

  6. Save the new user and note the Username (typically the user's email address or login name) and the Password you configured — you will need these when creating the Nexla credential.

Using a dedicated API user account rather than a personal login is a security best practice. It ensures that API access can be revoked or audited independently of individual user accounts, and it prevents disruption to API integrations if a personal account's password changes.

For complete information about user management and API access in Kareo, refer to the Tebra Help Center.

Authenticate

Create a credential in Nexla

  1. To create a new Kareo credential, after selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your Kareo Customer Key in the Customer Key field. This is the account-level identifier generated in your Kareo account under Help > Get Customer Key. The Customer Key is required by the Kareo SOAP API to identify your organization.

  4. Enter the Username of the dedicated API user account in the User Name field. This is typically the email address or login name of the user created for API integrations in your Kareo account.

  5. Enter the Password for the API user account in the Password field. This should be the password set when the dedicated API user was created.

    Important

    Keep your Customer Key, Username, and Password confidential. These credentials grant access to your Kareo account data, including sensitive patient and billing information. Do not share credentials in unsecured communications, and rotate the API user password periodically as part of your organization's security practices.

  6. Once all of the relevant steps in the above sections have been completed, click the Save button at the bottom of the overlay to save the configured credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Kareo connector tile, then select the credential that will be used to connect to the Kareo instance, and click Next; or, create a new Kareo credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Kareo Clinical API endpoints. Each template is designed specifically for the corresponding Kareo Clinical API endpoint, making data source setup easy and efficient. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

Get Patient

Retrieve demographic information for all patients in the Kareo account, including patient ID, date of birth, gender, race, ethnicity, preferred language, and first and last name.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient. No date filter is applied — all patient records are returned.
  • Response data is extracted from the $.patient path. Each object in the array represents one patient record.

This endpoint returns the full patient demographic dataset. For large practices, consider combining this with other endpoints (such as Get Encounters) to build a complete patient data pipeline.

Get Encounters

Retrieve patient visit records including care team participants, encounter period, location, and diagnosis conditions, filtered by a date of service range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/encounter with startdate and endDate query parameters. Response data is extracted from $.encounter[*].
  • Configure the following parameters: Start Date — inclusive start date to filter encounters by date of service (format: MM-dd-yyyy). End Date — inclusive end date to filter encounters by date of service (format: MM-dd-yyyy).

Use date filters to perform incremental pulls and avoid re-ingesting the full encounter history on each run. Both Start Date and End Date are optional — leaving them blank returns all encounter records.

Get Medication Allergies

Retrieve patient medication allergy intolerances including allergen, RxNorm code, reaction, severity, and active status, optionally filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/allergyIntolerance/medicalAllergy with optional startdate and endDate query parameters. Response data is extracted from $.allergyIntolerance.medicalAllergy[*].
  • Configure the following parameters: Start Date — inclusive start date to filter allergy records (format: MM-dd-yyyy). End Date — inclusive end date to filter allergy records (format: MM-dd-yyyy). Leave either blank to return all records.

This endpoint supports ONC Common Clinical Data Set (CCDS) compliance requirements. Allergy data includes RxNorm codes suitable for interoperability with EHR systems.

Get Care Plans

Retrieve patient care plans and assessments including encounter context, addressed conditions, and care activity details, filtered by encounter date of service.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/carePlan with optional startdate and endDate query parameters. Response data is extracted from $.carePlan[*].
  • Configure the following parameters: Start Date — inclusive start date to filter care plans by encounter date of service (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy). Leave either blank to return all records.

Care plans are linked to specific encounter dates. Use date filters to narrow results to active care plans from a recent period.

Get Problem List (Conditions)

Retrieve patient problem list entries with SNOMED CT codes, problem name, onset and resolution dates, and status (ACTIVE, INACTIVE, or RESOLVED), filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/condition/problemList with optional startdate and endDate parameters. Response data is extracted from $.condition.problemList[*].
  • Configure the following parameters: Start Date — inclusive start date to filter problem list records (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy). Records with undefined start dates are included when a filter is applied.

SNOMED CT codes returned by this endpoint are suitable for downstream clinical analytics, quality measure reporting, and population health workflows.

Get Implantable Devices

Retrieve unique device identifiers (UDI) for patient implantable devices, including the FDA deviceIdentifier, barcode, GMDN name, and lot number, filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/device with optional startdate and endDate query parameters. Response data is extracted from $.device.udi[*].
  • Configure the following parameters: Start Date — inclusive start date to filter implantable device records (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

This endpoint supports ONC CCDS requirements for implantable device tracking. Each record contains the full FDA UDI string as well as parsed device identifier components.

Get Procedures

Retrieve patient procedures with CPT codes, procedure name, date, and status (Completed, Active, Aborted, Cancelled, Scheduled), filtered by date of service.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/procedure with optional startdate and endDate query parameters. Response data is extracted from $.procedure[*].
  • Configure the following parameters: Start Date — inclusive start date to filter procedure records by date of service (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

CPT codes returned by this endpoint can be used for billing reconciliation, quality measure calculations, and clinical outcome analytics.

Get Patient Goals

Retrieve patient care goals tied to encounter dates, including status date and free-text goal descriptions, filtered by encounter date of service.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/goal with optional startdate and endDate query parameters. Response data is extracted from $.goal[*].
  • Configure the following parameters: Start Date — inclusive start date to filter goals by encounter date of service (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

Patient goals are free-text entries associated with specific encounters. This endpoint is useful for population health management and care coordination analytics.

Get Vital Signs

Retrieve patient vital sign observations with LOINC codes, observation name, date, numeric value, and unit of measurement, filtered by observation date.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/observation/vitalSigns with optional startdate and endDate query parameters. Response data is extracted from $.observation.vitalSigns[*].
  • Configure the following parameters: Start Date — inclusive start date to filter vital sign observations (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

LOINC codes included in each vital sign record enable interoperability with clinical analytics platforms and quality measure reporting systems.

Get Smoking Status

Retrieve patient smoking status observations using SNOMED CT codes per ONC 170.207(h). No date filter is available — all recorded smoking status entries for all patients are returned.

This endpoint returns all recorded smoking status entries without date filtering. It is commonly used for quality measure reporting (e.g., Meaningful Use, HEDIS) that requires smoking status as a required data element.

Get Diagnostic Reports (Lab Results)

Retrieve lab tests and results with LOINC codes, values, units, interpretation codes, reference ranges, and report status, filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/diagnosticReport with optional startdate and endDate query parameters. Response data is extracted from $.diagnosticReport[*].
  • Configure the following parameters: Start Date — inclusive start date to filter lab results (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

LOINC codes and structured result values make this endpoint well-suited for clinical decision support, lab trend analytics, and interoperability with downstream EHR systems.

Get Immunizations

Retrieve patient immunization history with CVX codes, vaccine name, administration date, status, lot number, and manufacturer, filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/immunization with optional startdate and endDate query parameters. Response data is extracted from $.immunization[*].
  • Configure the following parameters: Start Date — inclusive start date to filter immunization records (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

CVX codes returned by this endpoint are compatible with HL7 FHIR immunization resources and public health reporting requirements (e.g., IIS reporting).

Get Medication Statements

Retrieve active and historical medications with RxNorm codes, drug name, dosage instructions (sig), and start and end dates, filtered by date range.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/medicationStatement with optional startdate and endDate query parameters. Response data is extracted from $.medicationStatement[*].
  • Configure the following parameters: Start Date — inclusive start date to filter medication statement records (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy).

RxNorm codes enable downstream medication reconciliation, drug interaction checking, and interoperability with pharmacy and EHR systems.

Get CCDA Summary Document

Retrieve a Base64-encoded CCDA 2.1 document covering the full Common Clinical Data Set (CCDS) for each patient — designed for AI/ML pipelines and clinical document exchange.

  • Issues a GET request to https://api.kareo.com/clinical/v1/api/patient/binary/summary with optional startdate and endDate query parameters. The full response is returned at the root path ($).
  • Configure the following parameters: Start Date — inclusive start date to filter CCDA sections (format: MM-dd-yyyy). End Date — inclusive end date (format: MM-dd-yyyy). Leave blank for the complete clinical summary.

The returned document is Base64-encoded. Decode the payload before processing the XML content. This endpoint is particularly useful for AI/ML ingestion pipelines that require the full structured clinical narrative per patient.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Kareo Clinical API sources can also be manually configured to ingest data from Kareo API endpoints not included in the pre-built templates, or to apply further customizations. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Kareo's web services API base URL is https://webservice.kareo.com/services/soap/2.1/KareoServices.svc; common data retrieval endpoints include paths for patients, providers, appointments, charges, transactions, encounters, service locations, procedure codes, and practices.

Kareo API responses often wrap records inside an envelope object (e.g., GetPatientsResp). For JSON responses, enter the JSON path to the relevant array, such as $.Patients.PatientData[*]; for XML responses, enter the XPath, such as /GetPatientsResp/Patients/PatientData. You do not need to add headers for the Customer Key, Username, or Password — these are handled automatically based on your credential configuration. For a complete list of available Kareo API endpoints and their parameters, refer to the Tebra Help Center API documentation.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Kareo data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Kareo destination, and select the Send to Destination option from the menu. Select the Kareo connector from the list of available destination connectors, then select the credential that will be used to connect to the Kareo organization, and click Next; or, create a new Kareo credential for use in this flow.

Manual configuration

Kareo destinations can also be manually configured to send data to any valid Kareo API endpoint. The Kareo API supports write operations for patients and encounters, allowing Nexla to create or update these record types in your Kareo account; you can also configure Nexla to automatically send the response received from the Kareo API after each call to a new Nexla webhook data source. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

The Kareo API typically accepts JSON for write operations, using POST to create new records and PUT/PATCH to update or partially update existing records. For update operations, include the ID of the object to be updated at the end of the URL. You do not need to add headers for the Customer Key, Username, or Password — these are handled automatically based on your credential configuration. For complete information about available Kareo API write endpoints and their required request formats, refer to the Tebra Help Center API documentation and the Kareo API Integration Technical Guide.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Kareo endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Kareo until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.