Open Dental

Open Dental is dental practice management software with an openly documented public REST API. The API is hosted at Open Dental headquarters (base https://api.opendental.com/api/v1) and lets approved third-party developers read and write practice data - patients, appointments, providers, procedures, insurance claims, payments, ledger adjustments, fee schedules, recalls, documents, medications and prescriptions, referrals, and clinical sheets - on behalf of Open Dental customers. Requests authenticate with a per-application Developer Key and a per-customer Customer Key sent together in an Authorization ODFHIR {DeveloperKey}/{CustomerKey} header. The public spec documents 130+ resource groups with GET/POST/PUT/DELETE operations. Open Dental also runs a local API Service option that talks to the on-premises Open Dental program without routing through Open Dental's servers, and a separate FHIR interface.

13 APIs 0 Features
DentalPractice ManagementHealthcareEHRPatient RecordsREST

APIs

Open Dental Patients API

Create, read, update, and search patient demographic records. Includes fast Simple listing and a full Patient Select-style search with dozens of filters (name, phone, chart numb...

Open Dental Appointments API

Schedule and manage appointments - create standard, planned, and WebSched appointments, find open time slots (Slots and SlotsWebSched), read ASAP and WebSched lists, break appoi...

Open Dental Providers API

Read, create, and update providers - dentists, hygienists, billing entities, and dummy providers - with optional filtering by clinic or modification timestamp.

Open Dental Procedures API

Full CRUD over ProcedureLogs (individual treatment procedures on a patient's chart), plus insurance treatment-history entries and group notes across multiple procedures.

Open Dental Insurance & Claims API

Manage insurance claims and related insurance data - create, read, update, and delete claims, change claim status, split claims, and work with insurance plans, subscribers, bene...

Open Dental Payments API

Post patient payments, issue refunds, update payment details (check number, bank branch, note, type, process status), and reallocate an existing payment's splits across procedur...

Open Dental Accounts & Ledger API

Work with the patient account ledger - adjustments, payment splits (PaySplits), payment plans and charges, and statements - to build and reconcile a patient's financial picture.

Open Dental Fees & Fee Schedules API

Manage procedure fees and the fee schedules (FeeScheds) that price them - list, create, and update fee amounts per procedure code, provider, and clinic across a practice's fee s...

Open Dental Recalls API

Read and manage patient recalls - the hygiene and continuing-care reminders that drive re-appointment - including due dates and recall types.

Open Dental Documents API

Upload, download, and manage documents attached to a patient's record - scanned forms, images, and files stored in the Open Dental imaging module.

Open Dental Medications & Prescriptions API

Manage the medication catalog (Medications), a patient's medication list (MedicationPats), and prescriptions written for patients (RxPats).

Open Dental Referrals API

Manage referral sources and specialists (Referrals) and the attachments that link a referral to a patient or procedure (RefAttaches) for inbound and outbound referral tracking.

Open Dental Sheets API

Read and create Sheets - the configurable clinical and administrative forms (consent forms, patient forms, treatment plans) that Open Dental renders and stores per patient.

Collections

Pricing Plans

Opendental Plans Pricing

3 plans

PLANS

Rate Limits

Opendental Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Open Dental API
  version: v1
request:
  auth:
    type: apikey
    apikey:
      key: Authorization
      value: ODFHIR {{developerKey}}/{{customerKey}}
      in: header
items:
- info:
    name: Patients
    type: folder
  items:
  - info:
      name: Search patients
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/patients?LName=&FName=
    docs: Searches patients using Patient Select-style logic with many optional filters.
  - info:
      name: List patients (Simple)
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/patients/Simple
    docs: Fast patient listing with optional filters.
  - info:
      name: Get a patient
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/patients/:PatNum
      params:
      - name: PatNum
        value: ''
        type: path
        description: Patient primary key.
    docs: Retrieves one patient by PatNum.
  - info:
      name: Create a patient
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/patients
      body:
        type: json
        data: "{\n  \"LName\": \"Smith\",\n  \"FName\": \"Jane\"\n}"
    docs: Creates a new patient.
  - info:
      name: Update a patient
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/patients/:PatNum
      params:
      - name: PatNum
        value: ''
        type: path
        description: Patient primary key.
      body:
        type: json
        data: '{}'
    docs: Updates an existing patient. Patients cannot be deleted via the API.
- info:
    name: Appointments
    type: folder
  items:
  - info:
      name: List appointments
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/appointments
    docs: Retrieves multiple appointments with optional filters.
  - info:
      name: Get an appointment
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/appointments/:AptNum
      params:
      - name: AptNum
        value: ''
        type: path
    docs: Retrieves one appointment by AptNum.
  - info:
      name: Find available slots
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/appointments/Slots
    docs: Finds available appointment time slots.
  - info:
      name: Create an appointment
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/appointments
      body:
        type: json
        data: '{}'
    docs: Creates a new standard appointment.
  - info:
      name: Break an appointment
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/appointments/:AptNum/Break
      params:
      - name: AptNum
        value: ''
        type: path
    docs: Marks an appointment as broken.
  - info:
      name: Update confirmation status
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/appointments/:AptNum/Confirm
      params:
      - name: AptNum
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an appointment's confirmation status.
- info:
    name: Providers
    type: folder
  items:
  - info:
      name: List providers
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/providers
    docs: Retrieves all providers with optional filtering by ClinicNum or DateTStamp.
  - info:
      name: Get a provider
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/providers/:ProvNum
      params:
      - name: ProvNum
        value: ''
        type: path
    docs: Retrieves one provider by ProvNum.
  - info:
      name: Create a provider
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/providers
      body:
        type: json
        data: '{}'
    docs: Creates a provider, billing entity, or dummy provider.
  - info:
      name: Update a provider
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/providers/:ProvNum
      params:
      - name: ProvNum
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing provider.
- info:
    name: Procedures (ProcedureLogs)
    type: folder
  items:
  - info:
      name: List procedure logs
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/procedurelogs
    docs: Retrieves multiple procedure logs with optional filters.
  - info:
      name: Get a procedure log
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/procedurelogs/:ProcNum
      params:
      - name: ProcNum
        value: ''
        type: path
    docs: Retrieves one procedure log by ProcNum.
  - info:
      name: Create a procedure log
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/procedurelogs
      body:
        type: json
        data: '{}'
    docs: Creates a new procedure log.
  - info:
      name: Update a procedure log
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/procedurelogs/:ProcNum
      params:
      - name: ProcNum
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing procedure log.
  - info:
      name: Delete a procedure log
      type: http
    http:
      method: DELETE
      url: https://api.opendental.com/api/v1/procedurelogs/:ProcNum
      params:
      - name: ProcNum
        value: ''
        type: path
    docs: Deletes a procedure log.
  - info:
      name: Get insurance history
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/procedurelogs/InsuranceHistory
    docs: Previous treatment dates for a patient's insurance plan.
- info:
    name: Claims
    type: folder
  items:
  - info:
      name: List claims
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/claims
    docs: Retrieves multiple claims with optional filters.
  - info:
      name: Get a claim
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/claims/:ClaimNum
      params:
      - name: ClaimNum
        value: ''
        type: path
    docs: Retrieves one claim by ClaimNum.
  - info:
      name: Create a claim
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/claims
      body:
        type: json
        data: '{}'
    docs: Creates a new claim.
  - info:
      name: Update claim status
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/claims/:ClaimNum/Status
      params:
      - name: ClaimNum
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates a claim's status.
- info:
    name: Payments
    type: folder
  items:
  - info:
      name: List payments
      type: http
    http:
      method: GET
      url: https://api.opendental.com/api/v1/payments
    docs: Retrieves payments with optional filtering by PatNum, PayType, DateEntry.
  - info:
      name: Create a payment
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/payments
      body:
        type: json
        data: '{}'
    docs: Creates a new payment for a patient.
  - info:
      name: Create a refund
      type: http
    http:
      method: POST
      url: https://api.opendental.com/api/v1/payments/Refund
      body:
        type: json
        data: '{}'
    docs: Creates a refund payment for an existing payment.
  - info:
      name: Update a payment
      type: http
    http:
      method: PUT
      url: https://api.opendental.com/api/v1/payments/:PayNum
      params:
      - name: PayNum
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates payment details (check number, bank branch, note, type, process status).
bundled: true