Open Morse

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.

PATCH/meetings/{meeting_id}/copilot

That 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 }'
200
{
  "enabled": true
}

Ask the meeting's assistant a question.

POST/meetings/{meeting_id}/copilot/ask

Only 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": "…" }'
200
{
  "answer": "…",
  "looked_in": [
    "…"
  ]
}

Approve or decline a proposal, then let the model finish.

POST/meetings/{meeting_id}/copilot/runs/{run_id}/decision

The 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 }'
200
{
  "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).

POST/meetings/{meeting_id}/copilot/slot

Their 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" }'
200
{
  "busy_invitees": [
    "…"
  ],
  "conflict": true,
  "needs_scope": true,
  "unchecked": [
    "…"
  ],
  "when": "…"
}