Provisioning a Meeting Agent BETA
Required plan: EmergingWhen 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- π¦πΊ Australiaapi-ca.cronofy.com- π¨π¦ Canadaapi-de.cronofy.com- π©πͺ Germanyapi-sg.cronofy.com- πΈπ¬ Singaporeapi-uk.cronofy.com- π¬π§ United Kingdomapi.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:
cronofyto provision a Cronofy Meeting Agentnoneto 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 downloadmeeting_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 thejoin_urlwas not valid.internal_error- A networking or other internal error caused the Meeting Agent to failmeeting_agents_disabled- The Meeting Agents feature is disabled or unavailable for your applicationno_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://..."
}
]
}
}