Supergood | SimplePractice API
Programmatically access scheduling, clients, intake documents, clinical documentation, and insurance billing workflows in SimplePractice with a stable REST API. Supergood builds and operates production-grade, unofficial SimplePractice integrations so your team can automate core practice management tasks without heavy custom engineering.
SimplePractice is practice management and EHR software used primarily by behavioral health, therapy, and allied health practices. It covers online scheduling and a client portal, telehealth, paperless intake, documentation and treatment planning, payment processing, and insurance claims (837/835) for private payers. With an unofficial API, you could synchronize client and appointment data, retrieve completed intake packets, automate progress-note pipelines, assemble and submit claims, and reconcile payments end to end.
If you’re another tech company or a growing practice looking to integrate, an unofficial API means you can pull and push data where the web UI doesn’t scale:
- Pull: Clients and demographics, insurance policies, appointments with telehealth links, completed intake forms and signatures, progress note metadata, claim and remittance statuses, payments
- Push: New/updated clients from your CRM, scheduled appointments with correct service codes and locations, progress notes (with locking/signatures where permitted), claim submissions, refunds and client statements
- Build: Two-way scheduling and reminder workflows, eligibility-aware billing and claim creation, analytics pipelines across providers and locations, accounting sync to external ledgers
Many SimplePractice customers have asked for a public API and real-time webhooks (e.g., for appointment created/canceled, intake completed, payment posted), deeper accounting integrations (QuickBooks/Xero), richer two-way calendar sync, and exportability of clinical artifacts while preserving compliance. Supergood addresses these gaps with a resilient, secure API layer tailored to your entitlements and workflows.
What is SimplePractice?
SimplePractice is a cloud EHR and practice management platform focused on solo and group practices in behavioral health and related outpatient care. Core capabilities typically include:
- Scheduling and calendar management (office, telehealth, group sessions)
- Client portal with online booking, messaging, and document sharing
- Paperless intake forms, e-signatures, and consent management
- Telehealth by SimplePractice with HIPAA-compliant video
- Clinical documentation (progress notes, treatment plans, diagnoses)
- Insurance billing (837P) and remittance (835) reconciliation
- Payment processing and card-on-file for private pay
- Basic reporting across caseload, financials, and productivity
- Team management, roles/permissions, audit trails
Common data entities:
- Clients (demographics, contacts, portal status, insurance)
- Clinicians/Staff (roles, NPI, taxonomy, locations)
- Appointments/Sessions (service codes, status, telehealth links)
- Services (CPT codes, fee schedules, POS, modifiers)
- Insurance Policies (payer, member ID, plan, copay)
- Claims (837P lines, payer, status, adjudication)
- Remittances/ERAs (835 summaries, payment posting)
- Payments, Invoices, and Superbills
- Clinical Notes and Treatment Plans (templates, signatures, locks)
- Intake Forms and Documents (consents, questionnaires, attachments)
The SimplePractice Integration Challenge
Practices rely on SimplePractice daily, but turning portal-based workflows into automated pipelines can be hard:
- Limited public API: Historically, customers have requested a formal API and webhooks for appointments, intakes, payments, and documentation events
- Portal-first design: Key scheduling, intake, and documentation steps live in web UIs and batch exports rather than unified, documented endpoints
- Strong security controls: MFA/2FA, SSO, and session protections complicate headless automation and long-lived integrations
- Clinical note constraints: Note locking, signatures, and audit trails must be preserved; edits may be restricted post-lock to stay compliant
- Calendar and telehealth nuances: Two-way calendar sync and ephemeral telehealth links require careful session handling
- Billing pipelines: Claim submission windows, payer-specific rules, and batch ERA retrieval introduce timing and formatting complexity
How Supergood Creates SimplePractice APIs
Supergood reverse-engineers authenticated browser flows, batch interfaces, and network interactions to deliver a resilient API endpoint layer for SimplePractice.
- Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
- Maintains session continuity with automated refresh and change detection
- Normalizes client, appointment, intake, note, and claim objects for consistent integration
- Aligns with your entitlements and licensing to ensure compliant access
- Bridges exports/attachments where applicable with signed URL retrieval and delivery
Use Cases
CRM and Marketing Automation
- Push new lead-to-client conversions from your CRM into SimplePractice
- Trigger outreach when an intake is completed but the first appointment isn’t scheduled
- Measure conversion from portal booking to completed intake to first session
Scheduling and Telehealth Orchestration
- Create, update, and cancel appointments from your scheduling layer
- Distribute telehealth links securely and log attendance metadata
- Keep external calendars and resource management tools in sync
Intake and Document Sync
- Pull submitted intake packets, consents, and signatures into your DMS
- Trigger checklists for missing forms or expiring consents
- Feed structured questionnaire responses to outcomes and screening tools
Billing, Claims, and Reconciliation
- Build 837P claims from completed sessions with appropriate CPT/ICD-10
- Monitor claim statuses and post ERAs to accounting automatically
- Alert on denials and automate corrected claims where policy allows
Analytics and Outcomes
- Centralize operations KPIs: no-shows, utilization, charges, collections
- Link outcome measures to visit cadence and care pathways
- Attribute revenue to referral sources and campaigns
Available Endpoints
Authentication
POST /sessions: Establish a session using credentials. Supergood manages MFA (SMS, email, TOTP) and SSO/OAuth when enabled. Returns a short-lived auth token maintained by the platform.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/sessions \
--header 'Authorization: Basic <Base64 encoded token>' \
--header 'Content-Type: application/json' \
--data '{
"username": "[email protected]",
"password": "<password>",
"mfa": {"type": "totp", "code": "123456"}
}'
Example response
{
"authToken": "eyJhbGciOi...",
"expiresIn": 3600,
"user": {
"id": "u_71c9e1",
"name": "Office Manager",
"entitlements": ["clients", "appointments", "intake", "claims"]
}
}
Clients
GET /clients: Retrieve clients with demographics, portal status, insurance, and clinician assignment. Use filters to sync incrementally and drive outreach or billing.
Query parameters
- q: string (name/email/phone search)
- updatedSince: ISO 8601 timestamp
- status: string (active, inactive, archived)
- clinicianId: string
Example response
{
"items": [
{
"clientId": "cl_9f2c18",
"firstName": "Ava",
"lastName": "Nguyen",
"dob": "1991-04-12",
"gender": "female",
"pronouns": "she/her",
"email": "[email protected]",
"mobilePhone": "+1-555-555-0101",
"address": {
"line1": "250 Market St",
"city": "San Diego",
"region": "CA",
"postalCode": "92101"
},
"emergencyContact": {"name": "Kai Nguyen", "phone": "+1-555-555-0142", "relationship": "spouse"},
"portal": {"invited": true, "active": true},
"insurancePolicies": [
{
"policyId": "ins_47ba0f",
"payerName": "Aetna",
"memberId": "AET1234567",
"groupNumber": "G1234",
"copayAmount": 20.0,
"primary": true
}
],
"primaryClinicianId": "pr_320ab7",
"tags": ["CBT", "Couples"],
"status": "active",
"createdAt": "2025-11-20T18:34:55Z",
"updatedAt": "2026-01-21T09:12:03Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
POST /clients: Create or update a client. Supergood handles portal invitations and required fields validation.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/clients \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"firstName": "Jamal",
"lastName": "Rivera",
"dob": "1986-08-09",
"email": "[email protected]",
"mobilePhone": "+1-555-555-0199",
"primaryClinicianId": "pr_320ab7",
"portal": {"sendInvite": true},
"insurancePolicies": [
{"payerName": "Blue Cross", "memberId": "BC12345", "primary": true}
],
"referenceId": "crm-21891"
}'
Example response
{
"clientId": "cl_b28e77",
"portal": {"invited": true, "active": false},
"status": "active",
"referenceId": "crm-21891"
}
Appointments
POST /appointments: Create or update an appointment with service details and telehealth configuration.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/appointments \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"clientId": "cl_b28e77",
"clinicianId": "pr_320ab7",
"service": {"cptCode": "90837", "description": "Psychotherapy, 60 min", "fee": 180.00},
"startTime": "2026-02-01T17:00:00Z",
"durationMinutes": 60,
"location": {"type": "telehealth"},
"notes": "First intake session",
"reminders": {"sms": true, "email": true},
"referenceId": "scheduler-99101"
}'
Example response
{
"appointmentId": "ap_5d7c2f",
"status": "scheduled",
"telehealth": {
"enabled": true,
"joinUrl": "https://telehealth.simplepractice.example/session/ab12cd",
"expiresAt": "2026-02-01T18:15:00Z"
},
"calendar": {"icalUid": "040000008200E00074C5B7101A82E008"},
"referenceId": "scheduler-99101"
}
GET /appointments: Retrieve appointments to drive reminders, show availability, and build claims.
Query parameters
- clientId: string
- clinicianId: string
- start: ISO 8601 datetime
- end: ISO 8601 datetime
- status: string (scheduled, completed, canceled, no_show)
Example response
{
"items": [
{
"appointmentId": "ap_5d7c2f",
"clientId": "cl_b28e77",
"clinicianId": "pr_320ab7",
"service": {"cptCode": "90837", "pos": "02", "modifiers": []},
"startTime": "2026-02-01T17:00:00Z",
"endTime": "2026-02-01T18:00:00Z",
"status": "completed",
"telehealth": {"enabled": true},
"attendance": {"checkedInAt": "2026-02-01T17:01:04Z"}
}
],
"page": 1,
"pageSize": 100,
"total": 1
}
Intake Submissions
GET /intakes: Retrieve completed intake packets, consents, and questionnaire responses with signed URLs for attachments.
Query parameters
- clientId: string
- submittedSince: ISO 8601 datetime
- templateName: string
Example response
{
"items": [
{
"intakeId": "in_84bb21",
"clientId": "cl_9f2c18",
"templates": [
{"name": "Practice Policies & Consent", "version": "v3"},
{"name": "Biopsychosocial Intake", "version": "v2"}
],
"submittedAt": "2026-01-23T21:14:09Z",
"signatures": [
{"signedBy": "Ava Nguyen", "role": "client", "timestamp": "2026-01-23T21:13:55Z"}
],
"answers": {
"presenting_problem": "Anxiety and sleep issues",
"medications": ["Sertraline 50mg"],
"goals": ["Improve sleep", "Reduce panic attacks"]
},
"attachments": [
{"name": "Insurance Card Front.jpg", "url": "https://download.simplepractice.example/signed/abc123", "expiresAt": "2026-01-24T21:14:09Z"}
]
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Claims
POST /claims: Assemble an 837P claim from completed appointments and note metadata. Supergood normalizes service lines and can route the generated file to the configured submission channel.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/claims \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"payer": {"name": "Aetna", "payerId": "00010"},
"billingProvider": {
"npi": "1234567890",
"taxonomy": "Behavioral Health",
"name": "Harbor Counseling Group",
"billingAddress": {"line1": "500 Oak Ave", "city": "Austin", "region": "TX", "postalCode": "78701"}
},
"clientId": "cl_9f2c18",
"diagnoses": ["F41.1"],
"serviceLines": [
{"appointmentId": "ap_5d7c2f", "cptCode": "90837", "pos": "02", "units": 1, "chargeAmount": 180.00}
],
"submissionChannel": "payer_portal",
"referenceId": "claim-batch-2026-02-01"
}'
Example response
{
"claimId": "clm_a10e55",
"status": "queued",
"edi": {"format": "837P", "size": 19876},
"submissionChannel": "payer_portal",
"createdAt": "2026-02-01T18:05:42Z",
"reviewUrl": "https://download.simplepractice.example/signed/def456",
"referenceId": "claim-batch-2026-02-01"
}
Technical Specifications
- Authentication: Username/password with MFA (SMS, email, TOTP) and SSO/OAuth where enabled; supports service accounts or customer-managed credentials
- Response format: JSON with consistent resource schemas and pagination
- Rate limits: Tuned for enterprise throughput while honoring licensing and usage controls
- Session management: Automatic reauth and cookie/session rotation with health checks
- Data freshness: Near real-time retrieval of clients, appointments, intake artifacts, and claim statuses
- Security: Encrypted transport, scoped tokens, and audit logging; respects SimplePractice roles/permissions and HIPAA considerations
- Webhooks: Optional asynchronous delivery for appointment, intake, and claim status events
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume scheduling and billing pipelines
- Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
- Adaptation: Continuous monitoring for UI/API changes with rapid adapter updates
Getting Started
- Schedule Integration Assessment
Book a 30-minute session to confirm your SimplePractice product mix, licensing, and authentication model.
- Supergood Builds and Validates Your API
We deliver a hardened SimplePractice adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as SimplePractice evolves.
Frequently Asked Questions
Q: Which SimplePractice features can this integration cover?
Supergood supports workflows across commonly used SimplePractice areas, subject to your entitlements: clients, scheduling/telehealth, intake/document retrieval, clinical note metadata, payments, and insurance claims. Exact coverage is finalized during integration assessment.
Q: How are MFA, SSO, and document attachments handled for automation?
We handle username/password + MFA (SMS, email, TOTP) and can operate behind SSO/OAuth when enabled. For documents, we generate signed URLs, respect expiration windows, and preserve audit and signature context.
Q: Can I write or lock clinical notes programmatically?
Where your permissions allow, we can create progress notes tied to appointments and apply locks/signatures consistent with audit requirements. Some organizations prefer read-only metadata access to notes; we support both patterns depending on policy.
Q: Can this integrate with external calendars or accounting systems?
Yes. We can orchestrate two-way calendar syncs and accounting flows while using SimplePractice as the clinical source of truth, pushing financial summaries to tools like QuickBooks/Xero and syncing availability with Google Calendar where permitted.
Related Integrations
Intralinks API - Programmatically access the Intralinks VDR with Supergood
Ready to automate your SimplePractice workflows?
Supergood can have your SimplePractice integration live in days with no ongoing engineering maintenance.