API Documentation

ScheduCal enables scheduling software developers to send, update, and cancel real calendar invitations instead of emails with ICS files.

Overview

Endpoint and API Authentication

When you register, you are provided with an API key and secret as well as the REST API endpoint. The endpoint and key will never change. The API secret can be regenerated upon request.

Dates and Time Zones

Dates are required to be in full ISO 8601 UTC format. Both dates and times are required. Seconds may be supplied as :00 and are required. (e.g. "YYYY-MM-DDThh:mm:ss")

Azure limits the time zone identifiers that can be used for events. Only the time zones in this list are supported.

Names and Email Addresses

Names and email addresses are optional when an event is initially created. For example, a webinar event or a session at a conference can be created and then attendees can be added later when they register.

API Calls

Create Event

Creates a new calendar event and returns a unique ID for that event. Use this ID to modify, cancel, or send invitations for the event.

POST /api/v1/events
Request Body
{
  "apiKey": "<api key>",
  "apiSecret": "<api secret>",
  "eventSubject": "string (e.g. 'Haircut'), Email subject of calendar invitation",
  "eventBody": "string (e.g. '30-minute haircut with Casey'), Email body of calendar invitation",
  "eventStart": "dateTime (e.g. '2024-01-09T13:00:00')",
  "eventTimeZone": "time zone (e.g. 'America/Los_Angeles')",
  "eventEnd": "time (e.g. '2024-01-09T13:15:00')",
  "eventLocation": "string (optional) (e.g. 'The Salon')",
  "name": "string (optional) (e.g. 'First Last')",
  "address": "string (optional) (e.g. 'email@domain.com')"
}

Update Event

Updates an existing calendar event and sends the update to all invitees.

PUT /api/v1/events/{eventId}
Request Body
{
  "apiKey": "<api key>",
  "apiSecret": "<api secret>",
  "eventSubject": "string (optional) (e.g. 'Updated subject')",
  "eventBody": "string (optional) (e.g. 'Updated body')",
  "eventStart": "dateTime (e.g. '2024-01-09T16:00:00')",
  "eventTimeZone": "time zone (e.g. 'America/Phoenix')",
  "eventEnd": "time (e.g. '2024-01-09T17:00:00')",
  "eventLocation": "string (optional) (e.g. 'Updated location')"
}

Cancel Event

Cancels an existing calendar event and notifies all participants.

DELETE /api/v1/events/{eventId}
Request Body
{
  "apiKey": "<api key>",
  "apiSecret": "<api secret>",
  "comment": "string (optional) (e.g. 'Cancellation Reason')"
}

Send Event Invitation

Sends an invitation to a contact for an existing event, such as adding another attendee to a webinar.

POST /api/v1/events/{eventId}/invitations
Request Body
{
  "apiKey": "<api key>",
  "apiSecret": "<api secret>",
  "name": "string (e.g. 'First Last')",
  "address": "string (e.g. 'name@domain.com')"
}

Download the Postman collection here