Introduction to Real-Time Scheduling

How to use the Cronofy Real-Time Scheduling API to generate branded booking links

When we built our Availability API it was to solve the problem that our customers were facing in enabling access to real-time booking options into their applications. Labour marketplaces wanting to understand who is available for a booking; hiring managers wanting to know when members of an interview panel are available to see a candidate; etc.

This works really well in the context of an application but enabling a self-serve flow that is similar to many popular personal meeting booking applications is a more involved proposition.

The Cronofy Real-Time Scheduling service built on top of our Availability API delivers this for any application.


You can generate branded, self-serve booking links for healthcare appointments, interviews, in fact consultations of any kind which are always up to date with people's availability.

The User Experience


Once a link has been generated, this can be sent in an email, text, or chat conversation. The recipient can then navigate through the options to choose a time that works for them.

At the point they choose a time, the Real-Time Scheduling service automatically generates events in all of the relevant participants' calendars and makes a web hook call to the generating application with the details of the chosen option.

Anatomy of a Real-Time Scheduling link creation request

The API reference docs describe all elements. In this article I'll describe the key elements of an API request.

  "client_id": "{CLIENT_ID}",
  "client_secret": "{CLIENT_SECRET}",
  "oauth": {
    "redirect_uri": "{REDIRECT_URI}",
    "scope": "create_event",
    "state": "{STATE}"
  "event": {
    "event_id": "qTtZdczOccgaPncGJaCiLg",
    "summary": "Product Manager Interview at Globex",
  "availability": {
    "participants": [{
      "members": [{
        "sub": "acc_567236000909002",
        "calendar_ids": ["cal_n23kjnwrw2_jsdfjksn234"]
      "required": "all"
    "required_duration": { "minutes": 60 },
    "available_periods": [{
      "start": "2017-07-17T09:00:00Z",
      "end": "2017-07-17T18:00:00Z"
  "target_calendars": [{
    "sub": "acc_567236000909002",
    "calendar_id": "cal_n23kjnwrw2_jsdfjksn234"
  "callback_url": "",
  "tzid": "Europe/London"

The result of this will be a URL that encapsulates all of this information into a booking link to be sent to the recipient, eg:

  "url": ""


As this request is making queries across multiple calendar authorizations, your application's client_id and client_secret are used to identify and authorize the request.


If the recipient chooses to perform an authorization to allow the event to be added to their calendar this is where that authorization flow returns to. This way subsequent updates can be made to the event, and/or tracking of changes made.


This is the template for the event that will be created in all of the participants' calendars.


The Real-Time Scheduling service is built on top of our Availability API. This means that any availability query with any supported combination of participants can be used to generate booking links.

Each participant is identified by their Cronofy Account ID, eg: acc_567236000909002

Target Calendars

When a booking slot is chosen, this indicates which calendar the event should be put into for each participant.

Callback URL

This is the URL the Cronofy API will call when a booking slot is chosen and will contain all of the information about the event that's been created. Real-Time Scheduling callback example.


Hopefully this introduction gives you enough to get started generating your own booking links. If you need any help at all or would like to give us any feedback, please don't hesitate to contact us using the chat widget or by emailing