# Questionnaires

Pre-appointment **questionnaires** (clinical intake forms) linked to confirmed or held appointments.

* Not every appointment type requires a questionnaire — use `GET /connected/appointments/{appointment_id}/questionnaire` after confirm (or when the appointment is held, if a form is already linked).
* `completion_url` opens Dr.Online's patient form UI; embed it in your app or send it to the patient by your own channels when `send_transactional_emails` is off on the partner.
* `status` is `open`, `finished`, or `incomplete`.
* Questionnaire ids are Dr.Online stable ids (`questionnaire_id`), not Healthie form ids.

## GET /connected/appointments/{appointment\_id}/questionnaire

> Questionnaire (pre-appointment intake form) for a held or confirmed appointment.

```json
{"openapi":"3.2.0","info":{"title":"Dr.Online Connected API","version":"2026-05-29"},"tags":[{"name":"Questionnaires","summary":"Questionnaires","description":"Pre-appointment **questionnaires** (clinical intake forms) linked to confirmed or held appointments.\n\n- Not every appointment type requires a questionnaire — use `GET /connected/appointments/{appointment_id}/questionnaire` after confirm (or when the appointment is held, if a form is already linked).\n- `completion_url` opens Dr.Online's patient form UI; embed it in your app or send it to the patient by your own channels when `send_transactional_emails` is off on the partner.\n- `status` is `open`, `finished`, or `incomplete`.\n- Questionnaire ids are Dr.Online stable ids (`questionnaire_id`), not Healthie form ids."}],"servers":[{"url":"http://localhost:3001/v1","description":"Live (production credentials)"},{"url":"http://localhost:3001/v1","description":"Sandbox (non-production credentials)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Connected API secret key from the credential reveal flow (`sk_live_…` or `sk_sandbox_…`). Each key is tied to one Dr.Online catalogue. Server-to-server only: `Authorization: Bearer <secret_key>`."}}},"paths":{"/connected/appointments/{appointment_id}/questionnaire":{"get":{"operationId":"partnerV1GetAppointmentQuestionnaire","tags":["Questionnaires"],"description":"Questionnaire (pre-appointment intake form) for a held or confirmed appointment.","parameters":[{"schema":{"type":"string"},"in":"path","name":"appointment_id","required":true,"description":"Appointment (booking) id returned when creating a hold"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"questionnaire":{"type":"object","properties":{"id":{"type":"string","description":"Dr.Online questionnaire id — use `GET /connected/questionnaires/{questionnaire_id}` or the appointment sub-resource."},"object":{"type":"string","enum":["questionnaire"]},"appointment_id":{"type":"string","description":"Appointment (booking) id returned when creating a hold"},"booking_channel_id":{"type":"string","nullable":true,"description":"Reserved. Always `null` on Connected API resources — catalogue scope is fixed per API credential."},"completion_url":{"type":"string","format":"uri","nullable":true,"description":"Patient-facing URL to complete the questionnaire on Dr.Online (`null` when the form link is not yet available)."},"name":{"type":"string","description":"{\"example\":\"Pre-appointment questionnaire\"}"},"questionnaire_id":{"type":"string","description":"Dr.Online questionnaire id — use `GET /connected/questionnaires/{questionnaire_id}` or the appointment sub-resource."},"status":{"type":"string","enum":["open","finished","incomplete"],"description":"{\"example\":\"open\"}"}},"required":["id","object","appointment_id","booking_channel_id","completion_url","name","questionnaire_id","status"],"additionalProperties":false}},"required":["questionnaire"],"additionalProperties":false}}}}}}}}}
```

## GET /connected/questionnaires/{questionnaire\_id}

> Retrieve a questionnaire by Dr.Online questionnaire id (same resource as the appointment sub-resource).

```json
{"openapi":"3.2.0","info":{"title":"Dr.Online Connected API","version":"2026-05-29"},"tags":[{"name":"Questionnaires","summary":"Questionnaires","description":"Pre-appointment **questionnaires** (clinical intake forms) linked to confirmed or held appointments.\n\n- Not every appointment type requires a questionnaire — use `GET /connected/appointments/{appointment_id}/questionnaire` after confirm (or when the appointment is held, if a form is already linked).\n- `completion_url` opens Dr.Online's patient form UI; embed it in your app or send it to the patient by your own channels when `send_transactional_emails` is off on the partner.\n- `status` is `open`, `finished`, or `incomplete`.\n- Questionnaire ids are Dr.Online stable ids (`questionnaire_id`), not Healthie form ids."}],"servers":[{"url":"http://localhost:3001/v1","description":"Live (production credentials)"},{"url":"http://localhost:3001/v1","description":"Sandbox (non-production credentials)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Connected API secret key from the credential reveal flow (`sk_live_…` or `sk_sandbox_…`). Each key is tied to one Dr.Online catalogue. Server-to-server only: `Authorization: Bearer <secret_key>`."}}},"paths":{"/connected/questionnaires/{questionnaire_id}":{"get":{"operationId":"partnerV1GetQuestionnaire","tags":["Questionnaires"],"description":"Retrieve a questionnaire by Dr.Online questionnaire id (same resource as the appointment sub-resource).","parameters":[{"schema":{"type":"string"},"in":"path","name":"questionnaire_id","required":true,"description":"Dr.Online questionnaire id — use `GET /connected/questionnaires/{questionnaire_id}` or the appointment sub-resource."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"questionnaire":{"type":"object","properties":{"id":{"type":"string","description":"Dr.Online questionnaire id — use `GET /connected/questionnaires/{questionnaire_id}` or the appointment sub-resource."},"object":{"type":"string","enum":["questionnaire"]},"appointment_id":{"type":"string","description":"Appointment (booking) id returned when creating a hold"},"booking_channel_id":{"type":"string","nullable":true,"description":"Reserved. Always `null` on Connected API resources — catalogue scope is fixed per API credential."},"completion_url":{"type":"string","format":"uri","nullable":true,"description":"Patient-facing URL to complete the questionnaire on Dr.Online (`null` when the form link is not yet available)."},"name":{"type":"string","description":"{\"example\":\"Pre-appointment questionnaire\"}"},"questionnaire_id":{"type":"string","description":"Dr.Online questionnaire id — use `GET /connected/questionnaires/{questionnaire_id}` or the appointment sub-resource."},"status":{"type":"string","enum":["open","finished","incomplete"],"description":"{\"example\":\"open\"}"}},"required":["id","object","appointment_id","booking_channel_id","completion_url","name","questionnaire_id","status"],"additionalProperties":false}},"required":["questionnaire"],"additionalProperties":false}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dronline.uk/connected-api/questionnaires.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
