Intake forms
PHI-aware patient-facing forms that gate visits. Submitted answers encrypt at rest and audit on read.
Field types: text, longtext, number, date, boolean, select, multiselect, signature. Mark a field phi: true to opt into the encryption + audit guarantees.
Create an intake form
ADMIN/MANAGER only. Forms are immediately usable once isActive is true.
Required scopes:
users.manageRequest body
| Name | Type | Description |
|---|---|---|
namerequired | string | Form name. |
fieldsrequired | Field[] | ≥ 1 field with key/label/type/required. |
requireBeforeAppt | boolean | Block visits until the patient submits. |
expirationDays | integer | Re-require after this many days. 1–3650. |
isActive | boolean | Active flag. |
Request body
{ "name": "Annual physical intake", "fields": [{ "key": "primary_concern", "label": "Primary concern", "type": "longtext", "required": true }] }Responses
201 CreatedCreated.example { "id": "if_3k9w2x…", "name": "Annual physical intake", "fields": [ { "key": "primary_concern", "label": "Primary concern", "type": "longtext", "required": true, "phi": true } ], "requireBeforeAppt": true, "expirationDays": 365, "isActive": true, "createdAt": "2026-05-18T14:00:00Z" }
Code samples
curl -X POST https://app.contactfollowup.com/api/intake-forms \
-H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Annual physical intake", "fields": [{ "key": "primary_concern", "label": "Primary concern", "type": "longtext", "required": true }] }'List intake forms
Active and inactive intake forms.
Required scopes:
contacts.readQuery parameters
| Name | Type | Description |
|---|---|---|
active | boolean | Restrict to active forms. |
Responses
200 OKForms.example { "intakeForms": [{ "id": "if_3k9w2x…", "name": "Annual physical intake", "fields": [ { "key": "primary_concern", "label": "Primary concern", "type": "longtext", "required": true, "phi": true } ], "requireBeforeAppt": true, "expirationDays": 365, "isActive": true, "createdAt": "2026-05-18T14:00:00Z" }] }
Code samples
curl -X GET https://app.contactfollowup.com/api/intake-forms \
-H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
-H "Content-Type: application/json"