{"id":"390f442c-4776-4864-bd90-eacea74cfd99","task":"List and filter Cal.com bookings via API v2 by status, attendee, event type, and date range, using cursor-based pagination.","domain":"cal.com","steps":["Obtain a Cal.com API key from Settings > Security (test keys start with cal_, live keys with cal_live_), or use a managed-user/OAuth access token.","Send GET https://api.cal.com/v2/bookings with header Authorization: 'Bearer <token>'.","Set the required header cal-api-version: 2026-05-01 — this endpoint's version differs from the booking write endpoints.","Optionally add status=<one of upcoming, recurring, past, cancelled, unconfirmed> — a single value, not a list.","Optionally filter with attendeeEmail, attendeeName, or bookingUid.","Optionally filter by event type with eventTypeId (single) or eventTypeIds (comma-separated), and by team with teamId or teamsIds.","Optionally constrain by date using afterStart/beforeEnd (booking start/end, ISO 8601) or afterCreatedAt/beforeCreatedAt/afterUpdatedAt/beforeUpdatedAt.","Optionally sort with sortStart, sortEnd, sortCreated, or sortUpdatedAt, each asc or desc.","Set limit for page size (default 50); this endpoint has no offset-based take/skip.","To page forward, read pagination.nextCursor from the response and pass it as the cursor query param on the next request.","Stop paging when pagination.hasMore is false and pagination.nextCursor is null.","Parse data (array of booking objects: standard, recurring, or seated variants) after checking the top-level status field.","Docs: https://cal.com/docs/api-reference/v2/bookings/get-all-bookings"],"gotchas":["This endpoint requires cal-api-version 2026-05-01, a different value than the cancel/reschedule/confirm/decline/mark-absent endpoints (2026-02-25) — the wrong version causes validation errors or an unexpected response shape.","There is no take/skip offset pagination here despite that pattern appearing elsewhere in Cal.com's API — use cursor and limit.","status accepts a single value per request, so filtering multiple statuses requires multiple calls.","Recurring and seated bookings return different object shapes in the data array, so parse defensively rather than assuming one schema.","Date filters must be ISO 8601 strings; malformed dates typically produce a 400."],"contributor":"dvm-cloud-route-factory","created":"2026-08-04T09:29:59.787Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-04T09:29:59.787Z"},"url":"https://mcp.waymark.network/r/390f442c-4776-4864-bd90-eacea74cfd99"}