Fetch completed form responses
Goal
Pull a Patient's answered Form data, structured JSON, not a PDF, for mapping into your EHR or downstream system.
Prerequisites
- An API key pair, see Authentication.
Steps
1. List responses
curl --request GET \
--url 'https://api.app.zentake.com/v2/responses?patient=<patient_id>' \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>'
Available filters: patient, form, packet, document,
packet_response, id, submitted_after, submitted_before,
submitted_on. Full reference: Get responses.
The list endpoint returns a lighter ResponseList shape, form_id /
form_name / document_id / document_name / packet_response_id
instead of nested objects, and no answers array, to keep listing fast.
You can pass ?include_answers=true to get the full nested payload
(including answers) directly from the list endpoint, but the spec warns
this "can significantly slow down requests", prefer retrieving
individual responses by id instead, as in the next step.
2. Check which responses are actually complete
Each entry has is_submitted and submitted_at, a Response can exist
before it's finished (the Patient opened the form but hasn't submitted
yet). Only treat is_submitted: true responses as complete.
3. Retrieve the full response
curl --request GET \
--url https://api.app.zentake.com/v2/responses/<response_id> \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <your_api_key>' \
--header 'X-API-SECRET: <your_api_secret>'
The full response includes:
| Field | Notes |
|---|---|
answers | answer_raw, plus derived answer_text / answer_num / answer_date / answer_time / answer_datetime, notes, answer_choices |
answer_signatures | E-signatures captured on the form |
answer_matrix_cells | Answers to matrix/grid questions |
answer_files | Uploaded files (e.g., insurance card photos) |
patient, form, packet_response, document | Related resources |
Full field reference: Response concept page and Get response by id.
A Response holds the Patient's actual answers, medical history, insurance details, signed consent. Handle and store this payload as PHI.
What success looks like
is_submitted: trueand a populatedsubmitted_at.answers(and, where relevant,answer_signatures/answer_matrix_cells/answer_files) populated with the Patient's submitted data.
Next
- Download generated PDFs. The same submission, as a filled PDF instead of JSON.
- Export intake data to an EHR