Skip to content

Calendar

Calendar routes create Google Calendar events, sync meeting transcripts, and check availability. Requires the Google Calendar connector to be configured with a service account.

Routes

POST /api/calendar/events

Create a Google Calendar event and store it in the CRM.

Auth: Required
Request body:

FieldTypeRequiredDescription
titlestringyesEvent title
startstringyesISO 8601 datetime (e.g. 2026-05-15T10:00:00)
endstringyes (or duration_minutes)ISO 8601 end time
duration_minutesnumbernoAlternative to end. Calculated from start.
descriptionstringnoEvent description
locationstringnoPhysical location
timezonestringnoDefault: America/New_York
attendeesarrayno[{ "email": "...", "name": "..." }]
meetbooleannotrue to attach a Google Meet link
candidate_idstringnoLink to CRM candidate
company_idstringnoLink to CRM company

Response: 201 Created

json
{
  "ok": true,
  "data": {
    "event_id": "google_event_id_abc123",
    "event_url": "https://calendar.google.com/...",
    "meet_url": "https://meet.google.com/abc-defg-hij",
    "meet_space_id": "conferences/abc123",
    "calendar_id": "cal_a1b2c3d4"
  }
}

POST /api/calendar/transcripts/sync

Poll Google Meet API for transcripts from recent SM-hosted meetings and save them as CRM activities.

Auth: Required

Google Workspace requirement

Requires Google Workspace Business Standard or higher with meeting transcripts enabled. The Google service account must have meetings.space.readonly scope granted via Google Admin Console Domain-wide delegation.

Body:

json
{
  "hours_back": 48,
  "dry_run": false
}
FieldTypeDescription
hours_backnumberHow far back to look. Default: 48
dry_runbooleanIf true, logs what would be synced without writing. Default: false

Response:

json
{
  "ok": true,
  "data": {
    "synced": 3,
    "skipped": 1,
    "errors": []
  }
}

PATCH /api/calendar/events/:id

Update a calendar event (in both Google Calendar and CRM).

Auth: Required
Path params: id — CRM calendar event ID (cal_...)
Body: Any subset of title, start, end, description, location, attendees.


GET /api/calendar/availability

Check Paula's calendar availability for booking slots.

Auth: Required (also called by booking pages with a token)
Query params:

ParamTypeDescription
date_fromstringStart date (ISO)
date_tostringEnd date (ISO)
duration_minutesnumberMeeting duration. Default: 30
timezonestringDefault: America/New_York

Response:

json
{
  "ok": true,
  "data": {
    "slots": [
      { "start": "2026-05-15T10:00:00-04:00", "end": "2026-05-15T10:30:00-04:00" },
      { "start": "2026-05-15T14:00:00-04:00", "end": "2026-05-15T14:30:00-04:00" }
    ]
  }
}

Sprint Mode LLC — Internal Platform Documentation