Navigation

Create Event

Create a calendar event with attendees, video meeting, and invite notifications

POST /public/calendar/createEvent

Creates a calendar event with full attendee management. For video meetings, Zyntro auto-provisions a Google Meet space (if the member has Google Meet connected). Sends iCal invite emails to all attendees with reschedule and cancel links. Event times are converted to UTC for storage.

Requires a valid api_key in the JSON request body

Parameters

Name In Type Required Description
api_key body string Yes Your Zyntro API key
org_id body string Yes Your organization UUID
member_id body string Yes The member UUID (event organizer)
contact_id body string Yes The primary contact UUID for the event
event_data body object Yes Event details object. See Event Data Fields below.

Event Data Fields (event_data object)

Field Type Required Default Description
calendar_id string — The UUID of the calendar to create the event on
event_start_time string — Start time in YYYY-MM-DD HH:MM:SS format, in the event_timezone
event_end_time string — End time in YYYY-MM-DD HH:MM:SS format, in the event_timezone
event_timezone string Member's timezone IANA timezone for the start/end times. Defaults to the organizer member's timezone.
event_title string event_type value Event title displayed in calendar and invites
event_type string New Calendar Event Event category label
event_description string — Event description or notes
location_type string in_person in_person or video. Video events auto-provision a Google Meet space.
location_details string — Physical address or location notes for in-person events
event_meeting_url string — External meeting URL (e.g., Zoom link). If omitted for video events, Zyntro creates a Google Meet automatically.
event_meeting_type string — Meeting provider identifier. Set to zyntro for auto-generated meeting URLs.
event_is_blocking integer 1 1 = blocks the time slot in availability checks. 0 = non-blocking (does not affect free/busy).
event_status string confirmed Initial event status
event_send_invites integer 1 1 = send iCal invite emails to all attendees. 0 = skip invites.
event_rrule string — iCal recurrence rule (RRULE) for recurring events
schedule_id string — Schedule UUID if the event was booked from a schedule
form_id string — Form UUID if the event was triggered by a form submission
attendee_data array [] Array of attendee objects. See Attendee Fields below.

Attendee Fields (attendee_data array items)

Field Type Required Default Description
contact_id string — Contact UUID (if the attendee is a known contact)
contact_email string — Attendee email address
contact_fname string — Attendee first name
contact_lname string — Attendee last name
contact_timezone string — Attendee's IANA timezone (for timezone-aware invite emails)
contact_role string participant Attendee role: participant or host

Request Body

Content-Type: application/json

Example

json
{
    "org_id": "YOUR_ORG_ID",
    "api_key": "YOUR_API_KEY",
    "member_id": "YOUR_MEMBER_ID",
    "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "event_data": {
        "calendar_id": "3d21426f-9042-40d9-a0b2-94037f551d51",
        "event_title": "Discovery Call",
        "attendee_data": [
            {
                "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                "contact_role": "participant",
                "contact_email": "[email protected]",
                "contact_fname": "Jane",
                "contact_lname": "Smith",
                "contact_timezone": "America/New_York"
            }
        ],
        "location_type": "video",
        "event_end_time": "2026-04-07 10:30:00",
        "event_timezone": "America/New_York",
        "event_start_time": "2026-04-07 10:00:00",
        "event_description": "Initial discovery call to discuss requirements."
    }
}

Code Samples

bash
curl -X POST https://app.zyntrohq.com/public/calendar/createEvent \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "org_id": "YOUR_ORG_ID",
    "member_id": "YOUR_MEMBER_ID",
    "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "event_data": {
      "calendar_id": "3d21426f-9042-40d9-a0b2-94037f551d51",
      "event_title": "Discovery Call",
      "event_start_time": "2026-04-07 10:00:00",
      "event_end_time": "2026-04-07 10:30:00",
      "event_timezone": "America/New_York",
      "location_type": "video",
      "attendee_data": [{
        "contact_email": "[email protected]",
        "contact_fname": "Jane",
        "contact_lname": "Smith",
        "contact_timezone": "America/New_York",
        "contact_role": "participant"
      }]
    }
  }'

Response

200 Event created with video meeting
json
{
    "data": {
        "event_id": "e7f8a9b0-c1d2-3456-e7f8-a9b0c1d23456",
        "attendees": [
            {
                "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                "contact_email": "[email protected]",
                "contact_fname": "Jane",
                "contact_lname": "Smith"
            }
        ],
        "meeting_data": {
            "cancel_url": "https://app.zyntrohq.com/public/calendar/cancel/32/e7f8a9b0-c1d2-3456-e7f8-a9b0c1d23456",
            "meeting_id": "m1n2o3p4-q5r6-7890-stuv-wx1234567890",
            "meeting_url": "https://meet.google.com/abc-defg-hij",
            "meeting_type": "google_meet",
            "reschedule_url": "https://app.zyntrohq.com/public/calendar/reschedule/32/e7f8a9b0-c1d2-3456-e7f8-a9b0c1d23456"
        }
    },
    "status": "success"
}
200 Error
json
{
    "data": [
        "Missing event start time"
    ],
    "status": "error"
}

Info: For video events, the response includes meeting_data with the Google Meet URL, meeting ID, and reschedule/cancel URLs. The member must have Google Meet connected in Settings > Integrations for auto-provisioning to work. If not connected, an error is returned.

Tip: Event times in the request should be in the event_timezone. Zyntro converts them to UTC for storage. The iCal invites sent to attendees are converted back to the event's original timezone. Each attendee's notification email shows the time in their own timezone if contact_timezone is provided.

Errors

Code Message Resolution
MISSING_API_KEY Missing service instance
The api_key is missing.
Include your API key.
INVALID_API_KEY Invalid API Key
No active user matches.
Verify your key.
MISSING_FIELDS Missing organization/member/contact ID or event data
Required fields are missing.
Include all required fields.
MISSING_EVENT_FIELDS Missing calendar ID / event start time / event end time
Required event_data fields are missing.
Include calendar_id, event_start_time, and event_end_time.
MEMBER_NOT_FOUND Member not found
The member_id does not exist.
Use a valid member ID from Fetch Members.
NO_MEET_INTEGRATION No Google Meet integration found for this member
Video event requested but member has no Google Meet connected.
Connect Google Meet in Settings > Integrations, or set location_type to in_person.
INSERT_FAILED Error inserting event
Database insert failed.
Check the error details and retry.

Was this article helpful?

NotebookLM Overviews