Get a survey
Fetches one survey with its questions and their options. Requires the hoa_surveys:read permission.
Authorization
AuthorizationstringrequiredPath parameters
surveyIdstringrequiredThe survey to act on.
Response
200 · The survey.
idstringThe survey. A 64-bit id sent as a decimal string.
titlestringThe survey's title.
descriptionstringWhat the survey is about.
audiencestringBoardMembers polls the seated board; CommunityMembers polls the wider community.
statusstringDraft while it is being written, Open once published, Closed once responses are shut off.
closesAtstring · date-timeWhen the survey is scheduled to close, in the company's timezone. Set to 30 days out when the survey is created without one, and it cannot be cleared afterwards.
questionsobject[]The survey's questions, sorted by order.
responseCountintegerAlways 0 on this endpoint — it is not computed here. Read the survey's results for the real number.
eligibleCountintegerNever returned by this endpoint, so it is always absent. Read the survey's results for it.
createdstring · date-timeWhen the survey was created, in the company's timezone.
updatedstring · date-timeWhen the survey last changed, in the company's timezone.
401 · The bearer token is missing, expired, or not valid.
403 · The token is valid but the caller does not hold the `hoa_surveys:read` permission.
404 · No survey with that id belongs to the calling company.
This endpoint returns the survey shape with responseCount hard-set to 0 and eligibleCount omitted, whatever the real numbers are. Call Get survey results when you need them, or read them off the list.
Questions are bound to their survey when it is published. While a survey is still Draft, its question list is resolved across every unpublished question in the company — so if you keep two drafts open at once, both will show both sets of questions. Publish a draft before relying on its question list, or keep one draft at a time.
audience, status, and a question's type are plain strings here, not the camelCase enumerations used elsewhere in the API. They are matched exactly as written — BoardMembers works, boardMembers gets 400 Bad Request.