Skip to main content
POST
Trigger an AI outbound contact

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

X-Client-Id
string
required

The location id of the practice

Body

application/json

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.

purpose
enum<string>
required

The reason for the outreach. Required.

Available options:
scheduling,
callback_followup,
refill,
general
contact_number
string
required

The client's phone number in E.164 or local format. Required.

channel
enum<string>
default:sms

The outreach channel. Only sms can be supplied here, which covers SMS and RCS, when available. To configure rich RCS content, see content below.

Available options:
sms
client_id
string

Oliver's identifier for the target client. Optional; resolves the client directly.

client_name
string

Client name used to disambiguate when a contact_number is shared across multiple client records (e.g. a household).

patient_id
string

Oliver's identifier for the patient the outreach concerns, if applicable. To name several pets, use patients instead.

patient_name
string

Patient name, used to match a patient within the resolved client. To name several pets, use patients instead.

patients
object[]

The pets the outreach is about, up to 10, each with what it is due for. The opener and the whole conversation use them, so one message can cover several pets and the AI books them together. Each pet must be one of the client's active pets, or the request returns 400 naming it (e.g. patients[1]). The first pet is the request's patient_id. Don't combine with patient_id or patient_name.

Required array length: 1 - 10 elements
context
string

Free-text context that guides the AI opener (e.g. "overdue for annual wellness exam").

initial_message_script
string

The exact opening text message, sent verbatim. If you omit it, Oliver writes the opener from the purpose, context and patients. With content, this is the plain text: the SMS a client without RCS receives, and the bubble of type: text content. At most 1,600 characters when content is sent.

content
object

Optional rich opener: a card, carousel, image or reply buttons, the same shape and limits as the messages endpoint. See Writing card text for how each layout looks on a phone. Clients whose phone supports RCS see it; everyone else gets initial_message_script as an SMS, or the opener Oliver writes if you omit it. Every reply, including a reply-button tap, goes to Oliver's AI, which continues the conversation. For type: text, the bubble is that same text, so you can send only reply buttons. Requires channel: sms.

partner_request_id
string

Your idempotency key. Re-submitting the same value returns the existing request instead of creating a new one.

callback_url
string<uri>

HTTPS URL that receives the outcome webhook when the request reaches a terminal status (completed, suppressed, or failed). Exactly one webhook is delivered per request. Must begin with https://.

Response

Request suppressed, or an existing request returned for a duplicate partner_request_id

success
boolean
required
data
object
required
message
string | null