Callrecordingready
Sent when a call’s audio recording has been processed and is available
via GET /calls/{callId}/recording (requires recordings:read + BAA).
The payload contains only IDs and API links — never a media URL.
Verify X-GrowDental-Signature before trusting the payload;
de-duplicate on X-GrowDental-Delivery-Id.
Authorizations
Partner API key sent as a Bearer token:
Authorization: Bearer gd_live_...Keys are issued by the GrowDental team (invite-only), shown once
at creation, and stored server-side only as a SHA-256 hash. Key format:
gd_live_ (or gd_test_) followed by a 43-character base62 secret
(~256 bits of entropy). To rotate, request a new key, deploy it, then
ask us to revoke the old one — both keys work during the overlap.
Headers
Delivery signature: t=<unix seconds>,v1=<hex HMAC-SHA256> where the
HMAC is computed over <t> + "." + <raw request body> using your
endpoint's signing secret. Recompute and compare with a constant-time
comparison, and reject deliveries whose t is more than 300 seconds
from the current time (replay protection).
Unique delivery ID, stable across retries of the same delivery.
Deliveries are at-least-once — de-duplicate on this value. The event
type is carried in the body envelope's type field.
Body
Delivery body for call.recording.ready.
Event ID (stable across every delivery and retry of this event).
Event types deliverable to webhook endpoints. call_attempt.resolved
and appointment.booked are planned (Phase 2) — valid to subscribe to
now, but not yet emitted.
call.completed, call.recording.ready, call_request.completed, call_attempt.resolved, appointment.booked "call.recording.ready"When the event occurred.
The practice the event belongs to.
PHI-minimal payload — the recording itself is fetched over the authenticated API.
Response
Respond with any 2xx status within 10 seconds to acknowledge.