Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Tymeslot/tymeslot/llms.txt

Use this file to discover all available pages before exploring further.

Tymeslot supports CalDAV, the open standard for calendar sync, which means you can connect almost any self-hosted or third-party calendar server without registering an OAuth app or touching the Google Cloud Console or Azure Portal. Users provide their CalDAV server URL, username, and password directly in the Tymeslot dashboard — no admin-level setup required beyond deciding whether to allow connections to private network addresses.

How CalDAV differs from Google and Microsoft

Google CalendarOutlook CalendarCalDAV
Setup required by adminOAuth 2.0 app in Google CloudAzure AD app registrationNone (optional: ALLOW_PRIVATE_IPS_FOR_CALENDAR)
User credentialsOAuth — Google accountOAuth — Microsoft accountServer URL + username + password
Real-time pushGoogle push channels (with WEBHOOK_BASE_URL)Graph subscriptions (with WEBHOOK_BASE_URL)Not supported — polling only
Default sync interval15-minute fallback polling15-minute fallback pollingPeriodic polling (15–60 min)
CalDAV does not support server-initiated push webhooks. Tymeslot polls CalDAV calendars periodically regardless of whether WEBHOOK_BASE_URL is set. The polling frequency is determined automatically by the capabilities of your CalDAV server — see Polling interval below for details. This is fully functional — availability and conflict checks remain accurate within the polling window.

Supported CalDAV servers

ServerNotes
NextcloudTypical CalDAV URL: https://nextcloud.example.com/remote.php/dav/calendars/username/
RadicaleTypically http://localhost:5232 or the equivalent on your host; see private IP note below
ZimbraStandard CalDAV endpoint — check your Zimbra admin for the exact path
BaikalLightweight PHP CalDAV server; configure URL from the Baikal admin panel
Apple iCloudFixed URL https://caldav.icloud.com; requires an app-specific password
mailbox.orgCalDAV available at https://caldav.mailbox.org
Any server that speaks the CalDAV (RFC 4791) protocol should work, including private or self-hosted instances not listed above.

Server-specific notes

Apple iCloud

iCloud requires an app-specific password — it will reject your regular Apple ID password for CalDAV connections. Generate one at appleid.apple.com under Sign-In and Security → App-Specific Passwords. Use your Apple ID email as the username and the generated password (format: xxxx-xxxx-xxxx-xxxx) as the password when connecting in Tymeslot. The CalDAV server URL is always https://caldav.icloud.com.

Nextcloud

The CalDAV endpoint follows this pattern:
https://nextcloud.example.com/remote.php/dav/calendars/<username>/
Replace nextcloud.example.com with your Nextcloud hostname and <username> with the Nextcloud username. You can also find the exact URL in Nextcloud under Settings → Personal → Calendar → Copy primary CalDAV address.

Radicale

Radicale typically listens on http://localhost:5232 (or a configured host/port). If your Radicale instance is on the same private network as your Tymeslot container, you will need to enable private IP access — see the note below. The CalDAV URL format for Radicale is:
http://<host>:<port>/<username>/

Allowing private network CalDAV servers

In production, Tymeslot blocks outbound calendar requests to private, loopback, and link-local IP addresses (e.g. localhost, 10.0.0.0/8, 192.168.0.0/16) as SSRF protection. If your CalDAV server (Radicale, a local Nextcloud instance, Baikal, or similar) resolves to one of these addresses, connections will fail unless you explicitly permit them.Add this to your .env to allow private network CalDAV connections:
ALLOW_PRIVATE_IPS_FOR_CALENDAR=true
This setting applies to calendar integration and self-hosted video provider (e.g. MiroTalk) outbound requests only. Outbound webhook delivery has a separate flag (ALLOW_PRIVATE_IPS_FOR_WEBHOOKS) and is not affected by this setting.

Polling interval

CalDAV servers do not support push notifications, so Tymeslot polls on a schedule. The polling frequency is determined automatically based on what your CalDAV server supports:
Sync tierHow it worksInterval
Tier 1 — sync-token deltaServer supports sync-token; only changed events are fetchedEvery 15 minutes
Tier 2 — CTag checkServer supports getctag; Tymeslot checks the collection tag and fetches only when it changesEvery 30 minutes
Tier 3 — full fetchServer supports neither; Tymeslot re-fetches all events on every cycleEvery 60 minutes
Tymeslot detects which tier your server supports automatically on the first sync and adjusts its schedule accordingly. All conflict checks at the moment of booking use the most recent cached state, so double-bookings are prevented even between polling cycles.

Connecting CalDAV from the dashboard

No server-side configuration is needed beyond the optional ALLOW_PRIVATE_IPS_FOR_CALENDAR flag. Users connect their CalDAV calendar directly from Dashboard → Integrations → Calendar by providing:
  1. Server URL — the base CalDAV URL for their server (examples above)
  2. Username — typically the account username or email address
  3. Password — the account password, or an app-specific password for iCloud
Tymeslot validates the connection immediately and shows an error if the URL is unreachable, the credentials are wrong, or the server does not speak CalDAV. Credentials are encrypted at rest with AES-256-GCM.

Build docs developers (and LLMs) love