---
title: "Integrations - Webex (meeting bot)"
url: "https://docs.unified.to/integrations/webexmeetingbot"
description: "Build Webex (meeting bot) integrations faster with our Unified API — Calendar & Meetings data, OAuth2, real-time sync."
date: "2026-11-09T22:02:40.186Z"
updated: "2026-11-09T22:02:40.186Z"
---

# Webex (meeting bot) integration

> What this integration supports through the Unified.to API, by object. Live data: `GET https://api.unified.to/unified/integration?type=webexmeetingbot` with your workspace API key (or Core MCP `list_unified_integrations` with `type: "webexmeetingbot"`). All integrations: https://docs.unified.to/integrations.md

## Overview

- **Type:** `webexmeetingbot`
- **Categories:** [Calendar & Meetings](https://docs.unified.to/calendar/overview.md), [Passthrough](https://docs.unified.to/passthrough/overview.md)
- **Website:** https://webex.com
- **Vendor API docs:** https://developer.webex.com/docs/integrations
- **Launched:** 2026-11-07

## How end users connect

- **OAuth2** authorization flow. Register your own OAuth2 app with the vendor and add its credentials to the integration.

## OAuth2 scopes

Pass Unified scopes in `scopes=` on the authorization URL; each one requests these vendor scopes. Request only what you need.

| Unified scope | Vendor scopes |
| --- | --- |
| `calendar_bot_read` | `meeting:schedules_read` |
| `calendar_bot_write` | `meeting:schedules_read` |
| `calendar_botevent_read` | `meeting:schedules_read`, `meeting:participants_read`, `meeting:recordings_read`, `meeting:transcripts_read` |
| `calendar_calendar_read` | `spark:rooms_read` |
| `calendar_event_read` | `meeting:schedules_read`, `meeting:participants_read` |
| `calendar_event_write` | `meeting:schedules_write`, `meeting:participants_write` |
| `calendar_recording_read` | `meeting:schedules_read`, `meeting:recordings_read`, `meeting:transcripts_read` |
| `calendar_webinar_read` | `meeting:schedules_read`, `meeting:participants_read` |
| `calendar_webinar_write` | `meeting:schedules_write`, `meeting:participants_write` |

## Supported objects

| Object | Methods | Webhooks |
| --- | --- | --- |
| [calendar_bot](#calendar_bot) | list, get, create, update, remove | none |
| [calendar_botevent](#calendar_botevent) | none | created |
| [calendar_calendar](#calendar_calendar) | list, get, remove | none |
| [calendar_event](#calendar_event) | list, get, create, update, remove | created, updated, deleted |
| [calendar_recording](#calendar_recording) | list, get | created, updated, deleted |
| [calendar_webinar](#calendar_webinar) | list, get, create, update, remove | created, updated |
| [passthrough](#passthrough) | none | none |

Values below come from the integration's support data. "Required list filters" must be sent on list calls; "Required on create" fields must be sent when creating. Webhook events are `native` (pushed by the vendor) or `virtual` (polled by Unified.to). Anything not listed is not supported; an unsupported method returns `501`.

### calendar_bot

- **Methods:** `list`, `get`, `create`, `update`, `remove`
- **Webhooks:** none
- **List filters:** `list_event_id`, `list_limit`, `list_meeting_url`, `list_offset`, `list_status`
- **Readable fields:** `created_at`, `ended_at`, `event_id`, `id`, `meeting_metadata`, `meeting_url`, `name`, `participants`, `recording_id`, `started_at`, `status`, `status_changes`, `updated_at`
- **Writable fields:** `event_id`, `meeting_url`, `name`
- **Model:** https://docs.unified.to/calendar/bot/model.md

### calendar_botevent

- **Methods:** none
- **Webhooks:** `created` (native)
- **Readable fields:** `bot_id`, `created_at`, `id`, `participant`, `status_change`, `transcript`, `type`
- **Writable fields:** none
- **Vendor objects:** `meeting`, `participant`, `recording`, `transcript_snippet`
- **Model:** https://docs.unified.to/calendar/botevent/model.md

### calendar_calendar

- **Methods:** `list`, `get`, `remove`
- **Webhooks:** none
- **List filters:** `list_limit`, `list_offset`, `list_sort_by_created_at`, `list_sort_by_updated_at`
- **Readable fields:** `created_at`, `description`, `id`, `name`, `updated_at`
- **Writable fields:** none
- **Vendor objects:** `room`
- **Model:** https://docs.unified.to/calendar/calendar/model.md

### calendar_event

- **Methods:** `list`, `get`, `create`, `update`, `remove`
- **Webhooks:** `created` (native, virtual), `updated` (native, virtual), `deleted` (native)
- **Virtual webhook filters:** `virtual_webhook_calendar_id`, `virtual_webhook_end_lt`, `virtual_webhook_limit`, `virtual_webhook_start_gte`, `virtual_webhook_updated_gte`
- **List filters:** `list_calendar_id`, `list_end_lt`, `list_limit`, `list_offset`, `list_query`, `list_start_gte`, `list_updated_gte`
- **Readable fields:** `attendees`, `calendar_id`, `conference`, `end_at`, `id`, `is_private`, `notes`, `organizer`, `recurrence`, `start_at`, `status`, `subject`, `timezone`, `web_url`
- **Slow fields** (skipped unless you request them in `fields`): `attendees`
- **Writable fields:** `calendar_id`, `is_private`, `notes`, `recurrence`, `subject`, `timezone`
- **Required on create:** `end_at`, `start_at`
- **Vendor objects:** `meeting`
- **Model:** https://docs.unified.to/calendar/event/model.md

### calendar_recording

- **Methods:** `list`, `get`
- **Webhooks:** `created` (native), `updated` (native), `deleted` (native)
- **List filters:** `list_end_lt`, `list_event_id`, `list_limit`, `list_offset`, `list_query`, `list_start_gte`
- **Readable fields:** `created_at`, `end_at`, `event_id`, `id`, `media`, `start_at`, `web_url`
- **Slow fields** (skipped unless you request them in `fields`): `media`
- **Writable fields:** none
- **Vendor objects:** `recording`, `transcript`
- **Model:** https://docs.unified.to/calendar/recording/model.md

### calendar_webinar

- **Methods:** `list`, `get`, `create`, `update`, `remove`
- **Webhooks:** `created` (virtual), `updated` (virtual)
- **Virtual webhook filters:** `virtual_webhook_calendar_id`, `virtual_webhook_end_lt`, `virtual_webhook_limit`, `virtual_webhook_start_gte`, `virtual_webhook_updated_gte`
- **List filters:** `list_calendar_id`, `list_end_lt`, `list_limit`, `list_offset`, `list_query`, `list_start_gte`, `list_updated_gte`
- **Readable fields:** `capacity`, `conference`, `created_at`, `end_at`, `has_polls`, `has_qa`, `has_recording`, `id`, `is_auto_approve`, `is_enabled`, `is_webcast`, `join_url`, `notes`, `organizer`, `panelist_password`, `panelists`, `registrant_password`, `registrants`, `require_address`, `require_company`, `require_email`, `require_first_name`, `require_job_title`, `require_last_name`, `require_phone`, `start_at`, `status`, `subject`, `timezone`, `updated_at`, `web_url`
- **Slow fields** (skipped unless you request them in `fields`): `panelists`, `registrants`
- **Writable fields:** `capacity`, `has_polls`, `has_qa`, `is_auto_approve`, `is_enabled`, `is_webcast`, `notes`, `panelist_password`, `panelists`, `registrant_password`, `require_address`, `require_company`, `require_email`, `require_first_name`, `require_job_title`, `require_last_name`, `require_phone`, `status`, `subject`, `timezone`
- **Required on create:** `end_at`, `start_at`
- **Vendor objects:** `webinar`
- **Model:** https://docs.unified.to/calendar/webinar/model.md

### passthrough

- **Methods:** none
- **Webhooks:** none
- **Readable fields:** none
- **Writable fields:** none
