---
title: "Connect a CalDAV calendar"
method: POST
path: "/v1/calendars/caldav/connect"
tags: ["Calendars"]
---

# Connect a CalDAV calendar

`POST /v1/calendars/caldav/connect`

## Request

- Base URL: `https://api.astrocal.dev`
- URL: `https://api.astrocal.dev/v1/calendars/caldav/connect`
- Auth: HTTP bearer

Connects a CalDAV calendar (Apple iCloud, Fastmail, Nextcloud, or custom) using password-based authentication. Verifies credentials before storing.

## Request body

- object
  - `member_id` string, uuid, required: The org member whose calendar is being connected
  - `preset` 'apple' | 'fastmail' | 'nextcloud' | 'custom', required
  - `server_url` string, uri
  - `username` string, required
  - `password` string, required

## Response `201`

CalDAV calendar connected

- object
  - `id` string, uuid, required
  - `provider` string, required
  - `calendar_id` string, required
  - `account_email` string, required
  - `member_id` string, uuid, required
  - `member_name` string, nullable, required: The owning member's email address, or null when unknown
  - `connected_at` string, required
  - `status` 'active' | 'needs_reauth', required
  - `last_sync_at` string, nullable, required
  - `sync_status` 'connected' | 'expired' | 'error', required
  - `sync_error` string, nullable, required
  - `upcoming_booking_count` integer, required
  - `provider_metadata` object, nullable
    - `preset` string, required
    - `server_url` string, required
    - `auth_method` string, required
    - `calendar_url` string

## Other responses

- `400`: Invalid credentials, unreachable server, or insecure URL
- `401`: Unauthorized

---

[API](https://skmtc.dev/astrocal/apis/astrocal-api.md) · [All operations](https://skmtc.dev/astrocal/apis/astrocal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/astrocal/apis/astrocal-api/revisions/3b953e19a348?raw)
