Create Event
Create a calendar event with attendees, video meeting, and invite notifications
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
{
"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
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
{
"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"
}
{
"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. |