Introducing Meeting BaaS v2
The next generation of our API — built for scale, transparency, and security
Paris, December 5th, 2025
After 5 months of development, we're pleased to introduce Meeting BaaS API v2. It is a complete reimagining of our backend, including both the public API and the internal services. v2 addresses 90% of the challenges we've faced with our users and developers over 2 years of building Meeting BaaS. It is built to support millions of recordings per month.
API v2 is now available with a completely redesigned DashboardLog in or sign up to access the v2 dashboard.
Built on Your Feedback
The main challenges we met at scale for ourselves and our users included:
- managing webhooks at scale,
- handling errors gracefully,
- needing better visibility into operations
- more control over security.
API v2 offers an answer to each of these hurdles with features to make the API along with features to make the API more powerful.
Quick Start with v2
Getting started with API v2 is straightforward. Here's how to send your first bot, using the official TypeScript SDK or raw HTTP:
pnpm add @meeting-baas/sdkimport { createBaasClient } from "@meeting-baas/sdk";
const client = createBaasClient({
api_key: "YOUR_API_KEY",
});
async function sendBot() {
const { success, data, error } = await client.joinMeeting({
meeting_url: "https://meet.google.com/abc-defg-hij",
bot_name: "Meeting Assistant",
recording_mode: "speaker_view",
transcription_enabled: true,
transcription_config: {
provider: "gladia",
},
});
if (success) {
console.log("Bot created:", data.bot_id);
} else {
console.error("Error creating bot:", error);
}
}curl -X POST "https://api.meetingbaas.com/v2/bots" \
-H "Content-Type: application/json" \
-H "x-meeting-baas-api-key: YOUR_API_KEY" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Meeting Assistant",
"recording_mode": "speaker_view",
"transcription_enabled": true,
"transcription_config": {
"provider": "gladia"
}
}'import requests
response = requests.post(
"https://api.meetingbaas.com/v2/bots",
headers={
"Content-Type": "application/json",
"x-meeting-baas-api-key": "YOUR_API_KEY"
},
json={
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Meeting Assistant",
"recording_mode": "speaker_view",
"transcription_enabled": True,
"transcription_config": {"provider": "gladia"}
}
)
# Response: {"success": true, "data": {"bot_id": "..."}}
print(response.json())What's New in v2
More power to Developers:
- Batch Operations: Create up to 100 bots in a single request with partial success support — ideal for bulk operations
- Advanced Filtering: Powerful query parameters for listing bots and events, reducing the need for client-side filtering
- Comprehensive Webhooks: Detailed webhook events for every operation, with multiple endpoints to route different events to different systems
- Standardized Error Codes: Codes like
FST_ERR_BOT_NOT_FOUND_BY_ID,FST_ERR_INSUFFICIENT_TOKENS,FST_ERR_BOT_ALREADY_EXISTSenable straightforward programmatic error handling - Improved OpenAPI Documentation: Complete OpenAPI schemas for all endpoints, enabling better tooling and type safety. You can open or download it using curl for your LLM.
Enterprise-Grade Security
While we are not SOC 2 compliant yet, v2 has been designed with security as a primary focus. Our server code is source-available under On-Prem contracts and is regularly reviewed and audited by our enterprise customers.
- Webhook Signing: All webhooks are cryptographically signed using Svix, which we self-host within our infrastructure, ensuring message integrity and authenticity
- Multiple API Keys: Create separate keys for different environments, services, or permissions — no more sharing a single key across your entire infrastructure
- Granular Permissions: Fine-grained access control with "Sending Access" keys for write-only operations, ideal for isolating bot creation services
- Secret Rotation: If self-hosting Meeting Baas, rotate webhook secrets without downtime, meeting compliance requirements without service interruption
Improved Calendar Integration
Calendar integration in v2 has been rebuilt end to end to make large‑scale scheduling and automation easier, more reliable, and much more transparent.
-
Calendars on Every Plan: Calendar integration is now available across all plans, from Pay‑as‑you‑go to Enterprise, so you no longer need an enterprise contract just to sync events and trigger bots from calendars.
-
Bring-Your-Own Credentials: Use your own OAuth apps for Google and Microsoft instead of relying on opaque, shared integrations. When creating a connection via
POST /v2/calendars, you provideoauth_client_id,oauth_client_secret,oauth_refresh_token, andraw_calendar_id, giving you full control over credential rotation, consent screens, and security posture. -
Richer Calendar Endpoints: v2 exposes a complete set of endpoints to manage the entire calendar lifecycle from your backend:
POST /v2/calendars– Create calendar connections for specific users or service accountsGET /v2/calendars/GET /v2/calendars/:calendar_id– List all connections and inspect a single connection in detailPOST /v2/calendars/list-raw– Preview provider calendars before creating a connection, ideal for account linking flowsPOST /v2/calendars/:calendar_id/sync– Force a resync of events when you need immediate consistencyPOST /v2/calendars/:calendar_id/bots– Schedule bots for calendar events without manually computing timesPATCH /v2/calendars/:calendar_id/DELETE /v2/calendars/:calendar_id– Update credentials or cleanly remove connections
-
Events and Series Support: You can work with single events and recurring series in a uniform way using:
GET /v2/calendars/:calendar_id/events– List upcoming events for a calendarGET /v2/calendars/:calendar_id/events/:event_id– Fetch full details for a specific eventGET /v2/calendars/:calendar_id/series– Inspect recurring series and their instances
-
Microsoft Calendar Real-Time Sync: v2 adds real‑time sync capabilities for Microsoft calendars, so changes to Outlook and Microsoft 365 calendars are reflected in Meeting BaaS within seconds instead of minutes, making scheduleCalendarRecordEvent flows more predictable.
-
Dedicated Calendar Webhooks and Reliability: New webhook events such as
calendar.connection_created,calendar.connection_error,calendar.events_synced,calendar.event_created,calendar.event_updated, andcalendar.event_cancelledgive you a clear picture of sync health and changes over time. Dedicated endpoints for resubscribing and resyncing let you recover quickly from provider issues without manual intervention. -
Dedicated Calendar UI: The v2 dashboard includes a dedicated calendar UI where you can inspect connections, see sync status and recent webhooks, debug failures, and confirm which events have bots attached — without digging through raw logs.
-
Bots Tied to Events: In v2, scheduled bots are first‑class citizens in the calendar flow. You can create, update, and cancel bots directly against calendar events, which removes a lot of custom glue code, reduces race conditions around last‑minute changes, and makes “record every standup in this calendar” a one‑line configuration instead of a bespoke workflow.
A Foundation for the Future
Better visibility into your bot operations:
- Standardized Error Responses: Every error follows a consistent
{success, data, error}format with programmatic error codes - Rate Limiting Clarity: Clear, per-team rate limits with transparent error messages when limits are approached
- Token Management: Real-time visibility into token consumption, reservation, and availability with detailed usage dashboards
- Webhook Delivery Tracking: Monitor webhook delivery status, view message history, and resend failed deliveries
Example v2 response structure:
{
"success": true,
"data": {
"bot_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "joining"
}
}Example error response:
{
"success": false,
"error": "Not Found",
"message": "Bot with ID 'bot_abc123' not found",
"code": "FST_ERR_BOT_NOT_FOUND_BY_ID",
"statusCode": 404,
"details": null
}Webhook Events in v2
v2 provides comprehensive webhook events with consistent payload structure:
- Webhooks Overview — Complete guide to bot and calendar webhook behavior in v2
- Callbacks Reference — Normalized callback payloads for
bot.completedandbot.failed
{
"event": "bot.completed",
"data": {
"bot_id": "123e4567-e89b-12d3-a456-426614174000",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"raw_transcription": "https://s3.amazonaws.com/.../raw_transcription.json",
"transcription": "https://s3.amazonaws.com/.../output_transcription.json",
"transcription_ids": ["gladia-job-12345"],
"transcription_provider": "gladia",
"recording": "https://s3.amazonaws.com/.../recording.mp4"
},
"sent_at": "2025-12-05T11:01:45Z"
}New webhook event types in v2:
bot.status_change— Bot status transitionsbot.completed— Bot finished recordingbot.failed— Bot failed with error detailscalendar.connection_created— Calendar connection establishedcalendar.events_synced— Calendar events syncedcalendar.event_created/calendar.event_updated/calendar.event_cancelled
If you need to recover from delivery issues, you can resend the final webhook or retry a bot callback for a specific bot. For a full overview of callback payloads and behavior, see the Callbacks documentation.
Batch Operations
Create multiple bots in a single request with partial success support:
curl -X POST "https://api.meetingbaas.com/v2/bots/batch" \
-H "Content-Type: application/json" \
-H "x-meeting-baas-api-key: YOUR_API_KEY" \
-d '[
{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Bot 1",
"recording_mode": "speaker_view"
},
{
"meeting_url": "https://zoom.us/j/123456789",
"bot_name": "Bot 2",
"recording_mode": "gallery_view"
}
]'Additional Capabilities
v2 makes any business logic that involves meeting bots scalable:
| Feature | Description |
|---|---|
| Deduplication | Built-in protection against duplicate bot creation with configurable allow_multiple_bots flag |
| Scheduled Bots | Dedicated endpoints (/v2/bots/scheduled) with full update, delete, and batch support |
| Enhanced Transcription | Gladia integration with BYOK support, LLM summaries, translation, custom vocabulary |
| Auto Data Deletion | Plan-based retention (3-30 days) with automatic cleanup |
| Real-Time Status | Granular state updates with bot.status_change webhook events |
| S3 Storage | Presigned URLs for all artifacts with automatic lifecycle management |
| Teams-First Design | All resources belong to teams with member roles and team-level limits |
| Support System | Built-in ticket system linked to specific bots with status tracking |
| New Dashboard | Completely redesigned UI with status history visualization |
What's Coming Next
We're actively developing new features based on your feedback.
- Additional Transcription Providers: One unified API for all major transcription services. Planned providers include:
- Deepgram
- Gladia
- Assembly AI
- OpenAI Whisper
- Speechmatics
- Google Speech
- Azure Speech
- ... Because transcription in v2 is though as BYOK first, every request runs in your own provider account — all jobs, usage, and billing remain visible in the provider’s dashboard, and we return the provider’s unique job ID so you can cross‑reference logs, debug issues, and audit activity end to end.
- Region-Specific Data Storage: Store your meeting data in specific geographic regions to meet compliance and data residency requirements
- Gallery View Video Capture: Enhanced video recording with gallery view mode for better multi-participant meeting coverage
Migration Made Simple
We understand that migrating APIs can be a significant undertaking. That's why we've made the transition as smooth as possible:
- Parallel Operation: Both v1 and v2 run simultaneously — migrate at your own pace
- Comprehensive Migration Guide: Step-by-step instructions for moving from v1 to v2
- Token Import: Import your remaining v1 tokens to v2 via the dashboard — you can import multiple times as needed
- Same Authentication: Use
x-meeting-baas-api-keyheader — no new auth flows to learn
Note: Bot data, calendar connections, and scheduled bots from v1 are not automatically migrated. You'll need to recreate calendar connections and scheduled bots in v2.
Get Started
API v2 is now available. Both v1 and v2 will run in parallel, giving you time to evaluate and migrate when you're ready. For new integrations, we recommend starting with v2 to take advantage of all the improvements from day one.
Ready to get started? Create your free account and deploy your first bot in minutes.
Resources:
- Access the v2 Dashboard
- Explore API v2 Documentation
- View New Features
- Migration Guide
- Quick Start Guide
- Webhooks & Callbacks — Full event and callback reference for bots and calendars
- TypeScript SDK — Official SDK v6.0.0 for Meeting BaaS API v2 (npm)
Questions or feedback? We'd love to hear from you. API v2 represents months of work, but it's just the beginning. Your feedback shapes what we build next.
© 2025 SAS SPOKE — Meeting BaaS (Meeting Bot as a Service) 🐟