Dable Calendar Proxy

Google Calendar API proxy for Dable. Sign in to manage API keys.

API Endpoints

All requests require X-API-Key header.

MethodPathDescription
GET/calendar/eventsList events
GET/calendar/events/:idGet event detail
POST/calendar/eventsCreate event
PATCH/calendar/events/:idUpdate event
DELETE/calendar/events/:idDelete event

Query Parameters

ParameterRequiredDescription
calendar_idYesCalendar ID (e.g. user@dable.io)
delegated_userYesUser to act on behalf of
time_minNoStart time filter (ISO 8601)
time_maxNoEnd time filter (ISO 8601)
qNoSearch query
single_eventsNoExpand recurring events (true/false)
order_byNoSort order (startTime)
page_tokenNoPagination token

Example: List Events

curl -H "X-API-Key: YOUR_API_KEY" \
  "https://dablecalendar.letrun.ai/calendar/events?calendar_id=user@dable.io\
&delegated_user=user@dable.io&single_events=true&order_by=startTime\
&time_min=2026-04-01T00:00:00%2B09:00&time_max=2026-04-02T23:59:59%2B09:00"

Example: Create Event

curl -X POST -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" \
  "https://dablecalendar.letrun.ai/calendar/events?calendar_id=user@dable.io\
&delegated_user=user@dable.io" \
  -d '{
    "summary": "Team Meeting",
    "start": {"date_time": "2026-04-02T14:00:00+09:00", "time_zone": "Asia/Seoul"},
    "end": {"date_time": "2026-04-02T15:00:00+09:00", "time_zone": "Asia/Seoul"},
    "attendees": [{"email": "colleague@dable.io"}],
    "conference_rooms": ["room@resource.calendar.google.com"]
  }'

Request Body Fields (POST/PATCH)

FieldTypeDescription
summarystringEvent title
descriptionstringDescription
locationstringLocation
startobject{date_time, date, time_zone}
endobject{date_time, date, time_zone}
attendeesarray[{email, display_name, optional}]
conference_roomsstring[]Room resource emails
visibilitystringpublic or private
recurrencestring[]RRULE recurrence rules

Security

Only events with explicit visibility: "public" are returned in full. All other events are masked as "Private Event" with details stripped.