Behavioral Health EHR APIs: Healthie, Tebra, Kipu + 7 (2026)
CTO & Co-Founder
CTO & Co-Founder at Nirmitee.io. Architects healthcare integrations across FHIR, SMART on FHIR, ABDM and NHCX, writing from production experience taking hospital software from sandbox to go-live.

Behavioral health EHR integration is harder than general EHR integration because most behavioral health EHRs offer little or no open API, and the ones that do are usually read-only. We checked ten vendors' own documentation and the federal list of certified health software on November 9, 2026. Three of the ten publish no public API at all. Every certified FHIR API we found is read-only. Only Healthie, Tebra and Kipu document a way for an outside product to write data back. On top of that, therapy notes and substance use records carry their own privacy rules, so even a working API does not mean you may move every record.
This guide is for CTOs and product leads at measurement-based care, AI scribe, telepsychiatry, therapy marketplace, care coordination and behavioral health billing companies. It compares SimplePractice, Valant, Kipu, Netsmart myAvatar, Qualifacts (CareLogic, Credible and InSync), Healthie, TherapyNotes, Tebra, ICANotes and Osmind on what you can read, what you can write, how you get access and what it costs. It then covers psychotherapy notes, 42 CFR Part 2 for engineers, what to do when there is no API, the edge cases, testing, and what the real screens look like. Vendor facts come from each vendor's own pages. Certification status comes from the federal Certified Health IT Product List. Where a point comes from community discussion, we say so.
If you need a team to scope and build a behavioral health integration, see our behavioral health EHR integration services. If SimplePractice is your only target, our SimplePractice integration guide goes deeper on that one vendor.
The short answer: what you can and cannot do
You can read patient data from Netsmart myAvatar, all three Qualifacts products, Healthie, Tebra and ICANotes partners through FHIR R4 (the standard web API for health data). You can write data through Healthie's GraphQL API, Tebra's SOAP API, Kipu's REST API and, for patient create and booking only, ICANotes' partner API. You cannot get a public API from SimplePractice, TherapyNotes or Osmind. Valant sells API access as a feature but publishes no documentation. Most write routes need a paid plan, a partner agreement or the practice's approval.
Jump to your situation: choosing which vendors to support first, see "The ten vendors at a glance". Writing notes back, see "Psychotherapy notes: what an integration must never move". Handling substance use records, see "42 CFR Part 2 for engineers". Vendor has no API, see "What to do when there is no API".
Who needs a behavioral health EHR integration? 10 use cases
Any product that has to read from, write to, or stay in step with the record a therapist, psychiatrist or treatment program keeps needs one. These are the cases we see most.
| Use case | What it reads or writes | Hardest part |
|---|---|---|
| Measurement-based care platforms | Sends PHQ-9, GAD-7 and other scores into the chart, and reads diagnoses | Few EHRs accept assessment data through an API. Certified FHIR APIs are read-only |
| AI scribes for therapy and psychiatry | Writes a draft progress note after a session | Write access is rare, and psychotherapy notes must stay out of general flows |
| Telepsychiatry and virtual therapy groups | Books visits, writes notes, reads medications and allergies | Each client practice may run a different EHR |
| Therapy marketplaces and referral networks | Reads availability, books first appointments | Scheduling APIs exist for only a few vendors |
| Collaborative care and primary care partners | Shares behavioral health updates with a primary care team | Consent rules, and the Part 2 notice for substance use records |
| Substance use and opioid treatment programs | Reads and shares treatment records with other providers | Every disclosure is under 42 CFR Part 2 |
| Behavioral health billing and RCM | Reads encounters and charges, writes claims status | Charges and claims often sit outside the certified FHIR scope |
| Payers, EAPs and care navigation | Reads availability and outcomes for a network | Network programs, such as SimpleConnect, are partner deals, not open APIs |
| Digital intake and consent tools | Writes new patients and signed forms | Form data rarely has an open write route |
| Analytics and value-based care reporting | Reads patient data in bulk | Bulk export fees and scope differ by vendor |
Why do behavioral health EHRs have fewer APIs?
Three reasons come up again and again, in vendor documentation and in practitioner discussion.
- The incentive money went elsewhere. The federal program that paid hospitals and doctors to adopt certified EHRs from 2011 largely left behavioral health providers out. Practitioners in community discussions point to that carve-out as the reason many behavioral health vendors never built to the certification standards that now require a FHIR API.
- Certification is optional for many. Much of behavioral health is cash pay or outside Medicare's quality programs, so a practice has less reason to demand a certified EHR, and a vendor has less reason to certify.
- The data is more sensitive. Psychotherapy notes and substance use records have extra federal protection. Vendors are cautious about any route that could move them, and that caution shows up as closed or read-only APIs.
The result is a market where you cannot assume an API exists, and where the federal "certified" label tells you less than it does in general medicine.
What "ONC certified" does and does not tell you
The Office of the National Coordinator for Health IT (ONC) runs the certification program for EHRs, and lists certified products in the Certified Health IT Product List (CHPL). Certification is a set of criteria, and a product can meet some and not others. The one that matters most for integration is the standardized API criterion, numbered (g)(10). A product certified for (g)(10) must offer a FHIR R4 API that lets an outside app read a defined set of patient data.
- Certified does not mean it has the API. On November 9, 2026, Kipu 15 and ICANotes 11.6 were both active on CHPL, and neither met (g)(10).
- The (g)(10) API is for reading. It is built to let apps read patient data. Every certified FHIR API we checked in this group was read-only.
- A claim is not a listing. Osmind describes itself as "ONC-certified" on its own site. CHPL had no developer named Osmind on November 9, 2026. The product may be listed under another developer name, so ask the vendor for its CHPL ID.
- Old listings can be retired. Valant's five CHPL listings were all retired, the latest from 2014.
Before you plan an integration, look the product up on CHPL, check for (g)(10), and open the API documentation link the listing provides. That link is the vendor's official public API documentation.
The ten vendors at a glance
This table is the core of the guide. It reflects each vendor's own public pages and the CHPL registry on November 9, 2026. "Not found" means no primary source we reached says so. It does not mean the feature is missing, so ask the vendor.
| Vendor and product | Public API | Type | Can you write? | Sandbox | (g)(10) on CHPL |
|---|---|---|---|---|---|
| SimplePractice | No. Partner API in SimplePractice Enterprise only | None for practices | Not found | Not found | No CHPL record |
| Valant | Sold as "EHR API Management". No public docs | Not stated | Yes, per Valant: patient, charge and appointment data in | Not found | No. All listings retired |
| Kipu | Yes, for clients and their developers, with API keys | REST, plus an HL7 v2.5.1 outbound billing feed | Patient data only | No public sandbox. A personal sandbox is a paid service | No. Kipu 15 is active without (g)(10) |
| Netsmart myAvatar | Yes, through CareConnect, after registration | FHIR R4 and STU3, SMART | Not found | Not found | Yes. myAvatar Certified Edition 6 |
| Qualifacts CareLogic | Yes, after registration | FHIR R4, SMART 2.0.0 | No. Read and search only | Yes, after registration | Yes. CareLogic Enterprise S3 |
| Qualifacts Credible | Yes, after registration | FHIR R4, US Core 6.1.0, SMART 2.0.0 | No. Read and search only | Yes | Yes. Credible Behavioral Health Version 11 |
| Qualifacts InSync | Yes, after registration | FHIR R4, US Core 6.1.0, SMART 2.0.0 | No. Read and search only | Yes | Yes. InSync EMR/PM 10 |
| Healthie | Yes, as a paid add-on for Enterprise and Group plans | GraphQL, plus a certified FHIR API | Yes, through GraphQL | Yes, on request by email | Yes. Healthie Cures 1 |
| TherapyNotes | No public API found | None | Not found | Not found | No CHPL record |
| Tebra | Yes | SOAP for practice management, FHIR R4 (US Core 3.1.1) | SOAP: patients, appointments, encounters, payments. FHIR: read only | Yes, a FHIR sandbox in appSphere | Yes. Tebra EHR 5.1 |
| ICANotes | Partner-only FHIR R4 API | FHIR R4, OAuth client credentials | Patient create and appointment booking only | Not found | No. ICANotes 11.6 is active without (g)(10) |
| Osmind | No public API found | None | Not found | Not found | No CHPL developer record, though Osmind says it is "ONC-certified" |
Read the table by your use case. If you only need to read patient data, the certified vendors cover you. If you need to write notes, scores or bookings, your choice narrows to Healthie, Tebra, Kipu (patients only) and ICANotes (patients and bookings), plus partner programs at the rest.
Vendor by vendor: what each one actually offers
SimplePractice
SimplePractice's help center is direct: "SimplePractice doesn't currently offer a public-facing API for integrations with other software or platforms." It does run SimpleConnect, a network for payers, EAPs and health systems, and SimplePractice Enterprise has announced a partner API for that network. That route is a partnership with SimplePractice, not something a developer can sign up for. SimplePractice has no record on CHPL.
- What works today: calendar sync to personal calendars, data exports, and a SimpleConnect partnership if you are a payer or network.
- What does not: reading or writing patient records through an open API.
Our SimplePractice integration guide covers each workaround in detail.
Valant
Valant markets "EHR API Management" as a feature. Its page says you can "send patient, charge, and appointment data directly into Valant from external systems," push Valant data out "for billing, scheduling, and reporting," and use a "Scheduling API" that lets patients "find and book available appointments directly within the Valant calendar." It names inbound and outbound charge APIs. It does not publish the API type, documentation or a sandbox, and the page links to plans and pricing. All five Valant listings on CHPL are retired, the latest from 2014.
- What to ask Valant: which plan includes the API, the API type and docs, whether clinical notes and assessments are covered, and how partners get test access.
Kipu
Kipu, built for addiction treatment and behavioral health programs, has the most candid API FAQ of the group. Its key points, from Kipu's own help center:
- Kipu offers "41 currently available" APIs, with GET, POST and PATCH.
- Readable data includes utilization review, insurance, settings, users, appointments, consents, patients, census and occupancy. "Currently, only the Patient data can be modified using POST and PATCH."
- API keys come through a request form. If a third-party developer is involved, "an API agreement may be required," which Kipu says is typically sent for signature within 3 to 5 business days.
- "There is no public sandbox." Customers can request a personal sandbox, and "this is a paid service."
- "Kipu does not offer professional API implementation services." The customer's developer builds and supports the integration.
- "At this time, there is no rate limit on API calls."
Kipu also publishes an HL7 v2.5.1 outbound billing (DFT) implementation guide. Kipu 15 is active on CHPL but not certified for (g)(10). Kipu's API terms say developers "may be responsible for fees associated with custom programming," and that Kipu can withdraw or discontinue any API feature.
Because Kipu serves substance use programs, almost everything you read from it is likely covered by 42 CFR Part 2. Read that section before you design the data flow.
Netsmart myAvatar
Netsmart offers its APIs through CareConnect, which lists a "General Purpose R4 API" and a "General Purpose STU3 API." Netsmart says "registering your application enables secure access to the specific Netsmart solution," and that the platform supports SMART apps for patients and practitioners. myAvatar Certified Edition 6 is active on CHPL with (g)(10), certified on February 27, 2026, and Netsmart's myEvolv, myUnity, TheraOffice and GEHRIMED products also carry active (g)(10) listings. Netsmart's certification letter says a CareConnect FHIR subscription is required.
- What to ask Netsmart: the cost of the CareConnect subscription, which resources support writes, and the sandbox route.
In community discussions, one practitioner called Netsmart the most open of the home health and behavioral health vendors "but still poor," and another described intake forms that write back to myEvolv through REST "interactions" as tedious to set up. Treat these as individual experiences.
Qualifacts: CareLogic, Credible and InSync
Qualifacts publishes the clearest FHIR documentation in the group, for all three of its products, at documentation.qualifacts.com.
| CareLogic | Credible | InSync | |
|---|---|---|---|
| Standard | FHIR R4.0.1, SMART 2.0.0 | FHIR R4.0.1, US Core 6.1.0, SMART 2.0.0 | FHIR R4.0.1, US Core 6.1.0, SMART 2.0.0 |
| Writes | None. Read and search only | None. Read and search only | None. 26 resources, all read or search |
| Sandbox | After registration by email | After registration by email | After registration by email |
| Rate limit | "each API key is limited to 1000 requests per minute and 100 requests per second" | No number published. HTTP 429 documented | Not found |
| Production access | For customers that licensed the FHIR API | "the participating agency must also approve production access" for provider and bulk apps | Registration and agency approval |
| CHPL (g)(10) | Yes | Yes | Yes, certified September 17, 2026 |
Qualifacts' Credible documentation says "Credible FHIR APIs are only available to registered developers" and "production access is limited to Qualifacts customers that have licensed the Credible FHIR API functionality." On fees, it says "at this time, no additional fees will be assessed."
InSync's resource list includes QuestionnaireResponse, which can carry PHQ-9 or GAD-7 answers, and DocumentReference for notes, but only for reading. Qualifacts says "no fees are charged to access the API documentation." Its API terms require a BAA with Qualifacts and with each customer.
Healthie
Healthie has the fullest API in the group, and calls it "a closed API." It is GraphQL, and it is "an available add-on for members on our Enterprise and Group Plans." Sandbox access is by email request, and the sandbox cannot hold PHI.
- Reads and writes: GraphQL mutations cover the objects in Healthie's webhook list: patients, appointments, form answers (forms and assessments), charting notes and addenda, documents, billing items and claims.
- Webhooks: signed with "HMAC (Hash-Based Message Authentication Code) with SHA-256 hashing." Retries are opt-in, "for up 3 days based on an exponential backoff," and a webhook that keeps failing is disabled. Example events include
appointment.created,form_answer_group.signedandcharting_note_addendum.created. - Limits: "Maximum of 250 RPS (requests per second)" and "Maximum of 100 sign-ins per minute."
- Auth: API keys tied to a user, which "can only be used to access data that they have access to."
- Support: "5 hours of technical support each month."
- Certification: Healthie Cures 1 is active on CHPL with (g)(10). On November 9, 2026, the documentation link on its CHPL listing opened only an admin portal, and its endpoint list held a single placeholder named "example-tenant".
Community members describe Healthie as the EHR teams pick "for API customisation," and also as one they "love to hate." One limit came up more than once: sharing a patient across Healthie sub-organizations, which matters to groups that offer therapy and psychiatry under different entities. Confirm how your organization structure maps before you build.
TherapyNotes
We found no public API or developer pages from TherapyNotes. Its calendar sync is one-way: "we do not allow these programs to push information into TherapyNotes." TherapyNotes does send encounter data to two state health information exchanges, HealthConnex in North Carolina and Connie in Connecticut, when notes are signed, and it has built-in payment, ePrescribe and clearinghouse connections. TherapyNotes has no record on CHPL. One directory claims a FHIR API exists, which we could not confirm from any TherapyNotes page.
Tebra (formerly Kareo)
Tebra runs two APIs, and the difference matters.
- SOAP API for practice management. "Tebra's API is a SOAP-based web service." It can retrieve appointments, charges, encounters, patients, payments, providers and more. It can create appointments, patients, encounters and payments, update patients and delete appointments. Tebra says "we do not currently support HL7 messaging," and suggests polling at "5 to 15 minute intervals." It needs a customer key in addition to login credentials. Tebra's help center adds that the customer key "is not needed for Tebra EHR" and is "only needed for Tebra Practice Management paired with a partner EHR."
- FHIR R4 API, certified. Built on US Core 3.1.1, run on SmileCDR, and "only available to registered developers" through appSphere, which includes a FHIR sandbox. Every FHIR resource in the guide is search and read, including DocumentReference for notes. Tebra says "there is no charge for usage of the read (GET) routes for USCDIv1 data for Patient APIs," while clinician-facing and bulk apps "require additional fees."
Tebra EHR 5.1 is active on CHPL with (g)(10).
ICANotes
ICANotes offers a partner-facing FHIR R4 API that "exposes ICANotes practice data using the HL7 FHIR R4 standard" for "approved integration partners." It uses OAuth client credentials, server to server. It supports reads of providers, locations, patient search and real-time availability, and two writes: "Patient create and Appointment booking." Patient update and appointment lifecycle are listed as in development. Booking is idempotent, which means a repeated request does not create a second appointment. ICANotes 11.6 is active on CHPL and meets two other API criteria, but not (g)(10). A practitioner in community discussions noted ICANotes is certified "but not for all base criteria."
Osmind
Osmind, used by psychiatry practices, lists integrations for labs, prescription monitoring, calendar sync, telehealth and SPRAVATO REMS. We found no public API. Osmind's credentialing page describes it as "ONC-certified," and CHPL had no developer named Osmind on November 9, 2026. In a 2023 community thread, Osmind said process-note sequestration was not built yet. Ask Osmind directly about API access and its CHPL ID.
Psychotherapy notes: what an integration must never move
HIPAA gives psychotherapy notes stronger protection than the rest of the record. The rule defines them as "notes recorded (in any medium) by a health care provider who is a mental health professional documenting or analyzing the contents of conversation during a private counseling session or a group, joint, or family counseling session and that are separated from the rest of the individual's medical record." The definition then excludes medication, session times, treatment types and frequencies, test results, and "any summary" of diagnosis, functional status, treatment plan, symptoms, prognosis and progress.
In practice there are two kinds of note.
| Progress note | Psychotherapy note | |
|---|---|---|
| What it holds | Diagnosis, symptoms, plan, progress, session time and type | The clinician's analysis of what was said in the session |
| Where it lives | The medical record | Kept separate from the medical record |
| Who can see it | Treatment, payment and operations, under HIPAA's usual rules | Very limited. Most uses need the patient's specific authorization |
| Can an integration carry it? | Yes, within the vendor's API and the practice's approval | Treat as no, unless the clinician and patient have explicitly authorized it |
No vendor documentation we read says whether its API excludes psychotherapy notes, and in the certified FHIR APIs, notes come through DocumentReference without a documented flag. Build the protection into your own product.
- AI scribes: generate the progress note, and never send a psychotherapy note to the EHR as a progress note. If your scribe drafts both, keep them in separate fields and let the clinician decide where each goes.
- Reading notes: only read note types you have mapped, and confirm with the vendor and practice which note types the API returns.
- Logging: do not log note text. Log IDs and note types.
42 CFR Part 2 for engineers
42 CFR Part 2 protects the records of federally assisted substance use disorder (SUD) programs. HHS changed the rule in February 2024 to align it more closely with HIPAA, and, in HHS's words, "persons subject to the regulation must comply with the applicable requirements of the final rule by February 16, 2026." If your product touches records from a SUD program, such as many Kipu customers, these changes shape your data flow.
What changed, from HHS's fact sheet
- One consent for treatment, payment and operations. The rule "allows a single consent for all future uses and disclosures for treatment, payment, and health care operations."
- Redisclosure under HIPAA. HIPAA covered entities and business associates that receive records under that consent may redisclose them "in accordance with the HIPAA regulations."
- Segmentation is not required. The rule "adds an express statement that segregating or segmenting Part 2 records is not required."
- SUD counseling notes are a new category. They are a clinician's notes analyzing a counseling session, kept separate from the record, and they "require specific consent" and "cannot be used or disclosed based on a broad TPO consent."
- Every disclosure carries its consent. Each disclosure made with consent must "include a copy of the consent or a clear explanation of the scope of the consent."
- Legal proceedings stay off limits. Records still cannot be used to investigate or prosecute the patient without written consent or a court order.
- Breaches follow HIPAA. The HIPAA breach notification rule now applies to Part 2 records.
What that means for your build
The points below are our reading of the rule for system design, not legal advice. Have your counsel confirm them for your use case.
- Know which records are Part 2 records. Segmentation is no longer required, but you still need to know where a record came from, because the consent and the legal-proceedings limit travel with it. Tag records from Part 2 programs at the point they enter your system.
- Store the consent with the data. Keep the patient's consent, its scope and its date next to the records it covers, so every disclosure can include it, as the rule requires.
- Keep SUD counseling notes out of every general flow. They need their own consent. Treat them like psychotherapy notes: separate storage, no default sharing.
- Handle revocation. A patient can revoke consent in writing. Your system needs a way to stop future disclosures when that happens.
- Do not rely on the vendor's API to do this. None of the vendor documentation we read describes a Part 2 flag, a consent resource or a security label on its API. FHIR has the building blocks, such as the Consent resource and security labels in resource metadata, but you will likely have to apply them yourself.
What to do when there is no API
For SimplePractice, TherapyNotes, Osmind and, until you get access, Valant, you need another route. Here they are in the order we recommend trying them.
| Route | How it works | Good for | Watch out for |
|---|---|---|---|
| Vendor partner program | Apply to the vendor's partner or network program, such as SimpleConnect | Payers, networks and large partners | Selective, slow, and terms are private |
| Certified FHIR read plus manual write | Read through the certified API, and have staff or the clinician complete writes in the EHR | Measurement-based care and analytics that mostly read | A human step for every write |
| HL7 or HIE feeds | Receive data the EHR already sends, such as TherapyNotes' encounter feeds to state HIEs or Kipu's billing feed | Encounter and billing data | Limited content, and only where the feed exists |
| Exports and calendar sync | Scheduled exports, or one-way calendar sync | Reporting and availability | Batch timing, and no write-back |
| Patient-mediated access | The patient connects their own record through a certified patient API, where one exists | Patient-facing apps | Only where the vendor offers (g)(10), and only what the patient can see |
| Screen automation | Software operates the EHR's screens on the practice's behalf | Last resort, for a single practice that has asked for it | Vendor terms, breakage on every UI change, and security review |
| Unofficial access vendors | Third parties sell access built by reverse engineering | We do not recommend it | No vendor agreement, and risk to the practice's contract and data |
Whichever route you pick, write down what the practice agreed to, and keep that agreement with your integration settings. Our guide to EHR automation without an API covers screen automation in depth.
Measurement-based care: getting scores into the chart
Measurement-based care products collect PHQ-9 (depression), GAD-7 (anxiety) and similar scores between visits, and want them in front of the clinician. In FHIR, the answers are a QuestionnaireResponse and the scores are Observations. The trouble is the write side.
- Certified FHIR APIs read, they do not write. InSync lists QuestionnaireResponse, for reading only.
- Healthie can take form answers through GraphQL, and fires
form_answer_group.signedwebhooks when a form is signed. - Elsewhere, plan for a document or a manual step. A score report filed as a document, or entered by staff, is often the only route.
Store the instrument, its version, the answers, the score and the date together, so a clinician can trust what they see.
How to choose which behavioral health EHRs to support first
Most products cannot support ten EHRs at once. Pick the order with four questions, scored per vendor.
- How many of your customers use it? Count paying or pipeline customers per EHR. This matters more than market share.
- Does it support what your product must do? If your product writes notes or scores, a read-only API does not serve it, however good the docs.
- How hard is access? Self-serve sandbox (Tebra, Qualifacts after registration) is faster than a paid add-on (Healthie), a paid sandbox (Kipu) or a partner program (SimplePractice, ICANotes).
- What do the privacy rules add? A Kipu customer base likely means Part 2 work on day one. A therapy-only customer base means psychotherapy note controls first.
A common order for a product that reads and writes: Healthie or Tebra first, because they have documented write routes, then the certified read APIs (Qualifacts, Netsmart) with a manual write step, then partner programs. For a read-only analytics product, the certified FHIR vendors come first.
One integration layer across ten EHRs
Teams that support several behavioral health EHRs build one internal model and one adapter per vendor. Your product talks to the model. Each adapter translates to one vendor's API, and says plainly what that vendor cannot do.
// Illustrative design, not any vendor's SDK.
type Capability = "readPatient" | "writePatient" | "readAppointments" | "book"
| "writeProgressNote" | "writeAssessment" | "webhooks";
interface BehavioralEhrAdapter {
vendor: string; // "healthie", "qualifacts-credible", ...
capabilities: Set<Capability>; // what this vendor allows for this customer
getPatient(id: string): Promise<Patient>;
book?(req: BookingRequest): Promise<Appointment>; // only if "book"
writeProgressNote?(note: ProgressNote): Promise<NoteRef>; // never psychotherapy notes
writeAssessment?(a: Assessment): Promise<AssessmentRef>; // PHQ-9, GAD-7 ...
}
function route(adapter: BehavioralEhrAdapter, task: Task) {
if (!adapter.capabilities.has(task.needs)) {
return createStaffTask(task); // manual step, logged, visible to the customer
}
return task.run(adapter);
} Three rules make this work.
- Capabilities are per customer, not per vendor. Healthie's API depends on the customer's plan. Credible's production access depends on the agency's approval. Store capabilities with each customer's settings.
- Every missing capability has a visible fallback. A staff task, an export or a document, never a silent failure.
- Privacy flags live in your model. Mark psychotherapy content, Part 2 origin and the consent that covers each record in your own data, because the vendor APIs do not.
Questions to ask each behavioral health EHR vendor
- Is there a public or partner API, and which plan or agreement includes it?
- Which resources or objects can we write, not just read?
- How do we get a sandbox, and does it cost anything?
- Do you offer webhooks or event feeds, or must we poll?
- What are the rate limits?
- Does the API return psychotherapy notes, and how are they excluded?
- Does the API mark records that fall under 42 CFR Part 2, or carry consent?
- What is your CHPL listing, and does it include (g)(10)?
- Do we need a BAA with you as well as with each practice? Qualifacts, for example, requires both.
- What fees apply for clinician-facing, bulk or write access?
Ask for the answers in writing, and keep them with each vendor adapter. Vendors change plans and APIs, and Kipu's terms, for example, allow it to discontinue API features.
Security and compliance checklist
- BAAs. Sign a BAA with each practice, and with the vendor where its terms require it.
- Least access. Request only the scopes and objects your product uses. Healthie's API keys see only what their user can see, so create a dedicated user with the right access.
- Webhook security. Verify Healthie's HMAC SHA-256 signatures before you trust any event.
- Secrets per practice. Tebra's SOAP API needs a customer key from each practice's administrator. Store keys per customer, and rotate them when staff change.
- Logs without content. Log IDs, types and outcomes, never note text or session content.
- Consent records. Keep consent, scope, date and revocation with the data they cover.
Edge cases specific to behavioral health
| Edge case | What happens | What to build |
|---|---|---|
| Psychotherapy note sent as a progress note | Protected content enters the general record | Separate fields for the two note kinds, and clinician review before any write |
| Part 2 record shared without its consent | A disclosure that does not carry the required consent copy | Tag Part 2 records on entry and attach the consent to every disclosure |
| SUD counseling notes in a general feed | Notes that need their own consent leave under a TPO consent | Exclude them by default, and require a separate consent record |
| Consent revoked | You keep sending after the patient revokes | A revocation flag that blocks future disclosures |
| Group therapy | One session, several patients | Write one record per patient, never one shared note |
| Minors and guardians | Who may consent and see records depends on age and state law | Agree the rules with the practice and their counsel before you build |
| Therapy and psychiatry under different entities | A patient exists twice, or cannot be shared across sub-organizations | Map the organization structure first, especially in Healthie |
| Crisis language in a note or form | A risk signal arrives through your product, not the EHR | An escalation path the practice owns, and no reliance on the EHR to notice |
| Payer masks sensitive diagnoses | Claims data hides behavioral health codes | Do not assume claims data is complete for these patients |
| Read-only API mistaken for write | Your product promises write-back the vendor does not allow | Check write routes per vendor before you sell the feature |
| Vendor discontinues an API feature | Kipu's terms allow it to withdraw API features | Monitor failures per endpoint, and keep a manual fallback |
| Webhook disabled after failures | Healthie disables a webhook that keeps failing | Opt in to retries, alert on failures, and reconcile with a periodic read |
How do you test a behavioral health integration?
- Sandbox per vendor. Healthie by email, Tebra through appSphere, Qualifacts by registration, and a paid personal sandbox at Kipu. Record each vendor's real responses and errors.
- Note kinds. Prove a progress note writes where it should, and that a psychotherapy note never leaves your product without explicit authorization.
- Part 2 path. Send a synthetic Part 2 record through your flow and confirm the consent copy travels with every disclosure.
- Revocation. Revoke a synthetic consent and confirm the next disclosure is blocked.
- Assessments. Send a full PHQ-9 and GAD-7 and confirm instrument, version, score and date arrive intact.
- Rate limits. Stay under Healthie's 250 requests per second and CareLogic's 1,000 requests per minute in a load test.
- Webhooks. Fail your Healthie listener on purpose and confirm retries and reconciliation work.
- Minors. Run the guardian rules the practice agreed, with synthetic minors.
- Read-only routes. Confirm your product never attempts a write on a vendor that only allows reads.
Use synthetic patients only. For behavioral health, never use real session content in any test environment.
What does a behavioral health EHR integration cost?
| Vendor | What the vendor says about cost |
|---|---|
| Healthie | The API is a paid add-on for Enterprise and Group plans. No price published |
| Kipu | A personal sandbox is a paid service. API terms say developers may pay for custom programming. No price published |
| Tebra | No charge for patient read routes for USCDI v1 data. Clinician-facing and bulk apps need additional fees |
| Qualifacts | No fee to access the documentation. Production access is tied to customer licensing |
| Netsmart | A CareConnect FHIR subscription is required. No price published |
| Valant | The API page links to plans and pricing. No API price published |
| SimplePractice, TherapyNotes, Osmind | No public API, so no API price |
Your own cost splits into a reusable layer, built once, and work per vendor and per practice: access, mapping, testing and the consent rules each practice sets. Under the federal information blocking rules, certified developers may only charge certain fees for API access. In community discussions, practitioners said bulk export fees vary widely and can be vague, so ask for them in writing.
How long does it take?
None of these vendors publishes a timeline. The phases are the same for each: get access, build against the sandbox, get the practice's approval and consent rules, test, then go live with one practice. Access is often the slowest step: a partner application, a paid plan upgrade, or an agreement such as Kipu's, which Kipu says is typically sent within 3 to 5 business days. One community member described a practice moving from Valant to another EHR in about a month in order to get API access. Treat that as one practice's experience.
What these behavioral health EHRs look like on screen
The vendor sections above describe what each API can and cannot do. These screens show the records those APIs expose, or do not expose, so you can point at them in a meeting with a practice. They come from the vendors' own public demo videos, product pages and help centers, credited under each image, and show demo or sample data.
SimplePractice: measures sit in the client record
A SimplePractice client file lists PHQ-9 and GAD-7 measures next to forms and uploads, each marked completed with a date. That is exactly the data a measurement-based care product wants, and SimplePractice offers no public API to read or write it. Getting it out today means exports or a partnership.
SimplePractice: signing and locking a progress note
Notes in SimplePractice are signed and locked by the clinician. Any AI scribe or note tool that targets an EHR like this must leave the final sign-off to the clinician, and must keep psychotherapy content out of the progress note.
TherapyNotes: appointments and missed-appointment notes
TherapyNotes ties each appointment to a service code, location and clinician, and asks for a note when a client misses an appointment. Its calendar sync only sends data out, so an outside scheduler cannot write appointments back.
Healthie: calendar and availability
Healthie's calendar shows provider availability blocks alongside booked sessions. Its GraphQL API covers appointments, which is why scheduling and telehealth products often pick Healthie first. Confirm which scheduling operations your plan includes.
Valant: documents and measures in a psychiatric chart
A Valant chart keeps progress notes, intake notes, signed forms and GAD-7 measures as documents, with separate tabs for diagnoses, medications, measurements and lab requests. Valant's API page talks about patient, charge and appointment data. Ask Valant whether notes and measures are in scope for your use case.
Osmind: scores on the patient list
Osmind shows mood and PHQ-9 scores with their dates right on the patient list, next to care team and tags. For measurement-based care, that is the ideal place for scores to land. We found no public API that lets an outside product put them there.
Qualifacts Credible: one record, mixed sensitivity
A Credible client record shows therapy, intake and SUD services side by side, with payer authorizations, diagnoses and warnings. For an integration, that mix is the point: one read can return records that fall under different privacy rules. Credible's certified FHIR API reads this data, and it does not write it.
Qualifacts Credible: what good public API documentation looks like
Qualifacts publishes sandbox and production endpoints, fees and restrictions on one open page. It is the clearest documentation in this group, and a useful model to show other vendors when you ask what their API offers.
Tebra: the customer key for the SOAP API
Tebra's SOAP API needs a customer key from each practice's System Administrator, plus web services permission on the user. Tebra says the key applies to Tebra Practice Management paired with a partner EHR, not to Tebra EHR itself. Plan for a key per practice, and a person at each practice who can issue it.
Tebra: group appointments
A Tebra group appointment holds up to 200 attendees in one session, with one provider and one room. For group therapy, the appointment is shared but the record is not: notes, charges and consent still belong to each attendee.
Kipu: charting and scheduling
Kipu's sample screens show charting and a scheduler built for treatment programs. Its API reads appointments, consents, census and occupancy, but only patient data can be written. Because Kipu serves addiction treatment, plan for 42 CFR Part 2 on almost every record.
Netsmart CareConnect: the developer portal
Netsmart's CareConnect portal lays out three steps: review the documentation, register your application, and request authorization. It offers general purpose FHIR R4 and STU3 APIs with SMART apps for patients and practitioners.
ICANotes: a FHIR API for partners
ICANotes markets its FHIR R4 API to scheduling platforms, patient portals, referral networks and telehealth products. Access is for approved partners, and the writes are limited to creating patients and booking appointments.
Where to watch the full videos
- SimplePractice, product demo (YouTube): calendar, intake, client portal, notes and payments.
- TherapyNotes, scheduling walkthrough (YouTube).
- Healthie, EHR demo (YouTube): calendar, billing and intake flows.
- Valant, patient chart walkthrough (YouTube).
- Osmind, mini demo (YouTube).
- Qualifacts Credible EHR platform page and Credible FHIR documentation (qualifacts.com).
- Tebra help center: Get Customer Key and New Group Appointment (helpme.tebra.com).
- Kipu EMR product page (kipuhealth.com), Netsmart CareConnect (careconnect.netsmartcloud.com) and the ICANotes FHIR API page (icanotes.com).
Where Nirmitee fits
We build behavioral health integrations for digital health companies: read and write routes where vendors offer them, safe fallbacks where they do not, and the psychotherapy note and Part 2 controls described above, built into the product rather than left to the EHR.
What a behavioral health integration gap check gives you
Whether you support one behavioral health EHR or ten, this is the fixed-scope first step we offer. You get a written answer to "what can we read and write with each EHR our customers use, and what will it take".
| You send us | We send back |
|---|---|
| The EHRs your customers use, ranked by how many customers use each | A read and write table for your use case, per vendor, like the one in this guide |
| Your product's data flow: notes, scores, bookings, billing | The route for each vendor: API, partner program, feed, export or manual step |
| Whether you handle substance use or psychotherapy records | The Part 2 and psychotherapy note controls your product needs, and the questions for your counsel |
| Any vendor emails or failed requests | The access steps per vendor, with the documents to prepare |
| Your target launch date | A test plan per vendor and an effort and timeline estimate, with vendor-owned steps marked |
It starts with a 30-minute call, where we confirm the scope and agree the fixed price and delivery date before any work begins. You keep everything we send, whether or not you work with us afterwards. Book a call to scope your behavioral health gap check.
Sources
- Vendor pages, checked November 9, 2026: SimplePractice help center (plan comparison) and SimpleConnect; Valant EHR API Management; Kipu API page, API FAQ and API terms; Netsmart CareConnect and certification letter; Qualifacts FHIR documentation for CareLogic, Credible and InSync and API terms; Healthie help center, API docs, environments and webhooks; TherapyNotes help center; Tebra API help and FHIR API user guide; ICANotes FHIR API page; Osmind integrations and credentialing pages.
- ONC Certified Health IT Product List (chpl.healthit.gov), queried November 9, 2026, for each vendor's listings and (g)(10) status.
- HHS fact sheet on the 42 CFR Part 2 final rule (updated January 30, 2026) and the final rule in the Federal Register, February 16, 2024.
- 45 CFR 164.501, definition of psychotherapy notes (eCFR).
- Vendor demo videos on YouTube: SimplePractice, TherapyNotes, Healthie, Valant and Osmind.
- Practitioner discussion in the Health Tech Nerds community, 2023 to 2026, anonymized.
Ready to scale?
Talk to our healthcare engineering team about building, integrating, and shipping faster.
Frequently Asked Questions
Does SimplePractice have an API?
Does TherapyNotes have an API?
Does Valant have an API?
Does Kipu have an API?
Does Healthie have an API?
Does Netsmart myAvatar have a FHIR API?
Do Qualifacts CareLogic, Credible and InSync have APIs?
Does Tebra have an API?
Does ICANotes have an API?
Does Osmind have an API?
Which behavioral health EHRs let you write data through an API?
What does ONC (g)(10) certification mean for integration?
Can an API share psychotherapy notes?
What is the difference between psychotherapy notes and progress notes?
What changed in the 42 CFR Part 2 final rule?
When did the 42 CFR Part 2 final rule take effect?
Do we need to segment Part 2 data in our integration?
How do we get PHQ-9 and GAD-7 scores into a behavioral health EHR?
What can we do if a behavioral health EHR has no API?
How much do behavioral health EHR APIs cost?


