← All tutorialsCalendar

Calendar scheduler

Agent reads your free/busy, proposes 3 slots, creates the event when the invitee picks one. Nylas under the hood.

Cost~$0.002 per scheduled meeting
Operations
calendar.readcalendar.createcalendar.updatecalendar.cancelscheduling.send_invite

Prerequisites

  • Nylas OAuth completed at /connected-apps.
  • calendar.* + scheduling.send_invite enabled on the agent.

Walkthrough

1. Read free/busy

calendar.read with a `time_min` / `time_max` window returns busy blocks. Diff against working hours to compute free slots.

bash# Pull one week of busy blocks.
curl -X POST https://www.upivia.com/v1/service-requests \
  -H "Authorization: Bearer $AGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service":"calendar",
    "operation":"read",
    "payload":{"calendar_id":"primary","time_min":"2026-06-01T00:00:00Z","time_max":"2026-06-08T00:00:00Z"}
  }'

2. Send the invite

scheduling.send_invite emails the picker UI; on confirmation, your webhook fires and you call calendar.create.

3. Reschedule / cancel

calendar.update (move) or calendar.cancel (kill) by event_id. Both write to /audit-logs so a refund-trail is intact.

Next steps

Audit every call at /audit-logs, watch spend at /usage, and tune budgets per service on the agent's page.

Create an account →