Send an intake packet to a patient
Goal
Send a full Packet of intake forms to a Patient by SMS or email, so it's completed before their visit.
There is no dedicated "send packet" endpoint. Sending is done by creating
a Message that references the Packet,
POST /v2/messages with a packet field and
message_type: "packet_response_request". The Message is the resource
your integration creates; Zentake delivers it and tracks status.
Prerequisites
- A Zentake API key pair (
X-API-KEY/X-API-SECRET), see Authentication. - A Packet already built in the Zentake dashboard. Packets are authored in
the dashboard and exposed read-only via the API. You can't create one
through this API, only look up an existing one's
id.
Steps
1. Find or create the Patient
Search for an existing Patient first:
curl --request GET \
--url 'https://api.app.zentake.com/v2/patients?search=jane%20doe' \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>'
If none matches, create one:
curl --request POST \
--url https://api.app.zentake.com/v2/patients \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>' \
--data '{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone_number": "+15555550123"
}'
Keep the id from the response. You'll need it as patient below.
Patient records hold personally identifiable and health-related information. Treat the request and response bodies above as PHI.
2. Look up the Packet you want to send
Packets are read-only via the API, so list them to find the right id:
curl --request GET \
--url https://api.app.zentake.com/v2/packets \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>'
Or fetch one directly if you already know its id:
Get packet by id.
3. Create the Message
curl --request POST \
--url https://api.app.zentake.com/v2/messages \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>' \
--data '{
"patient": "<patient_id>",
"packet": "<packet_id>",
"message_type": "packet_response_request",
"preferred_delivery_method": "email",
"target_email": "jane.doe@example.com"
}'
- Exactly one of
form,packet, ordocumentmust be set on a Message, here it'spacket. target_email/target_phoneoverride the Patient's stored contact info if you need to send somewhere else for this one message.- To send later instead of immediately, add
"scheduled_at": "2025-05-10T15:00:00Z", see Create a new message.
What success looks like
201 Createdwith a Message object whoseid,status, andmessage_codeare populated.- The Patient receives an SMS or email with a link to open the Packet.
- Once they open it, a Packet Response
is created and the Message's
packet_responsefield (fetch the Message again to see it) points at it.
Next
- Check packet completion status
- Receive completion webhooks, the recommended alternative to polling