Reference
Copilot
4 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.
Host only, like the other room switches — but unlike them, not announced
on room_topic.
/meetings/{meeting_id}/copilotThat topic reaches guests. Members pick the state up from
their own Meeting.
PATCH/meetings/{meeting_id}/copilot
curl -X PATCH "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/copilot" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "enabled": true }'{
"enabled": true
}Ask the meeting's assistant a question.
/meetings/{meeting_id}/copilot/askOnly during a live meeting, for someone in the room,
when the host has it on. Send X-Timezone.
POST/meetings/{meeting_id}/copilot/ask
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/copilot/ask" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "x-timezone: Asia/Kolkata" \
-H "Content-Type: application/json" \
-d '{ "question": "…" }'{
"answer": "…",
"looked_in": [
"…"
]
}Approve or decline a proposal, then let the model finish.
/meetings/{meeting_id}/copilot/runs/{run_id}/decisionThe gate runs again: a member who has left, or a copilot the host has since switched off, cannot approve a write proposed while they were in. The claim deletes the run, so this can only happen once — a second click, or a colleague holding the id, finds nothing.
POST/meetings/{meeting_id}/copilot/runs/{run_id}/decision
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/copilot/runs/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/decision" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "x-timezone: Asia/Kolkata" \
-H "Content-Type: application/json" \
-d '{ "approve": true }'{
"answer": "…",
"looked_in": [
"…"
]
}Say a time back, and whether this member is free then: what a card shows after they change a proposal's time, before they book it (plan 021 S12).
/meetings/{meeting_id}/copilot/slotTheir own calendar only, and nothing is written.
POST/meetings/{meeting_id}/copilot/slot
curl -X POST "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/copilot/slot" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "x-timezone: Asia/Kolkata" \
-H "Content-Type: application/json" \
-d '{ "minutes": 30, "start": "2026-10-02T10:30:00+05:30" }'{
"busy_invitees": [
"…"
],
"conflict": true,
"needs_scope": true,
"unchecked": [
"…"
],
"when": "…"
}