Reference
Polls
9 routes, generated from Morse’s own OpenAPI document. Every path below hangs off the base URL, and every one needs the bearer header.
The examples are built from each route’s schema, so the shapes and types are exactly what the API declares. The values are illustrative, and no one has run them.
List launched polls visible to one admitted guest arrival.
/m/{code}/pollsThe launch token is accepted only as a bearer header. Drafts, named respondents, and results the host chose to withhold are not returned.
GET/m/{code}/polls
curl "$MORSE/m/4KJ9P2/polls?guest_id=3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60" \
-H "Authorization: Bearer $MORSE_TOKEN"[
{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}
]Record one final poll choice from an admitted guest arrival.
/m/{code}/polls/{poll_id}/votesThe launch token stays in the bearer header, while the body names only the guest address row and selected option. Vote semantics match signed-in members.
POST/m/{code}/polls/{poll_id}/votes
curl -X POST "$MORSE/m/4KJ9P2/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/votes" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "guest_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60", "option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60" }'{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}List the polls this admitted member may see during the live meeting.
/meetings/{meeting_id}/pollsHosts also receive saved drafts and named respondent details. Participant result counts are null when the poll's show-results setting withholds them.
GET/meetings/{meeting_id}/polls
curl "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls" \
-H "Authorization: Bearer $MORSE_TOKEN"[
{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}
]Save a poll draft for the host who is currently in the meeting.
/meetings/{meeting_id}/pollsDrafts are host-only and do not accept votes. A meeting may hold at most 50 polls across every state.
POST/meetings/{meeting_id}/polls
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "options": [ "…" ], "question": "…" }'{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}Replace the question, options, and visibility settings of a host's draft.
/meetings/{meeting_id}/polls/{poll_id}A launched or closed poll is immutable and returns a conflict instead of changing what participants were asked or promised.
PUT/meetings/{meeting_id}/polls/{poll_id}
curl -X PUT "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "options": [ "…" ], "question": "…" }'{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}Delete one of the current host's unlaunched poll drafts.
/meetings/{meeting_id}/polls/{poll_id}Open and closed polls remain available for the live meeting and cannot be erased through this route.
DELETE/meetings/{meeting_id}/polls/{poll_id}
curl -X DELETE "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60" \
-H "Authorization: Bearer $MORSE_TOKEN"End voting on an open poll while preserving its final live-meeting results.
/meetings/{meeting_id}/polls/{poll_id}/closeOnly the host currently in the meeting may close it. A draft or already closed poll returns a conflict.
POST/meetings/{meeting_id}/polls/{poll_id}/close
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/close" \
-H "Authorization: Bearer $MORSE_TOKEN"{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}Launch a host's draft so admitted participants can vote.
/meetings/{meeting_id}/polls/{poll_id}/launchLaunch fixes the question, options, anonymity, and result-visibility choices for the remainder of the live meeting.
POST/meetings/{meeting_id}/polls/{poll_id}/launch
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/launch" \
-H "Authorization: Bearer $MORSE_TOKEN"{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}Record one final choice from a signed-in member currently in the meeting.
/meetings/{meeting_id}/polls/{poll_id}/votesA named same-choice retry is idempotent; changing a named choice or retrying any anonymous vote is refused. Anonymous turnout stores no selected option.
POST/meetings/{meeting_id}/polls/{poll_id}/votes
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/polls/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/votes" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60" }'{
"anonymous": true,
"closed_at": "2026-10-02T10:30:00+05:30",
"created_at": "2026-10-02T10:30:00+05:30",
"has_voted": true,
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"late_response_count": 3,
"launched_at": "2026-10-02T10:30:00+05:30",
"my_option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"options": [
{
"id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"label": "…",
"position": 1,
"vote_count": 3
}
],
"question": "…",
"respondents": [
{
"display_name": "Priya Shah",
"option_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
"participant_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60"
}
],
"response_count": 3,
"show_results": true,
"status": "draft"
}