Skip to content

API: availability

Schedules, saved overrides, visibility, busy times, and who you share availability with.

All paths are under https://api.quorumcal.com. Send Authorization: Bearer <token>, and optionally Quorum-Version: 2026-10-20. Body properties are listed as arguments with In = body.

Your busy times across connected calendars: GET /v1/me/busy

Read on demand and cached for about a minute. At most 31 days per request.

  • Needs: availability:read
  • CLI: quorum availability busy
  • MCP tool: availability_busy
  • Returns: 200 Busy
Argument In Type Required Description
from query string (date-time) yes
to query string (date-time) yes

Save a dated override or a weekly rule: POST /v1/me/availability

Dated overrides are kept as entered and deleted once past (Q51); a weekly rule is only saved when the person accepts “Every Tuesday?”. Free overrides apply everywhere you are part of (Q52); busy ones block. Needs acknowledged: true.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability overrides create
  • MCP tool: availability_overrides_create
  • Returns: 201 AvailabilityOverride
Argument In Type Required Description
body body CreateAvailabilityOverride yes

Delete a saved override or weekly rule: DELETE /v1/me/availability/{overrideId}

Deleting never needs a prompt: it only takes the rule away, so your calendar decides again.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability overrides delete
  • MCP tool: availability_overrides_delete
  • Returns: no body
Argument In Type Required Description
overrideId path string (uuid) yes

List your saved availability overrides and weekly rules: GET /v1/me/availability

  • Needs: availability:read
  • CLI: quorum availability overrides list
  • MCP tool: availability_overrides_list
  • Returns: 200 object

Change a saved override or weekly rule: PATCH /v1/me/availability/{overrideId}

Send only what changes. A dated override takes startsAt and endsAt, a weekly rule weekday, start, end and timezone. Needs acknowledged: true whenever kind, scope or the times change.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability overrides update
  • MCP tool: availability_overrides_update
  • Returns: 200 AvailabilityOverride
Argument In Type Required Description
overrideId path string (uuid) yes
kind body OverrideKind free: calendar busy time inside it counts as open. busy: the time is blocked whatever the calendar shows
label body string
scope body OverrideScope
startsAt body string (date-time)
endsAt body string (date-time)
weekday body integer
start body string
end body string
timezone body string
acknowledged body boolean As on create

Cancel a pending availability request: DELETE /v1/me/availability-requests/{requestId}

Its link stops working. An accepted request can’t be cancelled; the person who accepted can stop sharing.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability requests cancel
  • MCP tool: availability_requests_cancel
  • Returns: no body
Argument In Type Required Description
requestId path string (uuid) yes

Ask people to share their availability: POST /v1/me/availability-requests

Emails each address a link that opens an accept page at the scope you name (yourself, a link, a team or an org you administer). The person can widen it, then connects a calendar, which makes their account if they have none (Q110). The first email an address ever gets introduces Quorum; every email carries “Don’t email me about Quorum” and “Forget me”, and an address that opted out is skipped (listed under suppressed). New accounts can send a few a day (Q113). Links work for 30 days.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability requests create
  • MCP tool: availability_requests_create
  • Returns: 201 CreatedAvailabilityRequests
Argument In Type Required Description
emails body string (email)[] yes Up to 20 addresses
scope body RequestScopeInput yes
note body string

List the availability requests you sent: GET /v1/me/availability-requests

  • Needs: availability:read (not for credentials limited to some orgs)
  • CLI: quorum availability requests list
  • MCP tool: availability_requests_list
  • Returns: 200 object

Who can see your busy time: GET /v1/me/visibility

Visibility is about what others see inside a poll’s availability grid. It never changes your own conflict checking for links and bookings.

  • Needs: availability:read
  • CLI: quorum availability visibility get
  • MCP tool: availability_visibility_get
  • Returns: 200 VisibilitySettings

Change who can see your busy time: PATCH /v1/me/visibility

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum availability visibility update
  • MCP tool: availability_visibility_update
  • Returns: 200 VisibilitySettings
Argument In Type Required Description
default body CalendarVisibility What other workspace members see: busy blocks inside a poll’s grid (never titles), or nothing
calendars body object[] Per-calendar overrides; null clears one back to your default

Share your availability: POST /v1/me/grants

With a person, a team or org you belong to, or one booking link. Sharing with a team needs you to be in it (or in a team below it); with an org, to be a member. Sharing again is a no-op.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum grants create
  • MCP tool: grants_create
  • Returns: 201 AvailabilityGrant
Argument In Type Required Description
granteeKind body “user” or “team” or “org” or “link” or “series” yes
granteeId body string (uuid) yes

List who you share your availability with: GET /v1/me/grants

A grant lets its grantee offer you on links and pools, show you in a poll’s overlay and generate polls for you. A grant to a team covers exactly that team; one to an org covers all its teams. A credential limited to some orgs can’t read this (it names every org).

  • Needs: availability:read (not for credentials limited to some orgs)
  • CLI: quorum grants list
  • MCP tool: grants_list
  • Returns: 200 object

Stop sharing your availability: DELETE /v1/me/grants/{grantId}

People and links that relied on the grant stop offering you. Existing bookings are unaffected.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum grants revoke
  • MCP tool: grants_revoke
  • Returns: no body
Argument In Type Required Description
grantId path string (uuid) yes

Create a named schedule: POST /v1/me/schedules

Your first schedule becomes your default.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum schedules create
  • MCP tool: schedules_create
  • Returns: 201 Schedule
Argument In Type Required Description
name body string yes
timezone body string yes
weekly body WeeklyInterval[] yes
isDefault body boolean

Delete a named schedule: DELETE /v1/me/schedules/{scheduleId}

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum schedules delete
  • MCP tool: schedules_delete
  • Returns: no body
Argument In Type Required Description
scheduleId path string (uuid) yes

List your named schedules: GET /v1/me/schedules

  • Needs: availability:read
  • CLI: quorum schedules list
  • MCP tool: schedules_list
  • Returns: 200 object

Update a named schedule: PATCH /v1/me/schedules/{scheduleId}

Setting isDefault makes this your default; you can’t unset it directly.

  • Needs: availability:write (not for credentials limited to some orgs)
  • CLI: quorum schedules update
  • MCP tool: schedules_update
  • Returns: 200 Schedule
Argument In Type Required Description
scheduleId path string (uuid) yes
name body string
timezone body string
weekly body WeeklyInterval[]
isDefault body boolean