API: contacts
Your private address book.
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.
contacts create
Section titled “contacts create”Add a contact: POST /v1/me/contacts
Adds someone by hand; the first address is the primary. An address you already have joins that contact (answered 200 instead of 201) rather than making a second. An address that asked Quorum to forget it (Q71) is refused with 409 forgotten.
- Needs:
contacts:write(not for credentials limited to some orgs) - CLI:
quorum contacts create - MCP tool:
contacts_create - Returns:
200 Contact
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
name |
body | string | ||
notes |
body | string | ||
emails |
body | string[] | yes |
contacts delete
Section titled “contacts delete”Delete a contact: DELETE /v1/me/contacts/{contactId}
Removes the contact from your book. It doesn’t touch bookings, polls or requests, and doesn’t stop Quorum from capturing the person again the next time you deal with them. A contact that mirrors a provider’s address book answers 409 read_only: remove it there, or turn off the import.
- Needs:
contacts:write(not for credentials limited to some orgs) - CLI:
quorum contacts delete - MCP tool:
contacts_delete - Returns: no body
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
contactId |
path | string (uuid) | yes |
contacts export
Section titled “contacts export”Export your contacts: GET /v1/me/contacts/export
Every contact as a CSV file (Name, Email, Other emails, Notes) or a vCard 3.0 file. Cells that a spreadsheet would read as a formula are prefixed with an apostrophe.
- Needs:
contacts:read(not for credentials limited to some orgs) - CLI:
quorum contacts export - MCP tool: not offered over MCP
- Returns:
200
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
format |
query | “csv” or “vcard” |
contacts get
Section titled “contacts get”Read a contact and your history with them: GET /v1/me/contacts/{contactId}
- Needs:
contacts:read(not for credentials limited to some orgs) - CLI:
quorum contacts get - MCP tool:
contacts_get - Returns:
200 ContactDetail
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
contactId |
path | string (uuid) | yes |
contacts import
Section titled “contacts import”Import contacts from a vCard or CSV file: POST /v1/me/contacts/import
Send the file’s text. A vCard file (3.0 or 4.0) needs no mapping. A CSV file’s first row is its header; leave mapping out to use a guess from the header names (returned, so a form can show and correct it). With dryRun nothing is written: you get the same counts and a preview of the first rows. Duplicates (by address, within the file and against your contacts) join one contact; addresses that asked to be forgotten are skipped. Up to 2000 rows per request.
- Needs:
contacts:write(not for credentials limited to some orgs) - CLI:
quorum contacts import - MCP tool: not offered over MCP
- Returns:
200 ContactImportResult
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
format |
body | “vcard” or “csv” | yes | |
text |
body | string | yes | |
mapping |
body | object | ||
dryRun |
body | boolean |
contacts list
Section titled “contacts list”List your contacts: GET /v1/me/contacts
Your private address book (Q108): people captured from your bookings, polls, requests and invitations, entries you added or imported, and the address books you chose to mirror. Nobody else can read it, org admins included. q matches names and addresses.
- Needs:
contacts:read(not for credentials limited to some orgs) - CLI:
quorum contacts list - MCP tool:
contacts_list - Returns:
200 ContactList - Paging:
limitandoffset
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
q |
query | string | ||
limit |
query | integer | ||
offset |
query | integer | ||
order |
query | “name” or “recent” | ||
initiated |
query | “true” or “false” | ||
source |
query | “booking” or “poll_response” or “availability_request” or “poll_invitation” or “accepted_request” or “manual” or “vcard” or “csv” or “google” or “microsoft” |
contacts update
Section titled “contacts update”Change a contact: PATCH /v1/me/contacts/{contactId}
Replaces the name, notes and/or addresses you send (the first address is the primary). A contact that mirrors a provider’s address book accepts only notes; the rest answers 409 read_only. An address another contact of yours has answers 409 email_in_use; one that asked to be forgotten, 409 forgotten.
- Needs:
contacts:write(not for credentials limited to some orgs) - CLI:
quorum contacts update - MCP tool:
contacts_update - Returns:
200 Contact
| Argument | In | Type | Required | Description |
|---|---|---|---|---|
contactId |
path | string (uuid) | yes | |
name |
body | string | ||
notes |
body | string | ||
emails |
body | string[] |