Surveys

List surveys

Returns a page of the company's surveys, newest first, with the question and response counts for each. Requires the hoa_surveys:read permission.

GET
https://services.magicdoor.com/hoa/company-portal/associations/surveys

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Query parameters

currentPageinteger

Which page to return. Counting starts at 1, and anything below 1 is treated as 1.

default: 1example: 1
pageSizeinteger

How many surveys to return per page. A value below 1 falls back to 50.

default: 20example: 20
statusesstring[]

Return only surveys in these states. Repeat the parameter once per value, and spell each one exactly as shown.

DraftOpenClosed
audiencesstring[]

Return only surveys aimed at these audiences. Repeat the parameter once per value, and spell each one exactly as shown.

BoardMembersCommunityMembers

Response

200 · A page of surveys.

itemsobject[]

The surveys on this page, newest first. These entries carry no description and no questions.

totalCountinteger

How many surveys match the filter across every page.

400 · `statuses` or `audiences` holds a value that is not one of the listed ones, including one spelled with the wrong casing.

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.

A survey is a set of questions put to either the seated board or the wider community. You write it as a draft, publish it to open it for responses, and close it when you are done. Responses come in through the owner portal.

StatusWhat it means
DraftBeing written. It can still be edited, and nobody can answer it.
OpenPublished. The audience can answer it.
ClosedAnswers are shut off. Results stay readable.
No page numbers in the response

The response carries items and totalCount only — it does not echo currentPage or pageSize back to you, so keep track of what you asked for.

These values are case-sensitive

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.