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:

install-sdk.sh
pnpm add @meeting-baas/sdk
send_bot_v2.ts
import { 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);
  }
}
send_bot_v2.sh
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"
           }
         }'
send_bot_v2.py
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_EXISTS enable 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.
Meeting BaaS v2 Dashboard Preview

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 provide oauth_client_id, oauth_client_secret, oauth_refresh_token, and raw_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 accounts
    • GET /v2/calendars / GET /v2/calendars/:calendar_id – List all connections and inspect a single connection in detail
    • POST /v2/calendars/list-raw – Preview provider calendars before creating a connection, ideal for account linking flows
    • POST /v2/calendars/:calendar_id/sync – Force a resync of events when you need immediate consistency
    • POST /v2/calendars/:calendar_id/bots – Schedule bots for calendar events without manually computing times
    • PATCH /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 calendar
    • GET /v2/calendars/:calendar_id/events/:event_id – Fetch full details for a specific event
    • GET /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, and calendar.event_cancelled give 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:

response_format.json
{
  "success": true,
  "data": {
    "bot_id": "123e4567-e89b-12d3-a456-426614174000",
    "status": "joining"
  }
}

Example error response:

error_response.json
{
  "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:

webhook_bot_completed.json
{
  "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:

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:

batch_create.sh
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:

FeatureDescription
DeduplicationBuilt-in protection against duplicate bot creation with configurable allow_multiple_bots flag
Scheduled BotsDedicated endpoints (/v2/bots/scheduled) with full update, delete, and batch support
Enhanced TranscriptionGladia integration with BYOK support, LLM summaries, translation, custom vocabulary
Auto Data DeletionPlan-based retention (3-30 days) with automatic cleanup
Real-Time StatusGranular state updates with bot.status_change webhook events
S3 StoragePresigned URLs for all artifacts with automatic lifecycle management
Teams-First DesignAll resources belong to teams with member roles and team-level limits
Support SystemBuilt-in ticket system linked to specific bots with status tracking
New DashboardCompletely 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-key header — 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:

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) 🐟