Create a survey
Writes a new survey and its questions. It starts as a draft, so nobody can answer it until you publish it. Requires the hoa_surveys:write permission.
Authorization
AuthorizationstringrequiredBody
application/json
titlestringrequiredThe survey's title. At most 200 characters.
descriptionstringrequiredWhat the survey is about. At most 4000 characters.
audiencestringrequiredWho the survey is for, spelled exactly as shown.
closesAtstring · date-timeWhen the survey should close. Send an ISO 8601 timestamp with an offset, for example 2026-09-16T09:00:00-04:00. Omit it and it is set 30 days out.
questionsobject[]requiredAt least one question.
Response
200 · The new survey, as a draft.
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.
400 · `title` or `description` is blank or too long, `questions` is empty, two questions share an `order`, a `MultipleChoice` question has fewer than two options, a `YesNo` or `FreeText` question carries options, or `audience`/`type` is not one of the listed values.
401 · The bearer token is missing, expired, or not valid.
403 · The token is valid but the caller does not hold the `hoa_surveys:write` permission.
| Type | Options |
|---|---|
YesNo | Must not be sent. The answer is a yes or a no. |
MultipleChoice | At least two, each with a unique order. |
FreeText | Must not be sent. The answer is typed text. |
order has to be unique across the questions in one survey, and unique across the options within one question. Nothing requires the numbers to start at 1 or run without gaps — they are only used for sorting.
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.
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.