# Callback Notifications

> **BETA**

#### Description
Once a Meeting Agent has been provisioned you will be able to receive notifications relating to it. These notifications will be sent as HTTP POST requests to the URI specified when the Meeting Agent was created

### Requesting callbacks
To register for callbacks, populate the `subscriptions` field when either
[provisioning a Meeting Agent for a calendar event](/developers/api/meeting-agents/provisioning/index.md)
or when [scheduling a Meeting Agent directly](/developers/api/meeting-agents/schedule/index.md).

### Example callbacks
#### meeting_agent_activated
This notification is fired when a Meeting Agent is preparing to join the meeting.

```http
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-04-25T15:30:00Z",
    "end": "2026-04-25T17: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](/developers/api/meeting-agents/resource-download/index.md)
for how to pull a copy of resources into your application as desired.

```http
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-04-25T15:30:00Z",
    "end": "2026-04-25T17: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",
    "details": {
      "recording": {
        "duration_seconds": 1620
      }
    },
    "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. For Zoom meetings, the host must have
*Record to computer files* and *Who can request host permission to record? -> External meeting participants*
enabled in their [Zoom profile Recording settings](https://zoom.us/profile/setting#tab-recording).

- `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](/developers/meeting-agents/zoom-authorization/index.md) documentation.

```http
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-04-25T15:30:00Z",
    "end": "2026-04-25T17: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://..."
      }
    ]
  }
}
```



---
[Read in HTML](/developers/api/meeting-agents/callbacks/)