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.
availability busy
Section titled “availability busy”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 |
availability overrides create
Section titled “availability overrides create”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 |
availability overrides delete
Section titled “availability overrides delete”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 |
availability overrides list
Section titled “availability overrides list”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
availability overrides update
Section titled “availability overrides update”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 |
availability requests cancel
Section titled “availability requests cancel”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 |
availability requests create
Section titled “availability requests create”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 |
availability requests list
Section titled “availability requests list”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
availability visibility get
Section titled “availability visibility get”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
availability visibility update
Section titled “availability visibility update”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 |
grants create
Section titled “grants create”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 |
grants list
Section titled “grants list”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
grants revoke
Section titled “grants revoke”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 |
schedules create
Section titled “schedules create”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 |
schedules delete
Section titled “schedules delete”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 |
schedules list
Section titled “schedules list”List your named schedules: GET /v1/me/schedules
- Needs:
availability:read - CLI:
quorum schedules list - MCP tool:
schedules_list - Returns:
200 object
schedules update
Section titled “schedules update”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 |