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.