Skip to content

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.

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

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

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”

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

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

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: limit and offset
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”

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[]