Apple Calender CalDAV or HTTP Req Access?

Describe the problem/error/question:

I m trying to access the Apple / icalendar with CalDAV or Http Req. but i can not figure out the config.

What is the error message (if any)?

Could not connect with these setting

Please share your workflow

Standard CalDAV and Htttp Request Node

Information on your n8n setup

  • n8n version: 115.3
  • **Running n8n via Docker
  • **Operating system: Debian 12

Search the web and ask AI and found various settings which should work but non.
1 goto icloud.com and login
2 set a app password
3 use “https://caldav.icloud.com” as Server URL, Apple ID as Username and App Password you set befor (not your Apple ID Password

But i tried various things but could not found out how to access.
Anybody ever tried and manage to connect?
Thanx

i got it working with my apple calendar
i made a markdown with all the steps

1 Like

hey thank for that! but sorry i have to ask…where to run this scripts?
When i do it in my macos terminal with: python3 script1.py i m getting an error:
mymac@MBM2-2 test % python3 script1.py
Traceback (most recent call last):
File “/Users/mymac/test/script1.py”, line 1, in
import requests
ModuleNotFoundError: No module named ‘requests’
mymac@MBM2-2 test %

ah ok managed it!
the “requests” is a package and it was missing.
Just to mention that "Password: " is the app password you set, not your apple id password for your apple account!

1 Like

i will change that :call_me_hand:t2:

i cant manage it in n8n to get it work.
i build up the chain of 3 nodes:

  • Edit Field (with 4 Fields: Start, End, Eventname, Description. What to enter in the value fields for testing?)
  • HTTP Req (with Apple Calender Credentials.
    URL: https://caldav.icloud.com/
    Basic Auth with my apple email. Password = Set App Password
    Nothing else set here. no Query, no Header, no Body
  • Code Node (i dont come to this point)

i wonder where i have to set my calender. i have three in my account and they where all listed with the script.
One calender is like: /10xxxxxxxx/calendars/0xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/
I bet i have to enter this link somewhere?
With the URL? or Body?
I tried a few combinations and i allways get Error 400 when i use this as URL:
https://caldav.icloud.com/10xxxxxxxx/calendars/0xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/
When i use just https://caldav.icloud.com/ i m getthing a 403

i think the 400 is the right way, just the parameters to send with from node one?

Thank for your help

i have a code node with javascript.
all the info you gathered can be set there.

Javascripot_function.js

test info can be
Start → start date
end - End date
Eventname
Description,

this data i gather with n8n to make an calendar item

Critical: Use format YYYYMMDDTHHmmssZ (no colons)

Correct:   20251110T100000Z
Wrong:     20251110T10:00:00Z

i cant get it to work this way and how you explained. its not clearly explained or i m dumb…or both

Ok i think i made it finally work in a simple way!
Use this json for the node and replace the fields in the code with your data.
Its the normal CalDAV Community Node you need to have installed.

Set the field “Calendar Name or ID” to “Expression” and enter the path “/YOURUSERID/calendars/CALENDERID/”

Dont forget the backslashes!

Credentials:
Server URL: “https://caldav.icloud.com”
Username: “YourAppleIdEmail”
Password: “TheAppPasswordYouCreatedAt:https://account.apple.com/account/manage”

There you create any name and it will give you a password like: wxyz-wxyz-wxyz-wxyz
Dont use the name you set there as username! Its just a description here.
Use your apple id email instead in n8n!
When you have entered your credentials for CalDAV, dont wonder its still red with “Couldn’t connect with these settings”.
When you execute the node with the right parameters, it will work.
Be sure there is a entry in your calender at the day you entered.
If there is no date, it will give an error.

you could set a code node in front for testing like:

return [
{ json: { abfrageDatum: ‘2026-01-29 00:00:00’ } },
{ json: { abfrageDatum: ‘2026-01-30 00:00:00’ } },
{ json: { abfrageDatum: ‘2026-01-31 00:00:00’ } }
];

and set the CalDAV Node to “Continue on error” and it will not fail and give you all exsisting entrys in this date range.
The only need to figure out is your right calendar ID and set the path right.
Finding these pathes and Calendar IDs were the biggest trouble for me.
It may work with the pyton script from “JeroenAV” in any way…
It gave me 4 IDs even when i only had 3 calendars and the longest one was the right one.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.