curl --request GET \
--url https://api.example.com/calendar/sync{
"events": {
"calendar_id": "<string>",
"events": [
{}
]
},
"sync_token": {
"calendar_id": "<string>"
},
"sync_error": {
"calendar_id": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true
},
"complete": {
"total_events": 123,
"calendars_synced": 123,
"last_sync_at": "<string>"
}
}Sync calendar events from Google Calendar using Server-Sent Events (SSE)
curl --request GET \
--url https://api.example.com/calendar/sync{
"events": {
"calendar_id": "<string>",
"events": [
{}
]
},
"sync_token": {
"calendar_id": "<string>"
},
"sync_error": {
"calendar_id": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true
},
"complete": {
"total_events": 123,
"calendars_synced": 123,
"last_sync_at": "<string>"
}
}GET /calendar/sync
cal_abc123,cal_def456,cal_ghi789Content-Type is text/event-stream.
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
X-Accel-Buffering: no
Show Event data
curl -X GET "https://api.chronoscalendar.com/calendar/sync?calendar_ids=cal_abc123,cal_def456" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: text/event-stream"
const eventSource = new EventSource(
'https://api.chronoscalendar.com/calendar/sync?calendar_ids=cal_abc123,cal_def456',
{
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
}
);
eventSource.addEventListener('events', (e) => {
const data = JSON.parse(e.data);
console.log('Received events:', data.events.length);
});
eventSource.addEventListener('sync_error', (e) => {
const data = JSON.parse(e.data);
console.error('Sync error:', data.message);
});
eventSource.addEventListener('complete', (e) => {
const data = JSON.parse(e.data);
console.log('Sync complete:', data.total_events, 'events');
eventSource.close();
});
event: events
data: {"calendar_id":"cal_abc123","events":[{"id":"evt_1","summary":"Team Meeting"}]}
event: events
data: {"calendar_id":"cal_abc123","events":[{"id":"evt_2","summary":"Lunch Break"}]}
event: sync_token
data: {"calendar_id":"cal_abc123"}
event: events
data: {"calendar_id":"cal_def456","events":[{"id":"evt_3","summary":"Project Review"}]}
event: sync_token
data: {"calendar_id":"cal_def456"}
event: complete
data: {"total_events":3,"calendars_synced":2,"last_sync_at":"2026-03-04T10:30:00Z"}
calendar_ids parameter is missing or invalid{"detail": "Sync rate limit exceeded. Please wait before syncing again."}
event: sync_error
data: {"code":"408","message":"Sync timed out"}
WEBHOOK_BASE_URL is configured).
backend/app/routers/calendar.py:148-223 (SSE endpoint)backend/app/calendar/sync.py:219-244 (sync logic)backend/app/calendar/gcal.py:184-231 (Google Calendar API)