---
title: Open Dental API Integration on Truto
slug: opendental
category: Healthcare
canonical: "https://truto.one/integrations/detail/opendental/"
---

# Open Dental API Integration on Truto



**Category:** Healthcare  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 392 tools for Open Dental that AI agents can call directly.

- **list_all_open_dental_account_module_agings** — Get a patient's family aging balances (0-30, 31-60, 61-90, over 90 days, total, insurance estimate), as shown in the Account Module aging grid. Returns: Bal_0_30, Bal_31_60, Bal_61_90, BalOver90, Total, InsEst, and more. Required: PatNum.
- **list_all_open_dental_account_module_patient_balances** — Get the patient portion for a patient's family, as shown in the Account Module Select Patient grid. Returns: PatNum, Name, Balance. Required: PatNum.
- **list_all_open_dental_account_module_service_date_views** — List every charge and credit on a patient's account (optionally the whole family), as shown in the Service Date View. Returns: ObjectType, PrimaryKey, Type, ServiceDate, TransDate, Patient, and more. Required: PatNum.
- **list_all_open_dental_adjustments** — List Open Dental Adjustments. Filter by AdjType, ProcNum. Returns: AdjNum, AdjDate, AdjAmt, PatNum, AdjType, ProvNum, and more. Required: PatNum.
- **create_a_open_dental_adjustment** — Create an Open Dental Adjustment. Returns: AdjNum, AdjDate, AdjAmt, PatNum, AdjType, ProvNum, and more. Required: PatNum, AdjType, AdjAmt, AdjDate.
- **update_a_open_dental_adjustment_by_id** — Update an Open Dental Adjustment by id. Only the fields you send change. A discount plan adjustment cannot be changed to another AdjType. Returns: AdjNum, AdjDate, AdjAmt, PatNum, AdjType, ProvNum, and more. Required: id.
- **get_single_open_dental_allergy_by_id** — Get a single Open Dental Allergy (patient allergy) by id. Returns: AllergyNum, AllergyDefNum, PatNum, Reaction, StatusIsActive, DateTStamp, and more. Required: id.
- **list_all_open_dental_allergies** — List Open Dental Allergies (patient allergy). Filter by PatNum. Returns: AllergyNum, AllergyDefNum, PatNum, Reaction, StatusIsActive, DateTStamp, and more.
- **create_a_open_dental_allergy** — Create an Open Dental Allergy (patient allergy). Returns: AllergyNum, AllergyDefNum, PatNum, Reaction, StatusIsActive, DateTStamp, and more. Required: PatNum.
- **update_a_open_dental_allergy_by_id** — Update an Open Dental Allergy (patient allergy) by id. Only the fields you send change. Returns: AllergyNum, AllergyDefNum, PatNum, Reaction, StatusIsActive, DateTStamp, and more. Required: id.
- **delete_a_open_dental_allergy_by_id** — Delete an Open Dental Allergy (patient allergy) by id. Returns no content. Required: id.
- **get_single_open_dental_allergy_def_by_id** — Get a single Open Dental AllergyDef (allergy definition) by id. Returns: AllergyDefNum, IsHidden, DateTStamp, SnomedType, MedicationNum, UniiCode. Required: id.
- **list_all_open_dental_allergy_defs** — List Open Dental AllergyDefs (allergy definition). Returns: AllergyDefNum, IsHidden, DateTStamp, SnomedType, MedicationNum, UniiCode.
- **create_a_open_dental_allergy_def** — Create an Open Dental AllergyDef (allergy definition). Returns: AllergyDefNum, IsHidden, DateTStamp, SnomedType, MedicationNum, UniiCode. Required: Description.
- **update_a_open_dental_allergy_def_by_id** — Update an Open Dental AllergyDef (allergy definition) by id. Only the fields you send change. Returns: AllergyDefNum, IsHidden, DateTStamp, SnomedType, MedicationNum, UniiCode. Required: id.
- **get_single_open_dental_appointment_by_id** — Get a single Open Dental Appointment by id. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: id.
- **list_all_open_dental_appointments** — List Open Dental Appointments. Filter by PatNum, AptStatus, Op, date, dateStart, dateEnd, ClinicNum, and more. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more.
- **create_a_open_dental_appointment** — Create an Open Dental Appointment. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: PatNum, Op, AptDateTime.
- **update_a_open_dental_appointment_by_id** — Update an Open Dental Appointment by id. Only the fields you send change. It is common to only set one or two fields. Note will overwrite any existing note. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: id.
- **list_all_open_dental_asap_appointments** — List appointments on the ASAP list, meaning Priority is ASAP instead of Normal. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more.
- **list_all_open_dental_appointment_slots** — Find open appointment slots from provider and operatory schedules, the way Open Dental's own appointment search does. Pass ProvNum and OpNum for the most useful results. Returns: DateTimeStart, DateTimeEnd, ProvNum, OpNum.
- **list_all_open_dental_web_sched_appointment_slots** — Find open slots using the Web Sched logic for new or existing patients. Rarely used; the office needs a Web Sched eService and Web Sched setup. Returns: DateTimeStart, DateTimeEnd, ProvNum, OpNum.
- **list_all_open_dental_web_sched_appointments** — List appointments and flag those made through Web Sched in eServiceLogType (Recall, NewPat, ExistingPat, ASAP, or None). Rarely used; appointments list is usually enough. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, Op, and more.
- **create_a_open_dental_web_sched_appointment** — Create an appointment the way Web Sched does, in a slot found with the web_sched_appointment_slots list method. Rarely used; the office needs Web Sched eServices. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: PatNum, DateTimeStart, DateTimeEnd, ProvNum, OpNum, defNumApptType.
- **create_a_open_dental_planned_appointment** — Create a planned appointment for a patient (shown in the Planned Appts tab of the Chart Module). Attach procedures with AppointmentTypeNum or procNums. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: PatNum.
- **create_a_open_dental_scheduled_planned_appointment** — Schedule a new appointment from an existing planned appointment. The planned appointment is kept. Use appointment_slots list to find a free slot first. Returns: AptNum, PatNum, AptStatus, Pattern, Confirmed, TimeLocked, and more. Required: AptNum, AptDateTime, ProvNum, Op.
- **open_dental_appointment_breaks_bulk_update** — Break a Scheduled appointment, optionally sending it to the Unscheduled list and adding a missed or cancelled procedure. May create a commlog entry. The Open Dental docs list no response body. Required: AptNum, sendToUnscheduledList.
- **open_dental_appointment_notes_bulk_update** — Append a line of text to an appointment's note. The Open Dental docs list no response body. Required: AptNum, Note.
- **open_dental_appointment_confirmations_bulk_update** — Set the Confirmed status of an appointment, using either confirmVal or a defNum, not both. The Open Dental docs list no response body. Required: AptNum.
- **get_single_open_dental_appointment_type_by_id** — Get a single Open Dental AppointmentType by id. Returns: AppointmentTypeNum, AppointmentTypeName, ItemOrder, IsHidden, Pattern, CodeStr, and more. Required: id.
- **list_all_open_dental_appointment_types** — List Open Dental AppointmentTypes. Returns: AppointmentTypeNum, AppointmentTypeName, ItemOrder, IsHidden, Pattern, CodeStr, and more.
- **create_a_open_dental_appointment_type** — Create an Open Dental AppointmentType. Returns: AppointmentTypeNum, AppointmentTypeName, ItemOrder, IsHidden, Pattern, CodeStr, and more. Required: AppointmentTypeName.
- **update_a_open_dental_appointment_type_by_id** — Update an Open Dental AppointmentType by id. Only the fields you send change. Returns: AppointmentTypeNum, AppointmentTypeName, ItemOrder, IsHidden, Pattern, CodeStr, and more. Required: id.
- **delete_a_open_dental_appointment_type_by_id** — Delete an Open Dental AppointmentType by id. Cannot delete appointmenttypes that are in use on appointments or Web Sched New Pat Appt Types definitions. Returns no content. Required: id.
- **get_single_open_dental_appt_field_def_by_id** — Get a single Open Dental ApptFieldDef (custom appointment field definition) by id. Returns: ApptFieldDefNum, FieldName, FieldType, PickList, ItemOrder. Required: id.
- **list_all_open_dental_appt_field_defs** — List Open Dental ApptFieldDefs (custom appointment field definition). Returns: ApptFieldDefNum, FieldName, FieldType, PickList, ItemOrder.
- **create_a_open_dental_appt_field_def** — Create an Open Dental ApptFieldDef (custom appointment field definition). The API supports creating both Text type and PickList type ApptFieldDefs. Duplicate ApptFieldDefs are not allowed. Returns: ApptFieldDefNum, FieldName, FieldType, PickList, ItemOrder. Required: FieldName.
- **update_a_open_dental_appt_field_def_by_id** — Update an Open Dental ApptFieldDef (custom appointment field definition) by id. Only the fields you send change. Returns: ApptFieldDefNum, FieldName, FieldType, PickList, ItemOrder. Required: id.
- **get_single_open_dental_appt_field_by_id** — Get a single Open Dental ApptField (custom appointment field value) by id. Returns: ApptFieldNum, AptNum, FieldName, FieldValue. Required: id.
- **list_all_open_dental_appt_fields** — List Open Dental ApptFields (custom appointment field value). Filter by AptNum, FieldName. Returns: ApptFieldNum, AptNum, FieldName, FieldValue.
- **create_a_open_dental_appt_field** — Create an Open Dental ApptField (custom appointment field value). Returns: ApptFieldNum, AptNum, FieldName, FieldValue. Required: AptNum, FieldName, FieldValue.
- **open_dental_appt_fields_bulk_update** — Update the value of an existing ApptField, found by AptNum and FieldName in the body instead of by id (the form older Open Dental versions use). Returns: ApptFieldNum, AptNum, FieldName, FieldValue. Required: FieldValue.
- **update_a_open_dental_appt_field_by_id** — Update the value of an existing ApptField (a custom appointment field) by its ApptFieldNum in the URL. Returns: ApptFieldNum, AptNum, FieldName, FieldValue. Required: id, FieldValue.
- **delete_a_open_dental_appt_field_by_id** — Delete an Open Dental ApptField (custom appointment field value) by id. Returns no content. Required: id.
- **get_single_open_dental_asap_comm_by_id** — Get a single Open Dental AsapComm (ASAP text message record) by id. Returns: AsapCommNum, FKey, FKeyType, ScheduleNum, PatNum, ClinicNum, and more. Required: id.
- **list_all_open_dental_asap_comms** — List Open Dental AsapComms (ASAP text message record). Filter by ClinicNum, date, dateStart, dateEnd. Returns: AsapCommNum, FKey, FKeyType, ScheduleNum, PatNum, ClinicNum, and more.
- **create_a_open_dental_asap_comm** — Create an Open Dental AsapComm (ASAP text message record). Rarely used. Dental office must be subscribed to the following eServices: WebSched ASAP and Integrated Texting Feature. Returns: AsapCommNum, FKey, FKeyType, ScheduleNum, PatNum, ClinicNum, and more. Required: op, dateTimeStart.
- **list_all_open_dental_auto_note_controls** — List Open Dental AutoNoteControls (prompt fields inside an auto note). Returns: AutoNoteControlNum, Descript, ControlType, ControlLabel, ControlOptions.
- **create_a_open_dental_auto_note_control** — Create an Open Dental AutoNoteControl (prompt fields inside an auto note). Returns: AutoNoteControlNum, Descript, ControlType, ControlLabel, ControlOptions. Required: Descript, ControlType, ControlLabel.
- **update_a_open_dental_auto_note_control_by_id** — Update an Open Dental AutoNoteControl (prompt fields inside an auto note) by id. Only the fields you send change. The Open Dental docs list no response body. Required: id.
- **list_all_open_dental_auto_notes** — List Open Dental AutoNotes (reusable note template). Filter by Category. Returns: AutoNoteNum, AutoNoteName, MainText, Category.
- **create_a_open_dental_auto_note** — Create an Open Dental AutoNote (reusable note template). For information on how Auto Notes are categorized, see Definitions: Auto Note Categories. Returns: AutoNoteNum, AutoNoteName, MainText, Category. Required: AutoNoteName, MainText.
- **update_a_open_dental_auto_note_by_id** — Update an Open Dental AutoNote (reusable note template) by id. Only the fields you send change. For information on how Auto Notes are categorized, see Definitions: Auto Note Categories. Returns: AutoNoteNum, AutoNoteName, MainText, Category. Required: id.
- **get_single_open_dental_benefit_by_id** — Get a single Open Dental Benefit (insurance plan benefit line) by id. Returns: BenefitNum, PlanNum, PatPlanNum, CovCatNum, BenefitType, Percent, and more. Required: id.
- **list_all_open_dental_benefits** — List Open Dental Benefits (insurance plan benefit line). Filter by PlanNum, PatPlanNum, CovCatNum, CodeNum, CodeGroupNum. Empty Percent and MonetaryAmt values are indicated by -1. Returns: BenefitNum, PlanNum, PatPlanNum, CovCatNum, BenefitType, Percent, and more.
- **create_a_open_dental_benefit** — Create an Open Dental Benefit (insurance plan benefit line). Returns: BenefitNum, PlanNum, PatPlanNum, CovCatNum, BenefitType, Percent, and more. Required: BenefitType, CoverageLevel.
- **update_a_open_dental_benefit_by_id** — Update an Open Dental Benefit (insurance plan benefit line) by id. Only the fields you send change. Returns: BenefitNum, PlanNum, PatPlanNum, CovCatNum, BenefitType, Percent, and more. Required: id.
- **delete_a_open_dental_benefit_by_id** — Delete an Open Dental Benefit (insurance plan benefit line) by id. Returns no content. Required: id.
- **get_single_open_dental_carrier_by_id** — Get a single Open Dental Carrier (insurance carrier) by id. Returns: CarrierNum, CarrierName, Address, Address2, City, State, and more. Required: id.
- **list_all_open_dental_carriers** — List Open Dental Carriers (insurance carrier). Returns: CarrierNum, CarrierName, Address, Address2, City, State, and more.
- **create_a_open_dental_carrier** — Create an Open Dental Carrier (insurance carrier). Returns: CarrierNum, CarrierName, Address, Address2, City, State, and more. Required: CarrierName.
- **update_a_open_dental_carrier_by_id** — Update an Open Dental Carrier (insurance carrier) by id. Only the fields you send change. The Open Dental docs list no response body. Required: id.
- **list_all_open_dental_chart_module_prog_notes** — Get a patient's progress notes as shown in the Chart Module (procedures, appointments, commlogs, tasks, and more). Returns: ObjectType, PrimaryKey, Date, Time, DateTime, Th, and more. Required: PatNum.
- **list_all_open_dental_chart_module_patient_infos** — Get patient info as shown in the Chart Module (age, premedication, problems, medications, allergies). Returns: Field, Content. Required: PatNum.
- **list_all_open_dental_chart_module_planned_appts** — Get a patient's planned appointments as shown in the Planned Appointments tab of the Chart Module. Returns: AptNum, ProvNum, ItemOrder, ProcDescript, Note, AptStatus. Required: PatNum.
- **get_single_open_dental_claim_form_by_id** — Get a single Open Dental ClaimForm (claim form layout) by id. Returns: ClaimFormNum, Description, IsHidden. Required: id.
- **list_all_open_dental_claim_forms** — List Open Dental ClaimForms (claim form layout). Returns: ClaimFormNum, Description, IsHidden.
- **get_single_open_dental_claim_payment_by_id** — Get a single Open Dental ClaimPayment (insurance check or EOB payment) by id. Returns: ClaimPaymentNum, CheckDate, CheckAmt, CheckNum, BankBranch, Note, and more. Required: id.
- **list_all_open_dental_claim_payments** — List Open Dental ClaimPayments (insurance check or EOB payment). Filter by SecDateTEdit. Returns: ClaimPaymentNum, CheckDate, CheckAmt, CheckNum, BankBranch, Note, and more.
- **create_a_open_dental_claim_payment** — Create an Open Dental ClaimPayment (insurance check or EOB payment). Finalize a claimpayment for a single Claim. Cannot use this method if the dental office has the preference ClaimPaymentBatchOnly set to true. Returns: ClaimPaymentNum, CheckDate, CheckAmt, CheckNum, BankBranch, Note, and more. Required: claimNum, CheckAmt.
- **update_a_open_dental_claim_payment_by_id** — Update an Open Dental ClaimPayment (insurance check or EOB payment) by id. Only the fields you send change. Returns: ClaimPaymentNum, CheckDate, CheckAmt, CheckNum, BankBranch, Note, and more. Required: id.
- **delete_a_open_dental_claim_payment_by_id** — Delete an Open Dental ClaimPayment (insurance check or EOB payment) by id. Cannot delete a claimpayment if it is associated with an EOB or a deposit. Returns no content. Required: id.
- **create_a_open_dental_claim_payment_batch** — Create one claim payment that covers several claims (a batch insurance payment). Claim procedures must already be Received or Supplemental with a final InsPayAmt. Returns: ClaimPaymentNum, CheckDate, CheckAmt, CheckNum, BankBranch, Note, and more. Required: claimNums, CheckAmt.
- **get_single_open_dental_claim_proc_by_id** — Get a single Open Dental ClaimProc (per-procedure insurance claim line) by id. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more. Required: id.
- **list_all_open_dental_claim_procs** — List Open Dental ClaimProcs (per-procedure insurance claim line). Filter by ProcNum, ClaimNum, PatNum, Status, ClaimPaymentNum. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more.
- **update_a_open_dental_claim_proc_by_id** — Update an Open Dental ClaimProc (per-procedure insurance claim line) by id. Only the fields you send change.
ClaimProcs are complex. They are used to link procedures to claims, insurance payments to procedures or claims, and insurance estimates to procedures without a claim.
Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more.
Required: id.
- **delete_a_open_dental_claim_proc_by_id** — Delete an Open Dental ClaimProc (per-procedure insurance claim line) by id. Cannot delete claimprocs that are attached to ClaimPayments or OrthoCases, or have any associated Supplemental ClaimProcs. Cannot delete the last ClaimProc from a claim. Returns no content. Required: id.
- **open_dental_claim_proc_ins_adjusts_bulk_update** — Add or change the claim procedure that acts as an insurance adjustment. Pass the total insurance and deductible used; claim procedures may be added or deleted to match. The Open Dental docs list no response body. Required: PatPlanNum.
- **create_a_open_dental_claim_proc_ins_adjust** — Create a claim procedure that acts as an insurance benefit adjustment (insurance used or deductible used) for a patient plan. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more. Required: PatPlanNum.
- **open_dental_claim_proc_pending_supplementals_bulk_update** — Update a pending supplemental claim procedure. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more. Required: ClaimProcNum.
- **create_a_open_dental_claim_proc_pending_supplemental** — Create a claim procedure for a pending insurance overpayment or underpayment. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more. Required: ClaimProcNum.
- **create_a_open_dental_claim_proc_supplemental** — Create a claim procedure with Status Supplemental, for a supplemental insurance payment. Returns: ClaimProcNum, ProcNum, ClaimNum, PatNum, ProvNum, FeeBilled, and more. Required: ClaimProcNum.
- **get_single_open_dental_claim_by_id** — Get a single Open Dental Claim (insurance claim) by id. Returns: ClaimNum, PatNum, DateService, DateSent, ClaimStatus, DateReceived, and more. Required: id.
- **list_all_open_dental_claims** — List Open Dental Claims (insurance claim). Filter by PatNum, ClaimStatus, ClaimType, PlanNum, PlanNum2, ClaimIdentifier, SecDateTEdit. Returns: ClaimNum, PatNum, DateService, DateSent, ClaimStatus, DateReceived, and more.
- **create_a_open_dental_claim** — Create an Open Dental Claim (insurance claim).
The insurance plan specified must be associated with the patient. Creating a primary or secondary claim will use the patient's primary or secondary insurance respectively.
Returns: ClaimNum, PatNum, DateService, DateSent, ClaimStatus, DateReceived, and more.
Required: PatNum, procNums, ClaimType.
- **update_a_open_dental_claim_by_id** — Update an Open Dental Claim (insurance claim) by id. Only the fields you send change. Returns: ClaimNum, PatNum, DateService, DateSent, ClaimStatus, DateReceived, and more. Required: id.
- **delete_a_open_dental_claim_by_id** — Delete an Open Dental Claim (insurance claim) by id. Will not delete claims with insurance payments/checks attached or have a status of Received. If the claim is attached to at least one ERA it will unassociate from the ERA(s) before deleting. Returns no content. Required: id.
- **open_dental_claim_statuses_bulk_update** — Set a claim to Sent and create an Etrans entry. Rarely used; claims update is usually enough. Returns: ClaimNum, PatNum, DateService, DateSent, ClaimStatus, DateReceived, and more. Required: ClaimNum, DateSent.
- **open_dental_claim_splits_bulk_update** — Split a claim by moving the listed procedures from it to a newly created claim. Returns: ClaimNum, ProcNums. Required: ClaimNum, ProcNums.
- **list_all_open_dental_claim_trackings** — List Open Dental ClaimTrackings (claim tracking note). Filter by ClaimNum. Returns: ClaimTrackingNum, ClaimNum, TrackingType, UserNum, DateTimeEntry, Note, and more.
- **create_a_open_dental_claim_tracking** — Create an Open Dental ClaimTracking (claim tracking note). Requires one-time setup by the Dental Office, see Edit Claim - Status History Tab. Returns: ClaimTrackingNum, ClaimNum, TrackingType, UserNum, DateTimeEntry, Note, and more. Required: ClaimNum, TrackingDefNum.
- **update_a_open_dental_claim_tracking_by_id** — Update an Open Dental ClaimTracking (claim tracking note) by id. Only the fields you send change. Returns: ClaimTrackingNum, ClaimNum, TrackingType, UserNum, DateTimeEntry, Note, and more. Required: id.
- **list_all_open_dental_clinics** — List Open Dental Clinics (clinic or office location). An empty list indicates the dental office does not utilize the Clinics feature. Returns: ClinicNum, Description, Address, Address2, City, State, and more.
- **update_a_open_dental_clinic_by_id** — Update an Open Dental Clinic (clinic or office location) by id. Only the fields you send change. The Open Dental docs list no response body. Required: id.
- **get_single_open_dental_clock_event_by_id** — Get a single Open Dental ClockEvent (employee clock in or out record) by id. Returns: ClockEventNum, EmployeeNum, TimeEntered1, TimeDisplayed1, ClockStatus, Note, and more. Required: id.
- **list_all_open_dental_clock_events** — List Open Dental ClockEvents (employee clock in or out record). Filter by EmployeeNum, ClockStatus, ClinicNum, date, dateStart, dateEnd. Returns: ClockEventNum, EmployeeNum, TimeEntered1, TimeDisplayed1, ClockStatus, Note, and more.
- **get_single_open_dental_code_group_by_id** — Get a single Open Dental CodeGroup (procedure code group) by id. Returns: CodeGroupNum, GroupName, ProcCodes, ItemOrder, CodeGroupFixed, IsHidden, and more. Required: id.
- **list_all_open_dental_code_groups** — List Open Dental CodeGroups (procedure code group). Filter by IsHidden, ShowInAgeLimit, ShowInFrequency, ShowInOther, ShowInHistory. Returns: CodeGroupNum, GroupName, ProcCodes, ItemOrder, CodeGroupFixed, IsHidden, and more.
- **create_a_open_dental_code_group** — Create an Open Dental CodeGroup (procedure code group). Returns: CodeGroupNum, GroupName, ProcCodes, ItemOrder, CodeGroupFixed, IsHidden, and more. Required: GroupName.
- **update_a_open_dental_code_group_by_id** — Update an Open Dental CodeGroup (procedure code group) by id. Only the fields you send change. Returns: CodeGroupNum, GroupName, ProcCodes, ItemOrder, CodeGroupFixed, IsHidden, and more. Required: id.
- **delete_a_open_dental_code_group_by_id** — Delete an Open Dental CodeGroup (procedure code group) by id. Codegroups cannot be deleted if they are attached to a benefit. Returns no content. Required: id.
- **get_single_open_dental_commlog_by_id** — Get a single Open Dental Commlog (patient communication log entry) by id. Returns: CommlogNum, PatNum, CommDateTime, CommType, Note, Mode_, and more. Required: id.
- **list_all_open_dental_commlogs** — List Open Dental Commlogs (patient communication log entry). Filter by PatNum, DateTStamp. Returns: CommlogNum, PatNum, CommDateTime, CommType, Note, Mode_, and more.
- **create_a_open_dental_commlog** — Create an Open Dental Commlog (patient communication log entry). Returns: CommlogNum, PatNum, CommDateTime, CommType, Note, Mode_, and more. Required: PatNum, Note.
- **update_a_open_dental_commlog_by_id** — Update an Open Dental Commlog (patient communication log entry) by id. Only the fields you send change. Returns: CommlogNum, PatNum, CommDateTime, CommType, Note, Mode_, and more. Required: id.
- **list_all_open_dental_computers** — List Open Dental Computers (registered workstation). LastHeartBeat indicates which computers are actively running. Returns: ComputerNum, CompName, LastHeartBeat.
- **get_single_open_dental_cov_cat_by_id** — Get a single Open Dental CovCat (insurance coverage category) by id. Returns: CovCatNum, Description, DefaultPercent, CovOrder, IsHidden, EbenefitCat. Required: id.
- **list_all_open_dental_cov_cats** — List Open Dental CovCats (insurance coverage category). Returns: CovCatNum, Description, DefaultPercent, CovOrder, IsHidden, EbenefitCat.
- **create_a_open_dental_cov_cat** — Create an Open Dental CovCat (insurance coverage category). Do not alter Insurance Categories without a full understanding of what this does as insurance categories are global and changes may affect all plans. Returns: CovCatNum, Description, DefaultPercent, CovOrder, IsHidden, EbenefitCat. Required: Description.
- **update_a_open_dental_cov_cat_by_id** — Update an Open Dental CovCat (insurance coverage category) by id. Only the fields you send change.
This does affect all benefits that are currently tied to this CovCat. CovOrder is important as multiple benefits can apply to a single procedure code.
Returns: CovCatNum, Description, DefaultPercent, CovOrder, IsHidden, EbenefitCat.
Required: id.
- **get_single_open_dental_cov_span_by_id** — Get a single Open Dental CovSpan (procedure code range within a coverage category) by id. Returns: CovSpanNum, CovCatNum, FromCode, ToCode. Required: id.
- **list_all_open_dental_cov_spans** — List Open Dental CovSpans (procedure code range within a coverage category). Filter by CovCatNum. Returns: CovSpanNum, CovCatNum, FromCode, ToCode.
- **create_a_open_dental_cov_span** — Create an Open Dental CovSpan (procedure code range within a coverage category). Returns: CovSpanNum, CovCatNum, FromCode, ToCode. Required: CovCatNum, FromCode, ToCode.
- **update_a_open_dental_cov_span_by_id** — Update an Open Dental CovSpan (procedure code range within a coverage category) by id. Only the fields you send change. Returns: CovSpanNum, CovCatNum, FromCode, ToCode. Required: id.
- **delete_a_open_dental_cov_span_by_id** — Delete an Open Dental CovSpan (procedure code range within a coverage category) by id. Returns no content. Required: id.
- **get_single_open_dental_definition_by_id** — Get a single Open Dental Definition (office-defined list item, such as a billing type or confirmation status) by id. Returns: DefNum, Category, ItemOrder, ItemName, ItemValue, ItemColor, and more. Required: id.
- **list_all_open_dental_definitions** — List Open Dental Definitions (office-defined list item, such as a billing type or confirmation status). Filter by Category, category, includeHidden. Returns: DefNum, Category, ItemOrder, ItemName, ItemValue, ItemColor, and more.
- **create_a_open_dental_definition** — Create an Open Dental Definition (office-defined list item, such as a billing type or confirmation status). Creates a new definition, attempts to set the Category (definition.Category) will be silently ignored. Returns: DefNum, Category, ItemOrder, ItemName, ItemValue, ItemColor, and more. Required: category, ItemName.
- **update_a_open_dental_definition_by_id** — Update an Open Dental Definition (office-defined list item, such as a billing type or confirmation status) by id. Only the fields you send change. Returns: DefNum, Category, ItemOrder, ItemName, ItemValue, ItemColor, and more. Required: id.
- **list_all_open_dental_definition_category_options** — Get what each definition category supports (which fields can be set on definitions create and update). Static for an Open Dental version, so cache it. Returns: Category, CanEditName, EnableValue, EnableColor, CanHide, IsValueDefNum, and more.
- **get_single_open_dental_deposit_by_id** — Get a single Open Dental Deposit (bank deposit) by id. Returns: DepositNum, DateDeposit, BankAccountInfo, Amount, Memo, Batch, and more. Required: id.
- **list_all_open_dental_deposits** — List Open Dental Deposits (bank deposit). Filter by DateDeposit. Returns: DepositNum, DateDeposit, BankAccountInfo, Amount, Memo, Batch, and more.
- **create_a_open_dental_deposit** — Create an Open Dental Deposit (bank deposit). Returns: DepositNum, DateDeposit, BankAccountInfo, Amount, Memo, Batch, and more.
- **update_a_open_dental_deposit_by_id** — Update an Open Dental Deposit (bank deposit) by id. Only the fields you send change. Returns: DepositNum, DateDeposit, BankAccountInfo, Amount, Memo, Batch, and more. Required: id.
- **delete_a_open_dental_deposit_by_id** — Delete an Open Dental Deposit (bank deposit) by id. Cannot delete deposits that are attached to transactions older than 2 days, or transactions that are reconciled. Returns no content. Required: id.
- **get_single_open_dental_discount_plan_by_id** — Get a single Open Dental DiscountPlan by id. Returns: DiscountPlanNum, Description, FeeSchedNum, DefNum, IsHidden, PlanNote, and more. Required: id.
- **list_all_open_dental_discount_plans** — List Open Dental DiscountPlans. Returns: DiscountPlanNum, Description, FeeSchedNum, DefNum, IsHidden, PlanNote, and more.
- **create_a_open_dental_discount_plan** — Create an Open Dental DiscountPlan. Frequencies that do not have a limitation display as blank in Open Dental and are stored as -1 in the database. Returns: DiscountPlanNum, Description, FeeSchedNum, DefNum, IsHidden, PlanNote, and more. Required: Description, FeeSchedNum, DefNum.
- **update_a_open_dental_discount_plan_by_id** — Update an Open Dental DiscountPlan by id. Only the fields you send change.
Updating Description and/or PlanNote will overwrite existing values. Frequencies that do not have a limitation display as blank in Open Dental and are stored as -1 in the database.
Returns: DiscountPlanNum, Description, FeeSchedNum, DefNum, IsHidden, PlanNote, and more.
Required: id.
- **list_all_open_dental_discount_plan_subs** — List Open Dental DiscountPlanSubs (patient discount plan enrollment). Gets a DiscountPlanSub from a patient that is subscribed to a Discount Plan. Returns: DiscountSubNum, DiscountPlanNum, PatNum, DateEffective, DateTerm, SubNote. Required: PatNum.
- **create_a_open_dental_discount_plan_sub** — Create an Open Dental DiscountPlanSub (patient discount plan enrollment). Subscribes a patient to an existing DiscountPlan. The Open Dental docs list no response body. Required: DiscountPlanNum, PatNum.
- **update_a_open_dental_discount_plan_sub_by_id** — Update an Open Dental DiscountPlanSub (patient discount plan enrollment) by id. Only the fields you send change. Updating SubNote will overwrite the existing subscriber note. The Open Dental docs list no response body. Required: id, PatNum.
- **delete_a_open_dental_discount_plan_sub_by_id** — Delete an Open Dental DiscountPlanSub (patient discount plan enrollment) by id. Returns no content. Required: id.
- **get_single_open_dental_disease_def_by_id** — Get a single Open Dental DiseaseDef (problem definition) by id. Returns: DiseaseDefNum, DiseaseName, IsHidden, DateTStamp, ICD9Code, ICD10Code, and more. Required: id.
- **list_all_open_dental_disease_defs** — List Open Dental DiseaseDefs (problem definition). Returns: DiseaseDefNum, DiseaseName, IsHidden, DateTStamp, ICD9Code, ICD10Code, and more.
- **create_a_open_dental_disease_def** — Create an Open Dental DiseaseDef (problem definition). The Open Dental docs list no response body. Required: DiseaseName.
- **get_single_open_dental_disease_by_id** — Get a single Open Dental Disease (patient problem) by id. Returns: DiseaseNum, PatNum, DiseaseDefNum, PatNote, ProbStatus, DateStart, and more. Required: id.
- **list_all_open_dental_diseases** — List Open Dental Diseases (patient problem). Filter by PatNum. Returns: DiseaseNum, PatNum, DiseaseDefNum, PatNote, ProbStatus, DateStart, and more.
- **create_a_open_dental_disease** — Create an Open Dental Disease (patient problem). Attaches a diseaseDef (Problem) to a patient. Returns: DiseaseNum, PatNum, DiseaseDefNum, PatNote, ProbStatus, DateStart, and more. Required: PatNum.
- **update_a_open_dental_disease_by_id** — Update an Open Dental Disease (patient problem) by id. Only the fields you send change. Returns: DiseaseNum, PatNum, DiseaseDefNum, PatNote, ProbStatus, DateStart, and more. Required: id.
- **delete_a_open_dental_disease_by_id** — Delete an Open Dental Disease (patient problem) by id. Returns no content. Required: id.
- **get_single_open_dental_document_by_id** — Get a single Open Dental Document by id. The result does not include the actual document file. Returns: DocNum, Description, DateCreated, DocCategory, PatNum, FileName, and more. Required: id.
- **list_all_open_dental_documents** — List Open Dental Documents. PatNum is required. If the file storage method is InDatabase, the returned filePath field will be blank. Returns: DocNum, MountNum, Description, PatNum, Note, DateCreated, and more. Required: PatNum.
- **update_a_open_dental_document_by_id** — Update an Open Dental Document by id. Only the fields you send change. Returns: DocNum, Description, DateCreated, DocCategory, PatNum, FileName, and more. Required: id.
- **delete_a_open_dental_document_by_id** — Delete an Open Dental Document by id. Deletes both the database row and any associated file from the A to Z folder. Returns no content. Required: id.
- **create_a_open_dental_document_sftp_download** — Place a document's file on an SFTP site you control, so you can download it from there. Existing files with the same name are overwritten. The Open Dental docs list no response body. Required: SftpAddress, SftpUsername, SftpPassword.
- **create_a_open_dental_document_sftp_upload** — Create a document by pulling a file you already uploaded to your own SFTP site into the patient's images (AtoZ folder, database, or cloud). Returns: DocNum, Description, ToothNumbers, Note, DateCreated, DateTStamp, and more. Required: PatNum, SftpAddress, SftpUsername, SftpPassword.
- **create_a_open_dental_document_upload** — Create a document from a base64 file you send, for a patient. The file is stored in document.Note until the customer first opens it. Returns: DocNum, Description, DateCreated, DocCategory, PatNum, FileName, and more. Required: PatNum, rawBase64, extension.
- **create_a_open_dental_document_thumbnail** — Create thumbnails (100 x 100) for all of a patient's image documents and place them on an SFTP site you control. Mounts and PDFs are skipped. Returns: DocNum, FileName. Required: PatNum, SftpAddress, SftpUsername, SftpPassword.
- **create_a_open_dental_document_mount_download** — Place the individual images of one mount on an SFTP site you control. Rarely needed; document_sftp_downloads returns the composite mount image. Returns: DocNum, FileName. Required: MountNum, SftpAddress, SftpUsername, SftpPassword.
- **create_a_open_dental_document_url_upload** — Create a document that points at a URL. The URL is stored in document.Note and downloaded when the customer first opens it. Returns: DocNum, Description, DateCreated, DocCategory, PatNum, FileName, and more. Required: PatNum, url.
- **get_single_open_dental_ehr_patient_by_id** — Get a single Open Dental EhrPatient (EHR patient extension record) by id. Returns: PatNum, MotherMaidenFname, MotherMaidenLname, VacShareOk, MedicaidState, SexualOrientation, and more. Required: id.
- **update_a_open_dental_ehr_patient_by_id** — Update an Open Dental EhrPatient (EHR patient extension record) by id. Only the fields you send change. Returns: PatNum, MotherMaidenFname, MotherMaidenLname, VacShareOk, MedicaidState, SexualOrientation, and more. Required: id.
- **get_single_open_dental_employee_by_id** — Get a single Open Dental Employee (staff member, not a login user) by id. Returns: EmployeeNum, LName, FName, MiddleI, IsHidden, ClockStatus, and more. Required: id.
- **list_all_open_dental_employees** — List Open Dental Employees (staff member, not a login user). Filter by ReportsTo. Returns: EmployeeNum, LName, FName, MiddleI, IsHidden, ClockStatus, and more.
- **create_a_open_dental_employee** — Create an Open Dental Employee (staff member, not a login user). Returns: EmployeeNum, LName, FName, MiddleI, IsHidden, ClockStatus, and more.
- **update_a_open_dental_employee_by_id** — Update an Open Dental Employee (staff member, not a login user) by id. Only the fields you send change. Cannot update it in a way that would cause LName and FName to both end up blank. Returns: EmployeeNum, LName, FName, MiddleI, IsHidden, ClockStatus, and more. Required: id.
- **get_single_open_dental_employer_by_id** — Get a single Open Dental Employer (patient employer) by id. Returns: EmployerNum, EmpName, Address, Address2, City, State, and more. Required: id.
- **list_all_open_dental_employers** — List Open Dental Employers (patient employer). Returns: EmployerNum, EmpName, Address, Address2, City, State, and more.
- **create_a_open_dental_employer** — Create an Open Dental Employer (patient employer). Returns: EmployerNum, EmpName, Address, Address2, City, State, and more. Required: EmpName.
- **update_a_open_dental_employer_by_id** — Update an Open Dental Employer (patient employer) by id. Only the fields you send change. Returns: EmployerNum, EmpName, Address, Address2, City, State, and more. Required: id, EmpName.
- **delete_a_open_dental_employer_by_id** — Delete an Open Dental Employer (patient employer) by id. Employers associated with a patient or an insurance plan cannot be deleted. Returns no content. Required: id.
- **list_all_open_dental_eob_attaches** — List Open Dental EobAttaches (EOB image attached to a claim payment). Returns: EobAttachNum, ClaimPaymentNum, DateTCreated, FileName, RawBase64. Required: ClaimPaymentNum.
- **delete_a_open_dental_eob_attach_by_id** — Delete an Open Dental EobAttach (EOB image attached to a claim payment) by id. Deletes both the database row and any associated file from the A to Z folder. Returns no content. Required: id.
- **create_a_open_dental_eob_attach_sftp_download** — Place an EOB attachment image on an SFTP site you control, so you can download it from there. Existing files with the same name are overwritten. The Open Dental docs list no response body. Required: EobAttachNum, SftpAddress, SftpUsername, SftpPassword.
- **create_a_open_dental_eob_attach_sftp_upload** — Attach an EOB image to a claim payment by pulling a file you already uploaded to your own SFTP site. Returns: EobAttachNum, ClaimPaymentNum, DateTCreated, FileName, RawBase64. Required: ClaimPaymentNum, SftpAddress, SftpUsername, SftpPassword.
- **get_single_open_dental_etrans_message_text_by_id** — Get a single Open Dental EtransMessageText (electronic transaction message text) by id. For more information, see Etrans Edit. Returns: EtransMessageTextNum, MessageText. Required: id.
- **list_all_open_dental_etranss** — List Open Dental Etranss (electronic transaction record, such as a claim or eligibility check). Filter by CarrierNum, ClaimNum. Returns: EtransNum, DateTimeTrans, ClearingHouseNum, Etype, ClaimNum, OfficeSequenceNumber, and more. Required: PatNum.
- **list_all_open_dental_family_module_insurances** — Get a patient's insurance as shown in the Family Module. Returns 0 to 2 rows, one per coverage. Returns: PatNum, InsSubNum, Subscriber, SubscriberID, SubscNote, PatPlanNum, and more. Required: PatNum.
- **get_single_open_dental_fee_by_id** — Get a single Open Dental Fee (procedure fee) by id. Returns: FeeNum, Amount, FeeSched, CodeNum, ClinicNum, ProvNum, and more. Required: id.
- **list_all_open_dental_fees** — List Open Dental Fees (procedure fee). Filter by FeeSched, CodeNum, ClinicNum, ProvNum. Any fees with ClinicNum and/or ProvNum greater than zero are associated with a non-global FeeSched. Returns: FeeNum, Amount, FeeSched, CodeNum, ClinicNum, ProvNum, and more.
- **create_a_open_dental_fee** — Create an Open Dental Fee (procedure fee). Fees are complex. If the FeeSched is non-global, you can specify a ClinicNum and/or a ProvNum. Returns: FeeNum, Amount, FeeSched, CodeNum, ClinicNum, ProvNum, and more. Required: Amount, FeeSched, CodeNum.
- **update_a_open_dental_fee_by_id** — Update an Open Dental Fee (procedure fee) by id. Only the fields you send change. Returns: FeeNum, Amount, FeeSched, CodeNum, ClinicNum, ProvNum, and more. Required: id, Amount.
- **delete_a_open_dental_fee_by_id** — Delete an Open Dental Fee (procedure fee) by id. Returns no content. Required: id.
- **list_all_open_dental_fee_scheds** — List Open Dental FeeScheds (fee schedule). Returns: FeeSchedNum, Description, FeeSchedType, ItemOrder, IsHidden, IsGlobal, and more.
- **create_a_open_dental_fee_sched** — Create an Open Dental FeeSched (fee schedule). Global fee schedules only allow a single (global) fee per procedure. When using a non-global fee schedule, fees can be overridden for clinics or providers. Returns: FeeSchedNum, Description, FeeSchedType, ItemOrder, IsHidden, IsGlobal, and more. Required: Description, FeeSchedType.
- **update_a_open_dental_fee_sched_by_id** — Update an Open Dental FeeSched (fee schedule) by id. Only the fields you send change. Returns: FeeSchedNum, Description, FeeSchedType, ItemOrder, IsHidden, IsGlobal, and more. Required: id.
- **get_single_open_dental_guardian_by_id** — Get a single Open Dental Guardian (guardian link between two patients) by id. Returns: GuardianNum, PatNumChild, PatNumGuardian, Relationship, IsGuardian. Required: id.
- **list_all_open_dental_guardians** — List Open Dental Guardians (guardian link between two patients). Filter by PatNumChild, PatNumGuardian. Returns: GuardianNum, PatNumChild, PatNumGuardian, Relationship, IsGuardian.
- **create_a_open_dental_guardian** — Create an Open Dental Guardian (guardian link between two patients). Returns: GuardianNum, PatNumChild, PatNumGuardian, Relationship, IsGuardian. Required: PatNumChild, PatNumGuardian, Relationship.
- **update_a_open_dental_guardian_by_id** — Update an Open Dental Guardian (guardian link between two patients) by id. Only the fields you send change. Returns: GuardianNum, PatNumChild, PatNumGuardian, Relationship, IsGuardian. Required: id.
- **delete_a_open_dental_guardian_by_id** — Delete an Open Dental Guardian (guardian link between two patients) by id. Returns no content. Required: id.
- **list_all_open_dental_hist_appointments** — List Open Dental HistAppointments (appointment history entry).
Filter by HistApptAction, AptNum, PatNum, AptStatus, ClinicNum, date, dateStart, and more.
A HistAppointment is a historical copy of an appointment. A new HistAppointment entry is created anytime an appointment is created, changed, missed, cancelled, or deleted.
Returns: HistApptNum, HistUserNum, HistDateTStamp, HistApptAction, ApptSource, AptNum, and more.
- **get_single_open_dental_ins_plan_by_id** — Get a single Open Dental InsPlan (insurance plan) by id. Returns: PlanNum, GroupName, GroupNum, PlanNote, FeeSched, PlanType, and more. Required: id.
- **list_all_open_dental_ins_plans** — List Open Dental InsPlans (insurance plan). Filter by PlanType, CarrierNum. Returns: PlanNum, GroupName, GroupNum, PlanNote, FeeSched, PlanType, and more.
- **create_a_open_dental_ins_plan** — Create an Open Dental InsPlan (insurance plan). Returns: PlanNum, GroupName, GroupNum, PlanNote, FeeSched, PlanType, and more. Required: CarrierNum.
- **update_a_open_dental_ins_plan_by_id** — Update an Open Dental InsPlan (insurance plan) by id. Only the fields you send change. Returns: PlanNum, GroupName, GroupNum, PlanNote, FeeSched, PlanType, and more. Required: id.
- **get_single_open_dental_ins_sub_by_id** — Get a single Open Dental InsSub (insurance subscriber, a patient covered under a plan) by id. Returns: InsSubNum, PlanNum, Subscriber, DateEffective, DateTerm, SubscriberID, and more. Required: id.
- **list_all_open_dental_ins_subs** — List Open Dental InsSubs (insurance subscriber, a patient covered under a plan). Filter by PlanNum, Subscriber, SecDateTEdit. If no parameter is given, it will get all InsSubs ordered by InsSubNum. Returns: InsSubNum, PlanNum, Subscriber, DateEffective, DateTerm, SubscriberID, and more.
- **create_a_open_dental_ins_sub** — Create an Open Dental InsSub (insurance subscriber, a patient covered under a plan). This does not create a new insurance plan or change benefits. Returns: InsSubNum, PlanNum, Subscriber, DateEffective, DateTerm, SubscriberID, and more. Required: PlanNum, Subscriber, SubscriberID.
- **update_a_open_dental_ins_sub_by_id** — Update an Open Dental InsSub (insurance subscriber, a patient covered under a plan) by id. Only the fields you send change. This can be used to assign a different PlanNum or Subscriber to this InsSub. The Open Dental docs list no response body. Required: id.
- **delete_a_open_dental_ins_sub_by_id** — Delete an Open Dental InsSub (insurance subscriber, a patient covered under a plan) by id. Will fail if any PatPlans exist. Returns no content. Required: id.
- **get_single_open_dental_ins_verify_by_id** — Get a single Open Dental InsVerify (insurance verification record) by id. Returns: InsVerifyNum, DateLastVerified, UserNum, VerifyType, FKey, DefNum, and more. Required: id.
- **list_all_open_dental_ins_verifies** — List Open Dental InsVerifies (insurance verification record). Filter by VerifyType, FKey, SecDateTEdit. Returns: InsVerifyNum, DateLastVerified, UserNum, VerifyType, FKey, DefNum, and more.
- **open_dental_ins_verifies_bulk_update** — Update an insurance verification, found by VerifyType and FKey in the body. Older entries are kept in the insverifyhist table. Returns: InsVerifyNum, DateLastVerified, UserNum, VerifyType, FKey, DefNum, and more. Required: VerifyType, FKey.
- **get_single_open_dental_lab_case_by_id** — Get a single Open Dental LabCase by id. Returns: LabCaseNum, PatNum, LaboratoryNum, AptNum, PlannedAptNum, DateTimeDue, and more. Required: id.
- **list_all_open_dental_lab_cases** — List Open Dental LabCases. Filter by PatNum, LaboratoryNum, AptNum, PlannedAptNum, ProvNum. Returns: LabCaseNum, PatNum, LaboratoryNum, AptNum, PlannedAptNum, DateTimeDue, and more.
- **create_a_open_dental_lab_case** — Create an Open Dental LabCase. Returns: LabCaseNum, PatNum, LaboratoryNum, AptNum, PlannedAptNum, DateTimeDue, and more. Required: PatNum, LaboratoryNum, ProvNum.
- **update_a_open_dental_lab_case_by_id** — Update an Open Dental LabCase by id. Only the fields you send change. Returns: LabCaseNum, PatNum, LaboratoryNum, AptNum, PlannedAptNum, DateTimeDue, and more. Required: id.
- **delete_a_open_dental_lab_case_by_id** — Delete an Open Dental LabCase by id. Returns no content. Required: id.
- **get_single_open_dental_laboratory_by_id** — Get a single Open Dental Laboratory (dental lab) by id. Returns: LaboratoryNum, Description, Phone, Notes, Slip, Address, and more. Required: id.
- **list_all_open_dental_laboratories** — List Open Dental Laboratories (dental lab). Returns: LaboratoryNum, Description, Phone, Notes, Slip, Address, and more.
- **create_a_open_dental_laboratory** — Create an Open Dental Laboratory (dental lab). Returns: LaboratoryNum, Description, Phone, Notes, Slip, Address, and more. Required: Description.
- **update_a_open_dental_laboratory_by_id** — Update an Open Dental Laboratory (dental lab) by id. Only the fields you send change. Returns: LaboratoryNum, Description, Phone, Notes, Slip, Address, and more. Required: id.
- **get_single_open_dental_lab_turnaround_by_id** — Get a single Open Dental LabTurnaround (lab turnaround time) by id. Returns: LabTurnaroundNum, LaboratoryNum, Description, DaysPublished, DaysActual. Required: id.
- **list_all_open_dental_lab_turnarounds** — List Open Dental LabTurnarounds (lab turnaround time). Filter by LaboratoryNum. Returns: LabTurnaroundNum, LaboratoryNum, Description, DaysPublished, DaysActual.
- **create_a_open_dental_lab_turnaround** — Create an Open Dental LabTurnaround (lab turnaround time). Returns: LabTurnaroundNum, LaboratoryNum, Description, DaysPublished, DaysActual. Required: LaboratoryNum, Description, DaysActual.
- **update_a_open_dental_lab_turnaround_by_id** — Update an Open Dental LabTurnaround (lab turnaround time) by id. Only the fields you send change. Returns: LabTurnaroundNum, LaboratoryNum, Description, DaysPublished, DaysActual. Required: id.
- **get_single_open_dental_medication_pat_by_id** — Get a single Open Dental MedicationPat (medication assigned to a patient) by id. Returns: MedicationPatNum, PatNum, MedicationNum, PatNote, DateStart, DateStop, and more. Required: id.
- **list_all_open_dental_medication_pats** — List Open Dental MedicationPats (medication assigned to a patient). Filter by PatNum, includeDiscontinued. Returns: MedicationPatNum, PatNum, MedicationNum, PatNote, DateStart, DateStop, and more.
- **create_a_open_dental_medication_pat** — Create an Open Dental MedicationPat (medication assigned to a patient). Attaches a medication to a patient. Returns: MedicationPatNum, PatNum, MedicationNum, PatNote, DateTStamp, DateStart, and more. Required: PatNum.
- **update_a_open_dental_medication_pat_by_id** — Update an Open Dental MedicationPat (medication assigned to a patient) by id. Only the fields you send change. Returns: MedicationPatNum, PatNum, MedicationNum, PatNote, DateTStamp, DateStart, and more. Required: id.
- **delete_a_open_dental_medication_pat_by_id** — Delete an Open Dental MedicationPat (medication assigned to a patient) by id. Returns no content. Required: id.
- **get_single_open_dental_medication_by_id** — Get a single Open Dental Medication (medication definition) by id. Returns: MedicationNum, MedName, GenericNum, Notes, DateTStamp, IsHidden. Required: id.
- **list_all_open_dental_medications** — List Open Dental Medications (medication definition). Returns: MedicationNum, MedName, GenericNum, Notes, DateTStamp, IsHidden.
- **create_a_open_dental_medication** — Create an Open Dental Medication (medication definition). Returns: MedicationNum, MedName, GenericNum, Notes, DateTStamp, IsHidden. Required: MedName.
- **update_a_open_dental_medication_by_id** — Update an Open Dental Medication (medication definition) by id. Only the fields you send change. Returns: MedicationNum, MedName, GenericNum, Notes, DateTStamp, IsHidden. Required: id.
- **delete_a_open_dental_medication_by_id** — Delete an Open Dental Medication (medication definition) by id. Returns no content. Required: id.
- **get_single_open_dental_operatory_by_id** — Get a single Open Dental Operatory (treatment room) by id. Returns: OperatoryNum, OpName, Abbrev, ItemOrder, IsHidden, ProvDentist, and more. Required: id.
- **list_all_open_dental_operatories** — List Open Dental Operatories (treatment room). Filter by ClinicNum. Returns: OperatoryNum, OpName, Abbrev, ItemOrder, IsHidden, ProvDentist, and more.
- **list_all_open_dental_pat_field_defs** — List Open Dental PatFieldDefs (custom patient field definition). Returns: PatFieldDefNum, FieldName, FieldType, PickList, IsHidden.
- **create_a_open_dental_pat_field_def** — Create an Open Dental PatFieldDef (custom patient field definition). Returns: PatFieldDefNum, FieldName, FieldType, PickList, IsHidden. Required: FieldName, FieldType.
- **update_a_open_dental_pat_field_def_by_id** — Update an Open Dental PatFieldDef (custom patient field definition) by id. Only the fields you send change. Returns: PatFieldDefNum, FieldName, FieldType, PickList, IsHidden. Required: id.
- **delete_a_open_dental_pat_field_def_by_id** — Delete an Open Dental PatFieldDef (custom patient field definition) by id. Cannot delete a patfielddef that is in use. Returns no content. Required: id.
- **get_single_open_dental_pat_field_by_id** — Get a single Open Dental PatField (custom patient field value) by id. Returns: PatFieldNum, PatNum, FieldName, FieldValue, SecDateEntry, SecDateTEdit. Required: id.
- **list_all_open_dental_pat_fields** — List Open Dental PatFields (custom patient field value). Filter by PatNum, FieldName, SecDateTEdit. Returns: PatFieldNum, PatNum, FieldName, FieldValue, SecDateEntry, SecDateTEdit.
- **create_a_open_dental_pat_field** — Create an Open Dental PatField (custom patient field value). Cannot create PatFields associated with hidden PatFieldDefs. Returns: PatFieldNum, PatNum, FieldName, FieldValue, SecDateEntry, SecDateTEdit. Required: PatNum, FieldName, FieldValue.
- **open_dental_pat_fields_bulk_update** — Update the value of an existing PatField (a custom patient field), found by PatNum and FieldName in the body. There is no id in the URL. Returns: PatFieldNum, PatNum, FieldName, FieldValue, SecDateEntry, SecDateTEdit. Required: PatNum, FieldName, FieldValue.
- **delete_a_open_dental_pat_field_by_id** — Delete an Open Dental PatField (custom patient field value) by id. Will not delete a PatField with an associated PatFieldDef of type CareCreditStatus. Returns no content. Required: id.
- **get_single_open_dental_patient_note_by_id** — Get a single Open Dental PatientNote (patient notes record, one per patient) by id. PatientNotes have a 1:1 relationship to Patients and contain additional information about the patient. The PatNum must be included in the URL. Returns: PatNum, FamFinancial, Medical, Service, MedicalComp, Treatment, and more. Required: id.
- **list_all_open_dental_patient_notes** — List Open Dental PatientNotes (patient notes record, one per patient). Returns: PatNum, FamFinancial, Medical, Service, MedicalComp, Treatment, and more.
- **update_a_open_dental_patient_note_by_id** — Update an Open Dental PatientNote (patient notes record, one per patient) by id. Only the fields you send change. Returns: PatNum, FamFinancial, Medical, Service, MedicalComp, Treatment, and more. Required: id.
- **list_all_open_dental_patient_races** — List Open Dental PatientRaces (patient race or ethnicity entry). Gets all of the Race and Ethnicity information for a Patient, similarly to how it shows in the Edit Patient Information: Public Health Tab. Returns: PatientRaceNum, PatNum, CdcrecCode. Required: PatNum.
- **get_single_open_dental_patient_by_id** — Get a single Open Dental Patient by id. Returns: PatNum, LName, FName, MiddleI, Preferred, PatStatus, and more. Required: id.
- **list_all_open_dental_patients** — List patients with the fast Simple search. Filter by name, status, birthdate, phone, provider, clinic, insurance, or DateTStamp for incremental sync. Preferred over search_patients. Returns: PatNum, LName, FName, MiddleI, Preferred, PatStatus, and more.
- **create_a_open_dental_patient** — Create an Open Dental Patient. The only required fields are LName and FName. All other fields are optional. Returns: PatNum, LName, FName, MiddleI, Preferred, PatStatus, and more. Required: LName, FName.
- **update_a_open_dental_patient_by_id** — Update an Open Dental Patient by id. Only the fields you send change. Languages are stored in ISO 639-2 format, unless custom, in the preference "LanguagesUsedByPatients". Returns: PatNum, LName, FName, MiddleI, Preferred, PatStatus, and more. Required: id.
- **list_all_open_dental_search_patients** — Search patients with the Patient Select-style search. Most string filters match part of the value and ignore case. Returns fewer fields and can be slow on large databases; prefer patients list. Combine LName, FName, and Birthdate for a unique match. Returns: PatNum, LName, FName, MiddleI, Preferred, PatStatus, and more.
- **list_all_open_dental_pat_plans** — List Open Dental PatPlans (patient insurance coverage link). Filter by PatNum, InsSubNum. Returns: PatPlanNum, PatNum, Ordinal, IsPending, Relationship, PatID, and more.
- **create_a_open_dental_pat_plan** — Create an Open Dental PatPlan (patient insurance coverage link). Returns: PatPlanNum, PatNum, Ordinal, IsPending, Relationship, InsSubNum, and more. Required: PatNum, InsSubNum.
- **update_a_open_dental_pat_plan_by_id** — Update an Open Dental PatPlan (patient insurance coverage link) by id. Only the fields you send change. This updates an existing PatPlan row in the database. PatNum cannot be updated. Returns: PatPlanNum, PatNum, Ordinal, IsPending, Relationship, InsSubNum, and more. Required: id.
- **delete_a_open_dental_pat_plan_by_id** — Delete an Open Dental PatPlan (patient insurance coverage link) by id. This is called "Drop" in the Open Dental UI. This removes a PatPlan row from the database, indicating no coverage, but does not affect the InsPlan itself. Returns no content. Required: id.
- **get_single_open_dental_pat_restriction_by_id** — Get a single Open Dental PatRestriction (patient restriction) by id. Returns: PatRestrictionNum, PatNum, PatRestrictType. Required: id.
- **list_all_open_dental_pat_restrictions** — List Open Dental PatRestrictions (patient restriction). Filter by PatNum. Returns: PatRestrictionNum, PatNum, PatRestrictType.
- **create_a_open_dental_pat_restriction** — Create an Open Dental PatRestriction (patient restriction). Returns: PatRestrictionNum, PatNum, PatRestrictType. Required: PatNum, PatRestrictType.
- **delete_a_open_dental_pat_restriction_by_id** — Delete an Open Dental PatRestriction (patient restriction) by id. Returns no content. Required: id.
- **list_all_open_dental_payments** — List Open Dental Payments (patient payment). Filter by PayType, PatNum, DateEntry. Returns: PayNum, PayType, PayDate, PayAmt, CheckNum, BankBranch, and more.
- **create_a_open_dental_payment** — Create an Open Dental Payment (patient payment). Does not support insurance payments or income transfers. Payments apply to outstanding charges in a FIFO order. Returns: PayNum, PayType, PayDate, PayAmt, CheckNum, BankBranch, and more. Required: PayAmt, PatNum.
- **update_a_open_dental_payment_by_id** — Update an Open Dental Payment (patient payment) by id. Only the fields you send change. Returns: PayNum, PayType, PayDate, PayAmt, CheckNum, BankBranch, and more. Required: id.
- **create_a_open_dental_payment_refund** — Create a refund payment for an existing payment. Payments on payment plans or with negative paysplits cannot be refunded. Returns: PayNum, PayType, PayDate, PayAmt, CheckNum, BankBranch, and more. Required: PayNum.
- **open_dental_payment_partials_bulk_update** — Replace a payment's paysplits with new ones allocated to procedures and/or payment plan charges. Rarely used. The amounts must add up to the payment's PayAmt. Returns: PayNum, PayType, PayDate, PayAmt, CheckNum, BankBranch, and more. Required: PayNum.
- **list_all_open_dental_pay_plan_charges** — List Open Dental PayPlanCharges (payment plan charge). Filter by includeProjected. Returns: PayPlanChargeNum, PayPlanNum, Guarantor, PatNum, ChargeDate, Principal, and more. Required: PayPlanNum.
- **create_a_open_dental_pay_plan_charge** — Create an Open Dental PayPlanCharge (payment plan charge). Returns: PayPlanChargeNum, PayPlanNum, Guarantor, PatNum, ChargeDate, Principal, and more. Required: PayPlanNum, ChargeDate, Principal, FKey, LinkType.
- **update_a_open_dental_pay_plan_charge_by_id** — Update an Open Dental PayPlanCharge (payment plan charge) by id. Only the fields you send change. Returns: PayPlanChargeNum, PayPlanNum, Guarantor, PatNum, ChargeDate, Principal, and more. Required: id.
- **delete_a_open_dental_pay_plan_charge_by_id** — Delete an Open Dental PayPlanCharge (payment plan charge) by id. Will not delete a payplancharge with an associated PaySplit. Returns no content. Required: id.
- **get_single_open_dental_pay_plan_link_by_id** — Get a single Open Dental PayPlanLink (link between a dynamic payment plan and a procedure or adjustment) by id. Returns: PayPlanLinkNum, PayPlanNum, LinkType, FKey, AmountOverride, SecDateTEntry. Required: id.
- **list_all_open_dental_pay_plan_links** — List Open Dental PayPlanLinks (link between a dynamic payment plan and a procedure or adjustment). Filter by PayPlanNum. Can optionally filter by PayPlanNum. Returns: PayPlanLinkNum, PayPlanNum, LinkType, FKey, AmountOverride, SecDateTEntry.
- **create_a_open_dental_pay_plan_link** — Create an Open Dental PayPlanLink (link between a dynamic payment plan and a procedure or adjustment). Returns: PayPlanLinkNum, PayPlanNum, LinkType, FKey, AmountOverride, SecDateTEntry. Required: PayPlanNum, LinkType, FKey.
- **update_a_open_dental_pay_plan_link_by_id** — Update an Open Dental PayPlanLink (link between a dynamic payment plan and a procedure or adjustment) by id. Only the fields you send change. Returns: PayPlanLinkNum, PayPlanNum, LinkType, FKey, AmountOverride, SecDateTEntry. Required: id.
- **delete_a_open_dental_pay_plan_link_by_id** — Delete an Open Dental PayPlanLink (link between a dynamic payment plan and a procedure or adjustment) by id. Returns no content. Required: id.
- **get_single_open_dental_pay_plan_by_id** — Get a single Open Dental PayPlan (payment plan) by id. Returns: PayPlanNum, PatNum, Guarantor, PayPlanDate, APR, Note, and more. Required: id.
- **list_all_open_dental_pay_plans** — List Open Dental PayPlans (payment plan). Filter by PatNum, Guarantor. An Insurance payment plan has a PlanNum and InsSubNum value greater then zero, a Dynamic payment plan has IsDynamic as true, otherwise it is a Patient payment plan. Returns: PayPlanNum, PatNum, Guarantor, PayPlanDate, APR, Note, and more.
- **create_a_open_dental_pay_plan** — Create an Open Dental PayPlan (payment plan). This method is deprecated in version 23.3.1. This is a patient payment plan, not an insurance or dynamic payment plan. The Open Dental docs list no response body. Required: PatNum.
- **create_a_open_dental_dynamic_pay_plan** — Create a dynamic payment plan for a patient, tied to procedures and/or adjustments. Returns: PayPlanNum, PatNum, Guarantor, PayPlanDate, APR, Note, and more. Required: PatNum.
- **open_dental_dynamic_pay_plans_bulk_update** — Update a dynamic payment plan. Returns: PayPlanNum, PatNum, Guarantor, PayPlanDate, APR, Note, and more. Required: PayPlanNum.
- **open_dental_pay_plan_closures_bulk_update** — Close a patient or dynamic payment plan. Outstanding interest is charged to the patient and is due immediately. Returns: PayPlanNum, PatNum, Guarantor, PayPlanDate, APR, Note, and more. Required: PayPlanNum.
- **list_all_open_dental_pay_splits** — List Open Dental PaySplits (portion of a payment applied to a procedure, adjustment, or provider). Filter by PatNum, PayNum, ProcNum. Returns: SplitNum, SplitAmt, PatNum, PayNum, ProvNum, PayPlanNum, and more.
- **update_a_open_dental_pay_split_by_id** — Update an Open Dental PaySplit (portion of a payment applied to a procedure, adjustment, or provider) by id. Only the fields you send change. Rarely used. Returns: SplitNum, SplitAmt, PatNum, PayNum, ProvNum, PayPlanNum, and more. Required: id.
- **get_single_open_dental_perio_exam_by_id** — Get a single Open Dental PerioExam by id. Returns: PerioExamNum, PatNum, ExamDate, ProvNum, DateTMeasureEdit, Note. Required: id.
- **list_all_open_dental_perio_exams** — List Open Dental PerioExams. Filter by PatNum, ExamDate. Returns: PerioExamNum, PatNum, ExamDate, ProvNum, DateTMeasureEdit, Note.
- **create_a_open_dental_perio_exam** — Create an Open Dental PerioExam. For more information, see Perio Chart. Rarely used. Returns: PerioExamNum, PatNum, ExamDate, ProvNum, DateTMeasureEdit, Note. Required: PatNum.
- **update_a_open_dental_perio_exam_by_id** — Update an Open Dental PerioExam by id. Only the fields you send change. Returns: PerioExamNum, PatNum, ExamDate, ProvNum, DateTMeasureEdit, Note. Required: id.
- **delete_a_open_dental_perio_exam_by_id** — Delete an Open Dental PerioExam by id. Also deletes all associated periomeasures. Returns no content. Required: id.
- **list_all_open_dental_perio_measures** — List Open Dental PerioMeasures (perio chart measurement). Filter by PerioExamNum. Returns: PerioMeasureNum, PerioExamNum, SequenceType, IntTooth, ToothValue, MBvalue, and more.
- **create_a_open_dental_perio_measure** — Create an Open Dental PerioMeasure (perio chart measurement). New periomeasures are compared against existing periomeasures attached to the same perioexam to prevent duplicates. Returns: PerioMeasureNum, PerioExamNum, SequenceType, IntTooth, ToothValue, MBvalue, and more. Required: PerioExamNum, SequenceType, IntTooth.
- **update_a_open_dental_perio_measure_by_id** — Update an Open Dental PerioMeasure (perio chart measurement) by id. Only the fields you send change. Returns: PerioMeasureNum, PerioExamNum, SequenceType, IntTooth, ToothValue, MBvalue, and more. Required: id.
- **delete_a_open_dental_perio_measure_by_id** — Delete an Open Dental PerioMeasure (perio chart measurement) by id. Deletes an existing periomeasure with a SequenceType of "Mobility" or "SkipTooth". Returns no content. Required: id.
- **get_single_open_dental_pharmacy_by_id** — Get a single Open Dental Pharmacy by id. Returns: PharmacyNum, StoreName, Phone, Fax, Address, Address2, and more. Required: id.
- **list_all_open_dental_pharmacies** — List Open Dental Pharmacies. Returns: PharmacyNum, StoreName, Phone, Fax, Address, Address2, and more.
- **list_all_open_dental_popups** — List Open Dental Popups (patient popup alert). Gets active and disabled popups for a patient and associated Family and SuperFamily. For versions 22.2 and later, the IsDisabled field is deprecated and may give unreliable information. Returns: PopupNum, PatNum, Description, IsDisabled, PopupLevel, DateTimeEntry, and more. Required: PatNum.
- **create_a_open_dental_popup** — Create an Open Dental Popup (patient popup alert). Be careful. Popups tend to be annoying to users and are usually reserved for more important notes. Returns: PopupNum, PatNum, Description, IsDisabled, PopupLevel, DateTimeEntry, and more. Required: PatNum, Description.
- **update_a_open_dental_popup_by_id** — Update an Open Dental Popup (patient popup alert) by id. Only the fields you send change. Returns: PopupNum, PatNum, Description, IsDisabled, PopupLevel, DateTimeEntry, and more. Required: id.
- **list_all_open_dental_preferences** — List Open Dental Preferences (office preference setting). Filter by PrefName. PrefName is optional. Otherwise you end up with all ~1000 preferences, paginated. Returns: PrefNum, PrefName, ValueString.
- **get_single_open_dental_procedure_code_by_id** — Get a single Open Dental ProcedureCode by id. Returns: CodeNum, ProcCode, Descript, AbbrDesc, ProcTime, ProcCat, and more. Required: id.
- **list_all_open_dental_procedure_codes** — List Open Dental ProcedureCodes. Filter by DateTStamp. Returns: CodeNum, ProcCode, Descript, AbbrDesc, ProcTime, ProcCat, and more.
- **create_a_open_dental_procedure_code** — Create an Open Dental ProcedureCode. For more information, see Procedure Code. Returns: CodeNum, ProcCode, Descript, AbbrDesc, ProcTime, ProcCat, and more. Required: ProcCode, Descript, AbbrDesc.
- **update_a_open_dental_procedure_code_by_id** — Update an Open Dental ProcedureCode by id. Only the fields you send change. For more information, see Procedure Code. Returns: CodeNum, ProcCode, Descript, AbbrDesc, ProcTime, ProcCat, and more. Required: id.
- **get_single_open_dental_procedure_log_by_id** — Get a single Open Dental ProcedureLog (treatment planned, completed, or existing procedure) by id. Returns: ProcNum, PatNum, AptNum, ProcDate, ProcFee, Surf, and more. Required: id.
- **list_all_open_dental_procedure_logs** — List Open Dental ProcedureLogs (treatment planned, completed, or existing procedure). Filter by PatNum, AptNum, ProcDate, ProcStatus, PlannedAptNum, ClinicNum, CodeNum, and more. Returns: ProcNum, PatNum, AptNum, ProcDate, ProcFee, Surf, and more.
- **create_a_open_dental_procedure_log** — Create an Open Dental ProcedureLog (treatment planned, completed, or existing procedure).
The following pairs of fields may only have one of the two passed in at once: Priority and priority, Dx and dxName. Attempts to set them both will be silently ignored.
Returns: ProcNum, PatNum, AptNum, ProcDate, ProcFee, Surf, and more.
Required: PatNum, ProcDate, ProcStatus.
- **update_a_open_dental_procedure_log_by_id** — Update an Open Dental ProcedureLog (treatment planned, completed, or existing procedure) by id. Only the fields you send change. When changing procCode, the treatment area of the current and passed in procedure codes must match. Returns: ProcNum, PatNum, AptNum, ProcDate, ProcFee, Surf, and more. Required: id.
- **delete_a_open_dental_procedure_log_by_id** — Delete an Open Dental ProcedureLog (treatment planned, completed, or existing procedure) by id. Can only delete procedures with a ProcStatus of TP, TPi, or C. Returns no content. Required: id.
- **list_all_open_dental_procedure_log_insurance_histories** — Get the previous treatment dates by category (bitewings, exams, prophy, and so on) for a patient's insurance plan, as in the Insurance History form. Returns: insHistPrefName, procDate, ProcNum. Required: PatNum, InsSubNum.
- **create_a_open_dental_procedure_log_insurance_history** — Record a previous treatment date for one insurance history category. Creates an Existing Other Provider procedure and an InsHist claim procedure. Returns: ProcNum, PatNum, AptNum, ProcDate, ProcFee, Surf, and more. Required: PatNum, InsSubNum, insHistPrefName, ProcDate.
- **list_all_open_dental_procedure_log_group_notes** — Get the group notes for a set of a patient's procedures. Returns: PatNum, ProvNum, ProcNum, ProcNums, Note. Required: PatNum.
- **create_a_open_dental_procedure_log_group_note** — Create a group note for a set of a patient's procedures. Returns: PatNum, ProvNum, ProcNum, ProcNums, Note. Required: PatNum, Note.
- **open_dental_procedure_log_group_notes_bulk_update** — Update a group note procedure for a patient. Returns: PatNum, ProvNum, ProcNum, ProcNums, Note. Required: ProcNum, PatNum, Note.
- **open_dental_procedure_log_group_notes_bulk_delete** — Delete a group note procedure. Returns no content. Required: ProcNum.
- **list_all_open_dental_proc_notes** — List Open Dental ProcNotes (procedure note). Filter by PatNum, ProcNum. When a procnote is edited in Open Dental, a new procnote is created. No existing procnote can EVER be edited or deleted. Returns: ProcNoteNum, PatNum, ProcNum, EntryDateTime, UserNum, Note, and more.
- **create_a_open_dental_proc_note** — Create an Open Dental ProcNote (procedure note). If the Procedure Note contains 50 or more consecutive blank lines, they will be removed. The new procnote will always replace the existing procnote. Returns: ProcNoteNum, PatNum, ProcNum, EntryDateTime, UserNum, Note, and more. Required: PatNum, ProcNum, Note.
- **list_all_open_dental_proc_tps** — List Open Dental ProcTPs (procedure on a saved treatment plan). Returns: ProcTPNum, TreatPlanNum, PatNum, ProcNumOrig, ItemOrder, Priority, and more. Required: TreatPlanNum.
- **update_a_open_dental_proc_tp_by_id** — Update an Open Dental ProcTP (procedure on a saved treatment plan) by id. Only the fields you send change. Only ProcTPs associated with an unsigned treatment plan can be updated. Returns: ProcTPNum, TreatPlanNum, PatNum, ProcNumOrig, ItemOrder, Priority, and more. Required: id.
- **delete_a_open_dental_proc_tp_by_id** — Delete an Open Dental ProcTP (procedure on a saved treatment plan) by id. Only ProcTPs associated with an unsigned treatment plan can be deleted. Returns no content. Required: id.
- **get_single_open_dental_provider_by_id** — Get a single Open Dental Provider (dentist or hygienist) by id. Returns: ProvNum, Abbr, LName, FName, MI, Suffix, and more. Required: id.
- **list_all_open_dental_providers** — List Open Dental Providers (dentist or hygienist). Filter by ClinicNum, DateTStamp. Two different queries are used. ClinicNum is not a field in the Provider table, so it does not get returned in any results. Returns: ProvNum, Abbr, LName, FName, MI, Suffix, and more.
- **create_a_open_dental_provider** — Create an Open Dental Provider (dentist or hygienist). After adding a provider, there's no way to delete it, not even from within Open Dental. The best you can do is to go into Open Dental and hide the provider. Returns: ProvNum, Abbr, LName, FName, MI, Suffix, and more. Required: Abbr.
- **update_a_open_dental_provider_by_id** — Update an Open Dental Provider (dentist or hygienist) by id. Only the fields you send change. Returns: ProvNum, Abbr, LName, FName, MI, Suffix, and more. Required: id.
- **create_a_open_dental_query_export** — Run a read-only SQL query and write the results as CSV to an SFTP site you control. Overwrites an existing file with the same name. The Open Dental docs list no response body. Required: SqlCommand, SftpAddress, SftpUsername, SftpPassword.
- **list_all_open_dental_short_queries** — Run a read-only SQL query and return up to 100 rows per page as JSON. Use query_exports create for larger results. Each row is an object keyed by the selected column names. Required: SqlCommand.
- **get_single_open_dental_quick_paste_cat_by_id** — Get a single Open Dental QuickPasteCat (quick paste category) by id. Returns: QuickPasteCatNum, Description, ItemOrder, DefaultForTypes. Required: id.
- **list_all_open_dental_quick_paste_cats** — List Open Dental QuickPasteCats (quick paste category). Returns: QuickPasteCatNum, Description, ItemOrder, DefaultForTypes.
- **get_single_open_dental_quick_paste_note_by_id** — Get a single Open Dental QuickPasteNote by id. Returns: QuickPasteNoteNum, QuickPasteCatNum, ItemOrder, Note, Abbreviation. Required: id.
- **list_all_open_dental_quick_paste_notes** — List Open Dental QuickPasteNotes. Filter by QuickPasteCatNum. Returns: QuickPasteNoteNum, QuickPasteCatNum, ItemOrder, Note, Abbreviation.
- **list_all_open_dental_recalls** — List Open Dental Recalls (patient recall). Filter by PatNum. Returns: RecallNum, PatNum, DateDue, DatePrevious, RecallInterval, RecallStatus, and more.
- **create_a_open_dental_recall** — Create an Open Dental Recall (patient recall). A patient should have at most, one recall for each Recall Type. Returns: RecallNum, PatNum, DateDue, DatePrevious, RecallInterval, RecallStatus, and more. Required: PatNum, RecallTypeNum.
- **update_a_open_dental_recall_by_id** — Update an Open Dental Recall (patient recall) by id. Only the fields you send change. Returns: RecallNum, PatNum, DateDue, DatePrevious, RecallInterval, RecallStatus, and more. Required: id.
- **list_all_open_dental_recall_lists** — Get the recall list as shown in the Appointment Module (Lists, then Recalls), filtered by due dates, provider, clinic, and recall type. Returns: DueDate, PatNum, Patient, Age, Type, Interval, and more.
- **open_dental_recall_statuses_bulk_update** — Set the RecallStatus on a patient's recall and log a commlog entry. This is the reminder status, not an appointment status. The Open Dental docs list no response body. Required: PatNum, recallType.
- **open_dental_recall_type_switches_bulk_update** — Switch a patient's recall type between Prophy and Perio, like the Set Perio and Set Prophy buttons. The Open Dental docs list no response body. Required: PatNum.
- **get_single_open_dental_recall_type_by_id** — Get a single Open Dental RecallType by id. Returns: RecallTypeNum, Description, DefaultInterval, TimePattern, Procedures, AppendToSpecial. Required: id.
- **list_all_open_dental_recall_types** — List Open Dental RecallTypes. Returns: RecallTypeNum, Description, DefaultInterval, TimePattern, Procedures, AppendToSpecial.
- **list_all_open_dental_ref_attaches** — List Open Dental RefAttaches (referral attached to a patient). Filter by ReferralNum, PatNum, DateTStamp. Returns: RefAttachNum, ReferralNum, PatNum, ItemOrder, RefDate, ReferralType, and more.
- **create_a_open_dental_ref_attach** — Create an Open Dental RefAttach (referral attached to a patient). Attaches a patient to a referral source. The referral source must be specified by either ReferralNum or referralName. Returns: RefAttachNum, ReferralNum, PatNum, ItemOrder, RefDate, ReferralType, and more. Required: PatNum.
- **update_a_open_dental_ref_attach_by_id** — Update an Open Dental RefAttach (referral attached to a patient) by id. Only the fields you send change. Returns: RefAttachNum, ReferralNum, PatNum, ItemOrder, RefDate, ReferralType, and more. Required: id.
- **delete_a_open_dental_ref_attach_by_id** — Delete an Open Dental RefAttach (referral attached to a patient) by id. Returns no content. Required: id.
- **get_single_open_dental_referral_by_id** — Get a single Open Dental Referral (referral source) by id. Returns: ReferralNum, LName, FName, MName, SSN, UsingTIN, and more. Required: id.
- **list_all_open_dental_referrals** — List Open Dental Referrals (referral source). Filter by IsHidden, NotPerson, IsDoctor, IsPreferred, isPatient, BusinessName. These can be either a provider, patient, or non-person. The description of non-patient sources is stored in the LName field. Returns: ReferralNum, LName, FName, MName, SSN, UsingTIN, and more.
- **create_a_open_dental_referral** — Create an Open Dental Referral (referral source). Referrals can be for patients (provide PatNum), providers (provide specialty) or non-persons (provide neither PatNum or specialty). Returns: ReferralNum, LName, FName, MName, SSN, UsingTIN, and more. Required: LName.
- **update_a_open_dental_referral_by_id** — Update an Open Dental Referral (referral source) by id. Only the fields you send change. Referrals for a patient can only have the Note and DisplayNote fields modified. Returns: ReferralNum, LName, FName, MName, SSN, UsingTIN, and more. Required: id.
- **list_all_open_dental_aging_reports** — Get the aging report for all guarantors, as of a date. Rarely used and slow on large databases; see the Open Dental docs on retrieving aging data. Returns: PatNum, Bal_0_30, Bal_31_60, Bal_61_90, BalOver90, BalTotal, and more.
- **list_all_open_dental_finance_charge_reports** — Get the finance charge report for a date range, optionally limited to providers and billing types. Returns: PatNum, PatName, Preferred, AdjAmt.
- **get_single_open_dental_rx_pat_by_id** — Get a single Open Dental RxPat (prescription) by id. Returns: RxNum, PatNum, RxDate, Drug, Sig, Disp, and more. Required: id.
- **list_all_open_dental_rx_pats** — List Open Dental RxPats (prescription). Filter by PatNum. Returns: RxNum, PatNum, RxDate, Drug, Sig, Disp, and more.
- **list_all_open_dental_schedule_ops** — List Open Dental ScheduleOps (link between a schedule entry and an operatory). Filter by ScheduleNum, OperatoryNum. Returns: ScheduleOpNum, ScheduleNum, OperatoryNum.
- **get_single_open_dental_schedule_by_id** — Get a single Open Dental Schedule (schedule entry: provider time, blockout, or note) by id. Returns: ScheduleNum, SchedDate, StartTime, StopTime, SchedType, ProvNum, and more. Required: id.
- **list_all_open_dental_schedules** — List Open Dental Schedules (schedule entry: provider time, blockout, or note). Filter by date, dateStart, dateEnd, SchedType, BlockoutDefNum, ProvNum, EmployeeNum. Results are sorted by StartTime. Returns: ScheduleNum, SchedDate, StartTime, StopTime, SchedType, ProvNum, and more.
- **list_all_open_dental_security_perms** — List Open Dental SecurityPerms (security permission). Uses the Customer's API Key specified in the API request header. Returns: Permission, HasPermission.
- **list_all_open_dental_security_logs** — List Open Dental SecurityLogs (security audit log entry). Filter by PermType. Returns: SecurityLogNum, PermType, UserNum, LogDateTime, LogText, PatNum, and more.
- **get_single_open_dental_sheet_def_by_id** — Get a single Open Dental SheetDef (sheet template) by id. Returns: SheetDefNum, Description, SheetType. Required: id.
- **list_all_open_dental_sheet_defs** — List Open Dental SheetDefs (sheet template). Filter by SheetType. Returns: SheetDefNum, Description, SheetType.
- **get_single_open_dental_sheet_field_def_by_id** — Get a single Open Dental SheetFieldDef (field on a sheet template) by id. Returns: SheetFieldDefNum, SheetDefNum, FieldType, FieldName, FieldValue, IsRequired. Required: id.
- **list_all_open_dental_sheet_field_defs** — List Open Dental SheetFieldDefs (field on a sheet template). Filter by SheetDefNum. Returns: SheetFieldDefNum, SheetDefNum, FieldType, FieldName, FieldValue, IsRequired.
- **get_single_open_dental_sheet_field_by_id** — Get a single Open Dental SheetField (field value on a patient sheet) by id. Returns: SheetFieldNum, SheetNum, FieldType, FieldName, FieldValue, IsRequired, and more. Required: id.
- **list_all_open_dental_sheet_fields** — List Open Dental SheetFields (field value on a patient sheet). Filter by SheetNum. Returns: SheetFieldNum, SheetNum, FieldType, FieldName, FieldValue, IsRequired, and more.
- **update_a_open_dental_sheet_field_by_id** — Update an Open Dental SheetField (field value on a patient sheet) by id. Only the fields you send change. Only SheetFields of FieldType "OutputText", "InputField", and "CheckBox" are supported. Returns: SheetFieldNum, SheetNum, FieldType, FieldName, FieldValue, IsRequired, and more. Required: id.
- **list_all_open_dental_sheets** — List Open Dental Sheets (patient sheet or form). Returns: SheetNum, SheetType, PatNum, DateTimeSheet, InternalNote, Description, and more. Required: PatNum.
- **create_a_open_dental_sheet** — Create an Open Dental Sheet (patient sheet or form). Only SheetDefs of SheetType "Consent", "PatientLetter", "PatientForm", "MedicalHistory", and "ExamSheet" are supported. Returns: SheetNum, SheetType, PatNum, DateTimeSheet, InternalNote, Description, and more. Required: SheetDefNum, PatNum.
- **create_a_open_dental_sheet_sftp_download** — Convert a sheet to PDF and place it on an SFTP site you control, so you can download it from there. The Open Dental docs list no response body. Required: SheetNum, SftpAddress, SftpUsername, SftpPassword.
- **list_all_open_dental_signalods** — List Open Dental Signalods (internal signal). SigDateTime is a required parameter. If any Signalods exist after the given dateTime, they will be returned. Returns: SignalNum, DateViewing, SigDateTime, FKey, FKeyType, IType, and more. Required: SigDateTime.
- **get_single_open_dental_statement_by_id** — Get a single Open Dental Statement (patient statement) by id. Returns: StatementNum, PatNum, DateSent, DateRangeFrom, DateRangeTo, Note, and more. Required: id.
- **list_all_open_dental_statements** — List Open Dental Statements (patient statement). Filter by PatNum. Returns: StatementNum, PatNum, DateSent, DateRangeFrom, DateRangeTo, Note, and more.
- **create_a_open_dental_statement** — Create an Open Dental Statement (patient statement). Does not impact billing. Returns: StatementNum, PatNum, DateSent, DateRangeFrom, DateRangeTo, Note, and more. Required: PatNum.
- **delete_a_open_dental_statement_by_id** — Delete an Open Dental Statement (patient statement) by id. Only statements created by the API (statement.Mode_="API") can be deleted. If the statement has an associated document, the document must be deleted first. Returns no content. Required: id.
- **create_a_open_dental_subscription** — Create an Open Dental Subscription (API event subscription).
Subscriptions are specific to the Customer's API Key specified in the API request header. Each subscription is for either a database event or for a UI event.
Returns: SubscriptionNum, EndPointUrl, Workstation, CustomerKey, WatchTable, PollingSeconds, and more.
Required: EndPointUrl.
- **list_all_open_dental_subscriptions** — List Open Dental Subscriptions (API event subscription). Returns: SubscriptionNum, EndPointUrl, Workstation, CustomerKey, WatchTable, PollingSeconds, and more.
- **update_a_open_dental_subscription_by_id** — Update an Open Dental Subscription (API event subscription) by id. Only the fields you send change. Returns: SubscriptionNum, EndPointUrl, Workstation, CustomerKey, WatchTable, PollingSeconds, and more. Required: id.
- **delete_a_open_dental_subscription_by_id** — Delete an Open Dental Subscription (API event subscription) by id. Returns no content. Required: id.
- **list_all_open_dental_substitution_links** — List Open Dental SubstitutionLinks (insurance procedure code substitution). Filter by PlanNum. Returns: SubstitutionLinkNum, PlanNum, CodeNum, SubstitutionCode, SubstOnlyIf.
- **create_a_open_dental_substitution_link** — Create an Open Dental SubstitutionLink (insurance procedure code substitution).
These links are created for a single insurance plan and will overwrite the ProcedureCode on a procedure with the SubstitutionCode. This replacement is based upon the SubstOnlyIf condition.
Returns: SubstitutionLinkNum, PlanNum, CodeNum, SubstitutionCode, SubstOnlyIf.
Required: PlanNum, CodeNum, SubstitutionCode, SubstOnlyIf.
- **update_a_open_dental_substitution_link_by_id** — Update an Open Dental SubstitutionLink (insurance procedure code substitution) by id. Only the fields you send change. Returns: SubstitutionLinkNum, PlanNum, CodeNum, SubstitutionCode, SubstOnlyIf. Required: id.
- **delete_a_open_dental_substitution_link_by_id** — Delete an Open Dental SubstitutionLink (insurance procedure code substitution) by id. Returns no content. Required: id.
- **list_all_open_dental_task_lists** — List Open Dental TaskLists. Filter by TaskListStatus. Returns: TaskListNum, Descript, Parent, DateTL, IsRepeating, DateType, and more.
- **get_single_open_dental_task_note_by_id** — Get a single Open Dental TaskNote by id. Returns: TaskNoteNum, TaskNum, UserNum, DateTimeNote, Note. Required: id.
- **list_all_open_dental_task_notes** — List Open Dental TaskNotes. Filter by TaskNum, UserNum. Returns: TaskNoteNum, TaskNum, UserNum, DateTimeNote, Note.
- **create_a_open_dental_task_note** — Create an Open Dental TaskNote. Returns: TaskNoteNum, TaskNum, UserNum, DateTimeNote, Note. Required: TaskNum, UserNum, Note.
- **update_a_open_dental_task_note_by_id** — Update an Open Dental TaskNote by id. Only the fields you send change. Returns: TaskNoteNum, TaskNum, UserNum, DateTimeNote, Note. Required: id.
- **get_single_open_dental_task_by_id** — Get a single Open Dental Task by id. Returns: TaskNum, TaskListNum, DateTask, KeyNum, Descript, TaskStatus, and more. Required: id.
- **list_all_open_dental_tasks** — List Open Dental Tasks.
Filter by TaskListNum, KeyNum, ObjectType, TaskStatus, DateTimeOriginal.
To get a list of all patient or appointment tasks, use only the ObjectType. To get a list of tasks for a specific patient or appointment, use both the ObjectType and KeyNum.
Returns: TaskNum, TaskListNum, DateTask, KeyNum, Descript, TaskStatus, and more.
- **create_a_open_dental_task** — Create an Open Dental Task. Returns: TaskNum, TaskListNum, DateTask, KeyNum, Descript, TaskStatus, and more. Required: TaskListNum, Descript, UserNum.
- **update_a_open_dental_task_by_id** — Update an Open Dental Task by id. Only the fields you send change. Returns: TaskNum, TaskListNum, DateTask, KeyNum, Descript, TaskStatus, and more. Required: id.
- **list_all_open_dental_tooth_initials** — List Open Dental ToothInitials (tooth chart initial, such as a missing tooth or movement). Filter by PatNum. Returns: ToothInitialNum, PatNum, ToothNum, InitialType, Movement, DrawingSegment, and more.
- **create_a_open_dental_tooth_initial** — Create an Open Dental ToothInitial (tooth chart initial, such as a missing tooth or movement). Returns: ToothInitialNum, PatNum, ToothNum, InitialType, Movement, DrawingSegment, and more. Required: PatNum, ToothNum.
- **delete_a_open_dental_tooth_initial_by_id** — Delete an Open Dental ToothInitial (tooth chart initial, such as a missing tooth or movement) by id. Deletes an existing toothinitial with an InitialType of "Missing", "Hidden", "Primary", "ShiftM", "ShiftO", "ShiftB", "Rotate", "TipM", or "TipB". Returns no content. Required: id.
- **open_dental_tooth_initial_clear_movements_bulk_update** — Clear a patient's tooth movement records (shift, rotate, tip) for selected teeth or for all teeth. The Open Dental docs list no response body. Required: PatNum.
- **list_all_open_dental_treat_plan_attaches** — List Open Dental TreatPlanAttaches (procedure attached to a treatment plan). Returns: TreatPlanAttachNum, TreatPlanNum, ProcNum, Priority. Required: TreatPlanNum.
- **create_a_open_dental_treat_plan_attach** — Create an Open Dental TreatPlanAttach (procedure attached to a treatment plan). Returns: TreatPlanAttachNum, TreatPlanNum, ProcNum, Priority. Required: TreatPlanNum, ProcNum.
- **update_a_open_dental_treat_plan_attach_by_id** — Update an Open Dental TreatPlanAttach (procedure attached to a treatment plan) by id. Only the fields you send change. Returns: TreatPlanAttachNum, TreatPlanNum, ProcNum, Priority. Required: id.
- **list_all_open_dental_treat_plans** — List Open Dental TreatPlans (treatment plan). Filter by PatNum, SecDateTEdit, TPStatus. Returns: TreatPlanNum, PatNum, DateTP, Heading, Note, SigIsTopaz, and more.
- **create_a_open_dental_treat_plan** — Create an Open Dental TreatPlan (treatment plan). Returns: TreatPlanNum, PatNum, DateTP, Heading, Note, SigIsTopaz, and more. Required: PatNum.
- **update_a_open_dental_treat_plan_by_id** — Update an Open Dental TreatPlan (treatment plan) by id. Only the fields you send change. To sign a saved Treatment Plan for a patient, set isSigned to "true". Most developers will only use isSigned. Returns: TreatPlanNum, PatNum, DateTP, Heading, Note, SigIsTopaz, and more. Required: id.
- **delete_a_open_dental_treat_plan_by_id** — Delete an Open Dental TreatPlan (treatment plan) by id. For treatplans with a TPStatus of "Saved", all associated proctps are also deleted. Returns no content. Required: id.
- **create_a_open_dental_saved_treat_plan** — Create an unsigned Saved treatment plan from an existing Active or Inactive one. Returns: TreatPlanNum, PatNum, DateTP, Heading, Note, SigIsTopaz, and more. Required: TreatPlanNum.
- **list_all_open_dental_user_group_attaches** — List Open Dental UserGroupAttaches (link between a user and a user group). Filter by UserNum, UserGroupNum. Returns: UserGroupAttachNum, UserNum, UserGroupNum.
- **list_all_open_dental_user_groups** — List Open Dental UserGroups. Filter by includeCEMT. Returns: UserGroupNum, Description, UserGroupNumCEMT.
- **list_all_open_dental_userods** — List Open Dental Userods (Open Dental login user). Filter by includeHidden, includeCEMT. Users are separate entities from Providers and Employees, although they can be linked. A user can be a provider, an employee, both, or neither. Returns: UserNum, UserName, EmployeeNum, ClinicNum, ProviderNum, IsHidden, and more.
- **create_a_open_dental_userod** — Create an Open Dental Userod (Open Dental login user). Returns: UserNum, UserName, EmployeeNum, ProviderNum, ClinicNum, IsHidden, and more. Required: UserName, UserGroupNum, Password.
- **update_a_open_dental_userod_by_id** — Update an Open Dental Userod (Open Dental login user) by id. Only the fields you send change. Returns: UserNum, UserName, EmployeeNum, ProviderNum, ClinicNum, IsHidden, and more. Required: id.
- **get_single_open_dental_vitalsign_by_id** — Get a single Open Dental Vitalsign (vital signs reading) by id. Returns: VitalsignNum, PatNum, Height, Weight, BpSystolic, BpDiastolic, and more. Required: id.
- **list_all_open_dental_vitalsigns** — List Open Dental Vitalsigns (vital signs reading). Filter by PatNum. Returns: VitalsignNum, PatNum, Height, Weight, BpSystolic, BpDiastolic, and more.
- **create_a_open_dental_vitalsign** — Create an Open Dental Vitalsign (vital signs reading). Returns: VitalsignNum, PatNum, Height, Weight, BpSystolic, BpDiastolic, and more. Required: PatNum.
- **update_a_open_dental_vitalsign_by_id** — Update an Open Dental Vitalsign (vital signs reading) by id. Only the fields you send change. Returns: VitalsignNum, PatNum, Height, Weight, BpSystolic, BpDiastolic, and more. Required: id.
- **delete_a_open_dental_vitalsign_by_id** — Delete an Open Dental Vitalsign (vital signs reading) by id. Returns no content. Required: id.

## How it works

1. **Link your customer's Open Dental account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Open Dental.** The Proxy API is a 1-to-1 mapping of the Open Dental API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Launch a white-label patient scheduling product** — Patient engagement platforms can expose real appointment availability from Open Dental and write confirmed bookings back into the practice schedule, without each customer having to configure anything beyond connecting their PMS.
- **Automate insurance verification and RCM workflows** — Revenue cycle SaaS can read insurance plans, subscribers, and benefits, run eligibility checks, and bulk-update verification status in Open Dental so front desk teams stop chasing coverage manually.
- **Ship AI imaging and clinical intelligence tools** — Computer vision and clinical AI vendors can sync radiographs and documents in and out of Open Dental via SFTP, then push findings back as diseases, procedures, or treatment plan line items directly into the patient chart.
- **Power DSO-wide analytics and payroll** — BI and workforce platforms serving multi-location DSOs can pull production, collections, payments, and clock events across every clinic into one warehouse, including raw SQL exports for custom reporting.
- **Drive patient collections and payment capture** — Billing and payments SaaS can read aging balances and patient balances, trigger outbound reminders, and write payments and pay splits back to Open Dental once the patient pays through their checkout.

## What you can build

- **Two-way appointment sync with native Web Sched** — List open appointment slots, create Web Sched or standard appointments, and bulk-update confirmations and breaks to keep your scheduler and Open Dental in lockstep.
- **ASAP waitlist automation** — Monitor the ASAP list, trigger outbound ASAP comms when slots open up, and auto-book responders into the first available opening with a full commlog audit trail.
- **Automated insurance eligibility engine** — Pull insurance plans, subscribers, benefits, and verification records, then bulk-update ins verifies after running checks through your clearinghouse.
- **AI imaging pipeline with chart write-back** — Download images and documents from the A-to-Z folder via SFTP, run inference, and upload annotated files plus structured disease and procedure log entries back into the patient record.
- **Digital treatment plan presentation** — Create treatment plans, attach procedures, and persist saved treatment plans so case acceptance tools can present and record signed plans directly in Open Dental.
- **DSO analytics with raw SQL extracts** — Use query export and short queries to run read-only SQL across production, payments, pay splits, and clock events for multi-location dashboards and provider compensation reporting.

## FAQs

### How does authentication work for Open Dental through Truto?

Open Dental uses API key based authentication with a Developer Key plus a per-practice Customer Key. Truto captures both from your end user during the Link flow and attaches them to every request, so you never handle or store credentials yourself.

### Can we read and write clinical data, or is it read-only?

The integration supports full read and write on most clinical and operational objects, including patients, appointments, procedure logs, treatment plans, diseases, allergies, medications, perio exams, claims, payments, and documents.

### How do we handle large files like X-rays and CBCT scans?

Open Dental exposes dedicated SFTP endpoints for documents and EOB attachments. You can trigger SFTP downloads and uploads through Truto to move large images and PDFs in and out of the A-to-Z folder without hitting typical REST payload limits.

### Can we run custom reports that aren't covered by REST endpoints?

Yes. Open Dental supports read-only SQL via the query export and short queries endpoints, which Truto exposes as standard actions. This is useful for BI and DSO reporting where you need joins across tables that no single REST resource covers.

### How does pagination work across list endpoints?

Open Dental list endpoints are offset and limit based. Truto normalizes pagination so you can iterate through patients, appointments, procedure logs, and other collections without writing per-endpoint pagination logic.

### Does the integration support multi-location DSOs?

Yes. You can list clinics, operatories, providers, and employees, and most records expose a clinic reference. Each DSO location typically has its own Customer Key, so Truto treats each clinic as a separate connection you can query independently or in aggregate.
