Provisioning a Meeting Agent BETA

Required plan: Emerging

When creating or updating an event add a meeting_agent property as specified below to request a Meeting Agent join the meeting.

In addition, register to receive webhooks for meeting_agent_activated, meeting_agent_complete, and meeting_agent_failed interactions to react to key events in the Meeting Agent’s lifecycle.

If you wish to send a Meeting Agent to a conference that isn’t associated with an event managed through the Cronofy API, you can use the Schedule/Send a Meeting Agent API.

Example Request #

POST /v1/calendars/cal_n23kjnwrw2_jsdfjksn234/events HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Meeting agent enhanced",
  "start": "2026-03-19T15:30:00Z",
  "end": "2026-03-19T17:00:00Z",
  "tzid": "Europe/Berlin",
  "conferencing": {
    "profile_id": "default"
  },
  "meeting_agent": {
    "profile_id": "cronofy"
  },
  "subscriptions": [
    {
      "type": "webhook",
      "uri": "https://example.com/notification",
      "interactions": [
        { "type": "meeting_agent_activated" },
        { "type": "meeting_agent_complete" },
        { "type": "meeting_agent_failed" }
      ]
    }
  ]
}

Parameters #

data_center_url required

The URL for the data center you want to communicate with. Possible choices are:

  • api-au.cronofy.com - πŸ‡¦πŸ‡Ί Australia
  • api-ca.cronofy.com - πŸ‡¨πŸ‡¦ Canada
  • api-de.cronofy.com - πŸ‡©πŸ‡ͺ Germany
  • api-sg.cronofy.com - πŸ‡ΈπŸ‡¬ Singapore
  • api-uk.cronofy.com - πŸ‡¬πŸ‡§ United Kingdom
  • api.cronofy.com - πŸ‡ΊπŸ‡Έ United States

Find out more about Cronofy's data centers.

meeting_agent.profile_id required  #

A String value representing the type of Meeting Agent to provision. One of:

  • cronofy to provision a Cronofy Meeting Agent
  • none to de-provision a previously provisioned Meeting Agent if necessary

If the meeting_agent parameter is omitted entirely then any existing Meeting Agent will be left untouched.

subscriptions optional  #

Object containing an array of subscriptions.

subscriptions[].type optional  #

Only one value of webhook is supported.

subscriptions[].uri optional  #

The URI within your application you want Cronofy to send notifications to when the interaction is triggered. Must be an externally accessible HTTP or HTTPS URI.

subscriptions[].interactions optional  #

An array of interactions that should trigger a call to the uri.

subscriptions[].interactions[].type optional  #

The type of interaction. Currently supported are:

  • meeting_agent_activated - sent when the Meeting Agent is preparing to join the meeting.
  • meeting_agent_complete - sent when the Meeting Agent has successfully joined the meeting, captured data from it, and processed those into resources it has made available for download
  • meeting_agent_failed - sent when the Meeting Agent was unable to run successfully

Example callbacks #

meeting_agent_activated #

This notification is fired when a Meeting Agent is preparing to join the meeting.

POST /notification HTTP/1.1
Host: example.com
Content-Type: application/json; charset=utf-8
Cronofy-HMAC-SHA256: {Base64(HmacSHA256(body_bytes, CLIENT_SECRET))}

{
  "notification": {
    "type": "event_subscription",
    "interactions": [
      {
        "type": "meeting_agent_activated"
      }
    ]
  },
  "event": {
    "event_id": "qTtZdczOccgaPncGJaCiLg",
    "summary": "Meeting agent enhanced",
    "start": "2026-03-19T15:30:00Z",
    "end": "2026-03-19T17:00:00Z",
    "tzid": "Europe/Berlin",
    "conferencing": {
      "provider_name": "zoom",
      "join_url": "https://zoom.us/00001111-222"
    },
    "meeting_agent": {
      "profile_id": "cronofy"
    }
  },
  "meeting_agent": {
    "sub": "agt_692702a100ccd07000000000",
    "state": "created",
    "resources": [
      {
        "category": "cronofy",
        "type": "dashboard",
        "url": "https://..."
      }
    ]
  }
}

meeting_agent_complete #

Meeting Agent resource download for how to pull a copy of resources into your application as desired.

POST /notification HTTP/1.1
Host: example.com
Content-Type: application/json; charset=utf-8
Cronofy-HMAC-SHA256: {Base64(HmacSHA256(body_bytes, CLIENT_SECRET))}

{
  "notification": {
    "type": "event_subscription",
    "interactions": [
      {
        "type": "meeting_agent_complete"
      }
    ]
  },
  "event": {
    "event_id": "qTtZdczOccgaPncGJaCiLg",
    "summary": "Meeting agent enhanced",
    "start": "2026-03-19T15:30:00Z",
    "end": "2026-03-19T17:00:00Z",
    "tzid": "Europe/Berlin",
    "conferencing": {
      "provider_name": "zoom",
      "join_url": "https://zoom.us/00001111-222"
    },
    "meeting_agent": {
      "profile_id": "cronofy"
    }
  },
  "meeting_agent": {
    "sub": "agt_692702a100ccd07000000000",
    "state": "complete",
    "resources": [
      {
        "category": "cronofy",
        "type": "dashboard",
        "url": "https://..."
      },
      {
        "category": "transcript",
        "type": "cronofy",
        "url": "https://..."
      },
      {
        "category": "audio",
        "type": "voice",
        "url": "https://..."
      },
      {
        "category": "video",
        "type": "conference",
        "url": "https://..."
      }
    ]
  }
}

meeting_agent_failed #

The meeting_agent_failed callback will include one of a number of subtypes that indicate why the error occurred.

The subtype value can be one of the following list. This list will be expanded over time and consumers should accept other values as unknown errors.

  • meeting_agent_activation_failed - indicates the Meeting Agent failed to start.
  • meeting_agent_rejected - The Meeting Agent was rejected from the call due to it either not being accepted into the meeting, or because rights to record the call were not granted or could not be requested.
  • join_timeout - The Meeting Agent was never accepted into the call from the waiting room.
  • access_denied - The Meeting Agent was not allowed to begin the join process.
  • meeting_not_found - The conference call could not be found. This typically means the join_url was not valid.
  • internal_error - A networking or other internal error caused the Meeting Agent to fail
  • meeting_agents_disabled - The Meeting Agents feature is disabled or unavailable for your application
  • no_meeting_authorization - We were not able to get a Zoom authorization for the meeting – please see our Zoom Authorization Flow documentation.
POST /notification HTTP/1.1
Host: example.com
Content-Type: application/json; charset=utf-8
Cronofy-HMAC-SHA256: {Base64(HmacSHA256(body_bytes, CLIENT_SECRET))}

{
  "notification": {
    "type": "event_subscription",
    "interactions": [
      {
        "type": "meeting_agent_failed",
        "subtype": "meeting_agent_rejected"
      }
    ]
  },
  "event": {
    "event_id": "qTtZdczOccgaPncGJaCiLg",
    "summary": "Meeting agent enhanced",
    "start": "2026-03-19T15:30:00Z",
    "end": "2026-03-19T17:00:00Z",
    "tzid": "Europe/Berlin",
    "conferencing": {
      "provider_name": "zoom",
      "join_url": "https://zoom.us/00001111-222"
    },
    "meeting_agent": {
      "profile_id": "cronofy"
    }
  },
  "meeting_agent": {
    "sub": "agt_692702a100ccd07000000000",
    "state": "complete",
    "resources": [
      {
        "category": "cronofy",
        "type": "dashboard",
        "url": "https://..."
      }
    ]
  }
}