Initial publication of the GrowDental Partner API contract (
2026-07-04).API surface (Phase 1)GET /practices— list granted practicesGET /practices/{practiceId}/calls,GET /calls/{callId}— call results: status, outcome, duration, summary; transcript withtranscripts:read+ BAAGET /calls/{callId}/recording— 302 to a short-lived signed recording URL (recordings:read+ BAA)POST /practices/{practiceId}/call-requests,GET /practices/{practiceId}/call-requests,GET /call-requests/{callRequestId}— trigger and track outbound callingGET|POST /webhook-endpoints,PATCH|DELETE /webhook-endpoints/{endpointId}— webhook endpoint management
call.completed,call.recording.ready,call_request.completed— HMAC-SHA256-signed (X-GrowDental-Signature), at-least-once, unordered, PHI-minimal payloads
- Invite-only partner apps with per-practice grants; ungranted practices return 404
- Scoped API keys (
gd_live_...), shown once, stored hashed - BAA hard gate on PHI scopes (
403 baa_required) - Per-key rate limits (600/min; 60/min bulk) and
Idempotency-Keysupport on all POSTs
- Canonical intake schemas (Patient, Appointment, Treatment — including the required TCPA
consentfield) are in the OpenAPI components as a Phase 2 draft contract so PMS partners can start mapping. The batch intake endpoints are not yet live. - Planned events
call_attempt.resolvedandappointment.bookedare documented but not yet emitted.