Push a calendar event
For partners that sync calendars themselves. Send each event as your calendar provider returned it — a Google Calendar event, a Microsoft Graph event or a Nylas event — or in the small shape, and get back the calendar event of that occurrence (source: calendar_sync), with the meeting_id of its meeting. We read the title, times, organizer, attendees with their response, and the meeting link (from the conferencing fields, or found in the location or description).
- Identity. An event is its iCal UID plus, for an occurrence of a recurring event, its original start. Push the same event again to update it; push it for every member who has it and they share one meeting and one bot. Send a stable iCalUID.
- Owner. member_email creates the member the first time, as POST /members does; member_id names an existing one.
- Recurring events. Push each occurrence (Google instances, Graph occurrences, Nylas instances). A series master, with the repeat rule itself, is refused.
- Cancelling. Push the event as your provider reports it cancelled (status: cancelled, including Google's { id, status } deletions, Graph's isCancelled or @removed, cancelled: true in the small shape). The meeting is cancelled once no member of the workspace still has the event; pushing it live again brings it back.
- Past events are kept, with their people, as past meetings. No bot is sent.
- No link. The meeting exists and effective_policy.recording.enabled_because is no_meeting_url until a push carries one. Only Google Meet, Zoom and Microsoft Teams links count; any other link (Webex, a dial-in page) reads as no link.
Whether a meeting is recorded follows the member's policy; change one meeting with PATCH /policies/{id}. A member who also connects the same calendar sees each meeting twice: use one calendar source per workspace.
Request
- Base URLhttps://www.happyscribe.com/api/v1
- AuthAPI key in header Authorization
Request body
Example request
{
"workspace_id": "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
"metadata": {
"gurusup_user_id": "usr_8812"
}
}Response
The calendar event of the occurrence, the same object as the meeting's calendar_event. Versions before 2026-10-12 return the meeting instead.
Example response
{
"id": "cev_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "calendar_event",
"meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"ical_uid": "7kq2abc@google.com",
"recurring": true,
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"attendees": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
"response": "accepted"
},
{
"name": "Laia Puig",
"email": "laia@gurusup.com",
"member_id": "mem_01k69x2m4q8r7t6v5w4x3y2z1a",
"response": "accepted"
},
{
"name": null,
"email": "ana@acme.com",
"member_id": null,
"response": "needs_action"
}
],
"source": "calendar_sync",
"metadata": {
"gurusup_event_id": "evt_311"
},
"cancelled_at": null,
"created_at": "2026-09-22T08:00:00Z",
"updated_at": "2026-09-28T17:12:03Z"
}Changes
No recorded changes to this operation across all 1 revision of this API.