API: admin
Org administration: settings, members, invites, teams and credentials.
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.
orgs breaks create
Section titled “orgs breaks create”Add an org-wide break: POST /v1/orgs/{handle}/breaks
Every series owned by the org’s teams skips weeks that fall in the range, unless it opted out (Q63). Org admins.
- Needs:
workspace:admin - CLI:
quorum orgs breaks create - MCP tool:
orgs_breaks_create - Returns:
201 SeriesBreak
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
label |
body | string | yes | |
startsOn |
body | string | yes | |
endsOn |
body | string | yes |
orgs breaks delete
Section titled “orgs breaks delete”Remove an org-wide break: DELETE /v1/orgs/{handle}/breaks/{breakId}
Org admins.
- Needs:
workspace:admin - CLI:
quorum orgs breaks delete - MCP tool:
orgs_breaks_delete - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
breakId |
path | string (uuid) | yes |
orgs credentials list
Section titled “orgs credentials list”List every credential that reaches an org: GET /v1/orgs/{handle}/credentials
Personal tokens and connected apps of members that are limited to or include this workspace: who owns them, what they can do and when they were last used. Never the secret.
- Needs:
workspace:admin - CLI:
quorum orgs credentials list - MCP tool:
orgs_credentials_list - Returns:
200 object
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes |
orgs invites create
Section titled “orgs invites create”Invite someone by email: POST /v1/orgs/{handle}/invites
Emails an accept link that works for 14 days. Inviting the same address again replaces its pending invite.
- Needs:
workspace:admin - CLI:
quorum orgs invites create - MCP tool:
orgs_invites_create - Returns:
201 CreatedInvite
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
email |
body | string (email) | yes | |
role |
body | Role | Your role in this workspace (owners show as admin) |
orgs invites list
Section titled “orgs invites list”List an org’s pending invites: GET /v1/orgs/{handle}/invites
- Needs:
workspace:admin - CLI:
quorum orgs invites list - MCP tool:
orgs_invites_list - Returns:
200 object
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes |
orgs invites revoke
Section titled “orgs invites revoke”Revoke a pending invite: DELETE /v1/orgs/{handle}/invites/{inviteId}
- Needs:
workspace:admin - CLI:
quorum orgs invites revoke - MCP tool:
orgs_invites_revoke - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
inviteId |
path | string (uuid) | yes |
orgs members remove
Section titled “orgs members remove”Remove a member, or leave the org yourself: DELETE /v1/orgs/{handle}/members/{userId}
Removing someone takes them out of every team of the org and ends what they shared with it. The owner can’t be removed or leave.
- Needs:
workspace:admin - CLI:
quorum orgs members remove - MCP tool:
orgs_members_remove - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
userId |
path | string (uuid) | yes |
orgs members update
Section titled “orgs members update”Change a member’s role: PATCH /v1/orgs/{handle}/members/{userId}
Between admin and member. Team roles are separate. The owner’s role changes only by transferring ownership.
- Needs:
workspace:admin - CLI:
quorum orgs members update - MCP tool:
orgs_members_update - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
userId |
path | string (uuid) | yes | |
role |
body | Role | yes | Your role in this workspace (owners show as admin) |
orgs policy get
Section titled “orgs policy get”Get an org’s token and connected-app policies: GET /v1/orgs/{handle}/developer
- Needs:
workspace:admin - CLI:
quorum orgs policy get - MCP tool:
orgs_policy_get - Returns:
200 DeveloperPolicy
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes |
orgs update
Section titled “orgs update”Change an org’s settings: PATCH /v1/orgs/{handle}
- Needs:
workspace:admin - CLI:
quorum orgs update - MCP tool:
orgs_update - Returns:
200 Org
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
name |
body | string | ||
meetByDefault |
body | boolean |
orgs webhooks create
Section titled “orgs webhooks create”Create a webhook endpoint: POST /v1/orgs/{handle}/webhooks
Quorum will POST signed JSON (Standard Webhooks) to the URL. The URL must be https on port 443 and not point at a private, loopback or link-local address; redirects are never followed. The payload version is pinned to the Quorum-Version of this request (current 2026-10-20). An org has at most 20 endpoints. The secret is returned here only.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks create - MCP tool: not offered over MCP
- Returns:
201 CreatedWebhookEndpoint
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
url |
body | string | yes | |
description |
body | string | ||
events |
body | string[] | Defaults to everything (*) |
|
payloadVersion |
body | string | A supported API version; defaults to the request’s |
orgs webhooks delete
Section titled “orgs webhooks delete”Delete a webhook endpoint: DELETE /v1/orgs/{handle}/webhooks/{webhookId}
Its delivery log goes with it.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks delete - MCP tool: not offered over MCP
- Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes |
orgs webhooks deliveries
Section titled “orgs webhooks deliveries”List an endpoint’s deliveries: GET /v1/orgs/{handle}/webhooks/{webhookId}/deliveries
Newest first. Each delivery is one event for this endpoint, with its tries.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks deliveries - MCP tool:
orgs_webhooks_deliveries - Returns:
200 object - Paging:
limitandoffset
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes | |
status |
query | “pending” or “succeeded” or “failed” | ||
limit |
query | integer | ||
offset |
query | integer |
orgs webhooks delivery
Section titled “orgs webhooks delivery”Get a delivery with its payload and tries: GET /v1/orgs/{handle}/webhooks/{webhookId}/deliveries/{deliveryId}
- Needs:
workspace:admin - CLI:
quorum orgs webhooks delivery - MCP tool:
orgs_webhooks_delivery - Returns:
200 WebhookDelivery
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes | |
deliveryId |
path | string (uuid) | yes |
orgs webhooks events
Section titled “orgs webhooks events”List the webhook event types: GET /v1/webhook-events
Every type an endpoint can subscribe to, with a sample of its data.
- Needs: any signed-in credential
- CLI:
quorum orgs webhooks events - MCP tool:
orgs_webhooks_events - Returns:
200 WebhookEventTypes
orgs webhooks get
Section titled “orgs webhooks get”Get a webhook endpoint: GET /v1/orgs/{handle}/webhooks/{webhookId}
- Needs:
workspace:admin - CLI:
quorum orgs webhooks get - MCP tool:
orgs_webhooks_get - Returns:
200 WebhookEndpoint
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes |
orgs webhooks list
Section titled “orgs webhooks list”List an org’s webhook endpoints: GET /v1/orgs/{handle}/webhooks
Org owners and admins only. Secrets are never listed.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks list - MCP tool:
orgs_webhooks_list - Returns:
200 object
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes |
orgs webhooks redeliver
Section titled “orgs webhooks redeliver”Send a delivery again: POST /v1/orgs/{handle}/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver
Makes a new delivery of the same event (same webhook-id, so a receiver that de-duplicates by it can recognise it) with its own 8 tries. The endpoint must be turned on.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks redeliver - MCP tool:
orgs_webhooks_redeliver - Returns:
202 WebhookDeliverySummary
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes | |
deliveryId |
path | string (uuid) | yes |
orgs webhooks rotate-secret
Section titled “orgs webhooks rotate-secret”Rotate a webhook endpoint’s secret: POST /v1/orgs/{handle}/webhooks/{webhookId}/rotate-secret
Makes a new secret and returns it once. For overlapHours the previous secret keeps signing too (the signature header carries both), so a receiver can switch without dropping a delivery. Rotating again replaces the previous secret.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks rotate-secret - MCP tool: not offered over MCP
- Returns:
200 CreatedWebhookEndpoint
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes | |
overlapHours |
body | integer | How long the old secret keeps signing. Default 24, at most 168 (a week) |
orgs webhooks test
Section titled “orgs webhooks test”Send a test event: POST /v1/orgs/{handle}/webhooks/{webhookId}/test
Sends a webhook.test event to this endpoint now, whatever it subscribes to and even if it is turned off, and returns the result. A test is a single try: it is not retried and doesn’t count towards switching the endpoint off.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks test - MCP tool:
orgs_webhooks_test - Returns:
200 WebhookDelivery
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes |
orgs webhooks update
Section titled “orgs webhooks update”Change a webhook endpoint: PATCH /v1/orgs/{handle}/webhooks/{webhookId}
Change its URL, description or events, or turn it off or on. Not offered over MCP: a changed URL would let an agent redirect the org’s event stream. Turning on an endpoint that was switched off clears its failure record; anything that failed meanwhile can be redelivered.
- Needs:
workspace:admin - CLI:
quorum orgs webhooks update - MCP tool: not offered over MCP
- Returns:
200 WebhookEndpoint
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
webhookId |
path | string (uuid) | yes | |
url |
body | string | ||
description |
body | string | ||
events |
body | string[] | Event types to receive: exact (booking.created), a group (booking.*) or everything (*). List them with GET /v1/webhook-events |
|
status |
body | “active” or “disabled” |
teams create
Section titled “teams create”Create a team: POST /v1/orgs/{handle}/teams
Org admins only. Teams are flat. The slug is unique in the org and shares one namespace with the org’s root link slugs (a link published at quorumcal.com/{org}/{link}). Only org admins can grant root publishing or set a root alias.
- Needs:
workspace:admin - CLI:
quorum teams create - MCP tool:
teams_create - Returns:
201 Team
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
name |
body | string | yes | |
slug |
body | string | yes | |
canPublishRoot |
body | boolean | Let the team publish links and polls at the org’s root. Defaults to false | |
alias |
body | string | A root alias handle (quorumcal.com/{alias}/…) |
teams delete
Section titled “teams delete”Delete an empty team: DELETE /v1/orgs/{handle}/teams/{teamPath}
Org admins only. A team that still has links, polls or bookings answers 409 team_not_empty. Its alias is held for 90 days.
- Needs:
workspace:admin - CLI:
quorum teams delete - MCP tool:
teams_delete - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
teamPath |
path | string | yes | The team’s slug or id |
teams members remove
Section titled “teams members remove”Remove someone from a team, or leave it yourself: DELETE /v1/orgs/{handle}/teams/{teamPath}/members/{userId}
Ends the availability grant this membership made. Grants they made themselves stay. They stay in the org.
- Needs:
workspace:admin - CLI:
quorum teams members remove - MCP tool:
teams_members_remove - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
teamPath |
path | string | yes | The team’s slug or id |
userId |
path | string (uuid) | yes |
teams members set
Section titled “teams members set”Add someone to a team, or change their role: PUT /v1/orgs/{handle}/teams/{teamPath}/members/{userId}
They must already be in the org. Joining shares their availability with this team only (a grant covers exactly one team; they can take it back). Leaving ends that grant if the membership made it; grants they made themselves stay.
- Needs:
workspace:admin - CLI:
quorum teams members set - MCP tool:
teams_members_set - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
teamPath |
path | string | yes | The team’s slug or id |
userId |
path | string (uuid) | yes | |
role |
body | TeamRole | Your standing: admin (of this team, or an org admin), member, or none |
teams update
Section titled “teams update”Rename a team, change its root permission or alias: PATCH /v1/orgs/{handle}/teams/{teamPath}
A team’s admins can change its name and slug. Org admins can also set canPublishRoot and the root alias. A change of address leaves permanent redirects from the old one. Turning canPublishRoot off moves the team’s root links and polls under the team, with redirects from their root addresses.
- Needs:
workspace:admin - CLI:
quorum teams update - MCP tool:
teams_update - Returns:
200 Team
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
handle |
path | string | yes | |
teamPath |
path | string | yes | The team’s slug or id |
name |
body | string | ||
slug |
body | string | ||
canPublishRoot |
body | boolean | ||
alias |
body | string |