Skip to content

CardDAV

16 endpoints at a glance
MethodPathSummary
GET/carddav/accountsList Accounts
POST/carddav/accountsCreate Account
DELETE/carddav/accounts/{account_id}Delete Account
PUT/carddav/accounts/{account_id}Update Account
GET/carddav/accounts/{account_id}/addressbooksList Addressbooks For Account
PUT/carddav/accounts/{account_id}/addressbooksSave Addressbooks For Account
GET/carddav/accounts/{account_id}/addressbooks/availableList Available Addressbooks For Account
POST/carddav/accounts/{account_id}/set-defaultSet Default Account
GET/carddav/addressbooksList Addressbooks
PUT/carddav/addressbooksSave Addressbooks
GET/carddav/addressbooks/availableList Available Addressbooks
DELETE/carddav/connectionDelete Connection
GET/carddav/connectionGet Connection
PUT/carddav/connectionSave Connection
POST/carddav/syncSync Now
POST/carddav/testTest Connection

carddav


Test Connection

POST
/carddav/test

Validate credentials and return discovered addressbooks. Doesn't save.

Parameters

Header Parameters

authorization

Request Body

application/json
JSON
{
  
"server_url": "string",
  
"username": "string",
  
"password": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Body

Samples


List Accounts

GET
/carddav/accounts

All of the user's CardDAV accounts, default first.

Parameters

Header Parameters

authorization

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers

Samples


Create Account

POST
/carddav/accounts

Add a NEW CardDAV account. Validates credentials against the server.

Doesn't pick addressbooks — that's a follow-up PUT to
/accounts/{id}/addressbooks.

Parameters

Header Parameters

authorization

Request Body

application/json
JSON
{
  
"server_url": "string",
  
"username": "string",
  
"password": "string",
  
"label": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Body

Samples


Update Account

PUT
/carddav/accounts/{account_id}

Update one account's credentials (validated against the server).

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Request Body

application/json
JSON
{
  
"server_url": "string",
  
"username": "string",
  
"password": "string",
  
"label": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value
Body

Samples


Delete Account

DELETE
/carddav/accounts/{account_id}

Remove one account. Cascades its addressbooks (+ contacts, decision (1)).

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Query Parameters

delete_contacts
Type
boolean
Default
true

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value

Samples


Set Default Account

POST
/carddav/accounts/{account_id}/set-default

Make this account the default (the one legacy endpoints act on).

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value

Samples


List Available Addressbooks For Account

GET
/carddav/accounts/{account_id}/addressbooks/available

Re-discover one account's addressbooks from its server.

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value

Samples


List Addressbooks For Account

GET
/carddav/accounts/{account_id}/addressbooks

The selected addressbooks belonging to one account.

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value

Samples


Save Addressbooks For Account

PUT
/carddav/accounts/{account_id}/addressbooks

Set one account's enabled addressbook set (removed books cascade).

Parameters

Header Parameters

authorization

Path Parameters

account_id*
Type
string
Required

Request Body

application/json
JSON
{
  
"urls": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value
Body

Samples


Get Connection

GET
/carddav/connection

LEGACY: the default account's connection state (sans password).

Parameters

Header Parameters

authorization

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers

Samples


Save Connection

PUT
/carddav/connection

LEGACY: save credentials — updates the default account, or creates
the first one. Validates them against the server first.

Doesn't pick addressbooks — that's a follow-up PUT to /addressbooks.

Parameters

Header Parameters

authorization

Request Body

application/json
JSON
{
  
"server_url": "string",
  
"username": "string",
  
"password": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Body

Samples


Delete Connection

DELETE
/carddav/connection

LEGACY: disconnect the user — removes ALL accounts and books.

By default cascades contacts (decision (1)).

Parameters

Header Parameters

authorization

Query Parameters

delete_contacts
Type
boolean
Default
true

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Variables
Key
Value

Samples


List Available Addressbooks

GET
/carddav/addressbooks/available

LEGACY: re-discover from the DEFAULT account's server.

Used by the settings UI when the user wants to refresh the picker
after adding a book server-side.

Parameters

Header Parameters

authorization

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers

Samples


List Addressbooks

GET
/carddav/addressbooks

All selected addressbooks across every account.

Parameters

Header Parameters

authorization

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers

Samples


Save Addressbooks

PUT
/carddav/addressbooks

LEGACY: set the DEFAULT account's enabled addressbook set.

Decision (1): removed books cascade. Re-discovers from the server so
we know each book's display name and description without trusting
client input.

Parameters

Header Parameters

authorization

Request Body

application/json
JSON
{
  
"urls": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Body

Samples


Sync Now

POST
/carddav/sync

Trigger a sync. If addressbook_id is set, only that book.

Parameters

Header Parameters

authorization

Request Body

application/json
JSON
{
  
"addressbook_id": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Headers
Body

Samples


Kancil — one workspace for contacts, work and money.