page, max 100 per page — different from the 0-indexed offset used by /calls), plus filters by period ('upcoming' | 'past' | 'all'), agentId, calendarId, and free-text search across phone/email/title. Appointments only appear if at least one calendar is connected and enabled.curl --location '/calendars/appointments?page=&limit=&period=&agentId=&calendarId=&search=&from=&to='{
"appointments": [
{
"id": "string",
"title": "string",
"description": "string",
"startTime": "2019-08-24T14:15:22.123Z",
"endTime": "2019-08-24T14:15:22.123Z",
"durationMinutes": 0,
"guestPhone": "string",
"guestEmail": "string",
"guestName": "string",
"sourceType": "INBOUND_CALL",
"callId": "string",
"isIncoming": true,
"calendarProvider": "GOOGLE",
"externalEventId": "string",
"externalEventUrl": "string",
"callDetailsUrl": "string",
"agent": {
"id": "string",
"name": "string",
"avatar": "string"
},
"calendar": {
"id": "string",
"name": "string",
"provider": "GOOGLE"
},
"timezone": "string",
"createdAt": "2019-08-24T14:15:22.123Z"
}
],
"total": 0,
"page": 0,
"limit": 0,
"totalPages": 0
}