Trigger AI Outbound Contact
Trigger an AI outbound contact flow (SMS today) for a single client. Intake is synchronous — Oliver validates the request, resolves the target client, and runs suppression checks before responding. The actual outreach is dispatched asynchronously; the final outcome is delivered to your callback_url webhook, if provided.
A suppressed request is not an error: it returns 200 OK with status: "suppressed" and a suppression_reason. Only malformed or unresolvable input returns a 400.
Provide at least one of client_id or contact_number to identify the target. Set partner_request_id to make the call idempotent — re-submitting the same value returns the existing request instead of creating a new one.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
The location id of the practice
Body
The AI outbound contact to trigger
Provide contact_number to identify the target client. client_id may also be supplied to resolve the client directly.
The reason for the outreach. Required.
scheduling, callback_followup, refill, general The client's phone number in E.164 or local format. Required.
The outreach channel. Defaults to sms.
sms, voice Oliver's identifier for the target client. Optional; resolves the client directly.
Client name used to disambiguate when a contact_number is shared across multiple client records (e.g. a household).
Oliver's identifier for the patient the outreach concerns, if applicable.
Patient name, used to match a patient within the resolved client.
Free-text context that guides the AI opener (e.g. "overdue for annual wellness exam").
The exact opening message for the AI to send. If provided, Oliver uses it verbatim; otherwise Oliver generates an opener based on the purpose.
Your idempotency key. Re-submitting the same value returns the existing request instead of creating a new one.
HTTPS URL that receives the outcome webhook when the request reaches a terminal status. Must begin with https://.

