介绍 Meeting BaaS v2

我们 API 的下一代版本——为规模化、透明度和安全性而构建

巴黎,2025年12月5日


经过 5 个月的开发,我们很高兴正式推出 Meeting BaaS API v2。这是对我们后端的全面重构,涵盖公共 API 和内部服务。v2 解决了我们在 2 年构建 Meeting BaaS 过程中,与用户和开发者共同面临的 90% 的挑战。它能够支持每月数百万次录制。

API v2 现已上线,并配备全新设计的 Dashboard。登录或注册以访问 v2 dashboard

基于你的反馈而构建

我们在规模化过程中,为自己和用户遇到的主要挑战包括:

  • 大规模管理 webhook,
  • 优雅地处理错误,
  • 需要更好的运营可见性,
  • 以及更强的安全控制。

API v2 针对上述每一个难题都提供了解决方案,同时新增了多项功能,让 API 更加强大。

v2 快速开始

上手 API v2 非常简单。以下是如何发送你的第一个 bot,使用官方 TypeScript SDK 或原始 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())

v2 的新特性

赋予开发者更多能力:

  • 批量操作:单次 request 可创建最多 100 个 bot,支持部分成功——非常适合批量操作
  • 高级过滤:强大的 query 参数用于列出 bot 和事件,减少客户端过滤的需求
  • 全面的 Webhook:为每个操作提供详细的 webhook 事件,支持多个 endpoint 将不同事件路由到不同系统
  • 标准化错误码:如 FST_ERR_BOT_NOT_FOUND_BY_IDFST_ERR_INSUFFICIENT_TOKENSFST_ERR_BOT_ALREADY_EXISTS 等代码,支持直接进行程序化错误处理
  • 改进的 OpenAPI 文档:所有 endpoint 均提供完整的 OpenAPI schema,支持更好的工具链和类型安全。你可以通过 curl 打开或下载,供你的 LLM 使用。
Meeting BaaS v2 Dashboard 预览

企业级安全

尽管我们尚未获得 SOC 2 合规认证,但 v2 在设计之初就将安全性作为首要考量。我们的服务器代码在 On-Prem 合同下源码可查,并定期由我们的企业客户进行审查和审计。

  • Webhook 签名:所有 webhook 均使用 Svix 进行加密签名,我们在自己的基础设施内自托管 Svix,确保消息的完整性和真实性
  • 多个 API Key:为不同环境、服务或权限创建独立的 key——不再需要在整个基础设施中共享单一 key
  • 细粒度权限:精细的访问控制,配备"发送访问"key 用于只写操作,非常适合隔离 bot 创建服务
  • 密钥轮换:如果自托管 Meeting BaaS,可在不停机的情况下轮换 webhook 密钥,在不中断服务的前提下满足合规要求

改进的日历集成

v2 的日历集成经过端到端重建,使大规模调度和自动化更加简便、可靠,且透明度更高。

  • 所有套餐均支持日历:日历集成现已在所有套餐中可用,从按量计费到企业版,你无需再签订企业合同即可同步事件并从日历触发 bot。

  • 自带凭证:使用你自己的 OAuth 应用对接 Google 和 Microsoft,而非依赖不透明的共享集成。通过 POST /v2/calendars 创建连接时,你需提供 oauth_client_idoauth_client_secretoauth_refresh_tokenraw_calendar_id,从而完全掌控凭证轮换、授权界面和安全策略。

  • 更丰富的日历 Endpoint:v2 提供完整的 endpoint 集,可从后端管理整个日历生命周期:

    • POST /v2/calendars – 为特定用户或服务账号创建日历连接
    • GET /v2/calendars / GET /v2/calendars/:calendar_id – 列出所有连接并查看单个连接的详细信息
    • POST /v2/calendars/list-raw – 在创建连接之前预览提供商日历,适用于账号关联流程
    • POST /v2/calendars/:calendar_id/sync – 在需要即时一致性时强制重新同步事件
    • POST /v2/calendars/:calendar_id/bots – 为日历事件安排 bot,无需手动计算时间
    • PATCH /v2/calendars/:calendar_id / DELETE /v2/calendars/:calendar_id – 更新凭证或完整移除连接
  • 事件与系列支持:你可以通过统一方式处理单次事件和重复系列:

    • GET /v2/calendars/:calendar_id/events – 列出日历即将到来的事件
    • GET /v2/calendars/:calendar_id/events/:event_id – 获取特定事件的完整详情
    • GET /v2/calendars/:calendar_id/series – 查看重复系列及其实例
  • Microsoft 日历实时同步:v2 新增了对 Microsoft 日历的实时同步功能,Outlook 和 Microsoft 365 日历的更改将在数秒内(而非数分钟)反映到 Meeting BaaS,让 scheduleCalendarRecordEvent 流程更加可预期。

  • 专用日历 Webhook 与可靠性:新增的 webhook 事件,如 calendar.connection_createdcalendar.connection_errorcalendar.events_syncedcalendar.event_createdcalendar.event_updated, and calendar.event_cancelled,让你清晰掌握同步状态和随时间发生的变化。专用的重新订阅和重新同步 endpoint 使你能够在不进行手动干预的情况下快速从提供商问题中恢复。

  • 专用日历 UI:v2 dashboard 包含专用日历 UI,你可以查看连接状态、同步状态和最近的 webhook、debug 失败情况,并确认哪些事件附加了 bot——无需翻阅原始 log。

  • Bot 与事件绑定:在 v2 中,已调度的 bot 是日历流程中的一等公民。你可以直接针对日历事件创建、更新和取消 bot,这消除了大量自定义胶水代码,减少了最后时刻变更引发的竞态条件,并将"录制此日历中的每个 standup"变成单行配置,而非定制 workflow。

面向未来的基础

更好地了解你的 bot 运营情况:

  • 标准化错误 Response:每个错误均遵循统一的 {success, data, error} 格式,附带程序化错误码
  • Rate Limit 清晰度:清晰的团队级 rate limit,并在接近限制时提供透明的错误消息
  • Token 管理:通过详细的使用 dashboard 实时查看 token 消耗、预留和可用情况
  • Webhook 投递追踪:监控 webhook 投递状态、查看消息历史,并重新发送失败的投递

v2 response 结构示例:

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

错误 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
}

v2 中的 Webhook 事件

v2 提供具有一致 payload 结构的全面 webhook 事件:

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"
}

v2 中的新 webhook 事件类型:

如果需要从投递问题中恢复,你可以针对特定 bot 重新发送最终 webhook重试 bot callback。有关 callback payload 和行为的完整概述,请参阅 Callbacks 文档

批量操作

单次 request 创建多个 bot,支持部分成功:

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"
           }
         ]'

附加功能

v2 使任何涉及会议 bot 的业务逻辑都可扩展:

功能描述
去重内置防止重复创建 bot 的保护机制,配备可配置的 allow_multiple_bots 标志
已调度 Bot专用 endpoint(/v2/bots/scheduled),支持完整的更新、删除和批量操作
增强转写Gladia 集成支持 BYOK、LLM 摘要、翻译和自定义词汇
自动数据删除基于套餐的保留期(3-30 天),自动清理
实时状态通过 bot.status_change webhook 事件提供细粒度状态更新
S3 存储所有产物均提供预签名 URL,并支持自动生命周期管理
团队优先设计所有资源归属于团队,支持成员角色和团队级限制
支持系统内置工单系统,关联到特定 bot,支持状态追踪
全新 Dashboard完全重新设计的 UI,支持状态历史可视化

下一步计划

我们正在根据你的反馈积极开发新功能。

  • 更多转写提供商:一个统一的 API 覆盖所有主流转写服务。计划支持的提供商包括:
    • Deepgram
    • Gladia
    • Assembly AI
    • OpenAI Whisper
    • Speechmatics
    • Google Speech
    • Azure Speech
    • ... 由于 v2 中的转写以 BYOK 为优先,每次 request 都在你自己的提供商账号下运行——所有任务、用量和账单均可在提供商的 dashboard 中查看,我们还会返回提供商的唯一任务 ID,便于你交叉核查 log、debug 问题以及端到端审计活动。
  • 区域特定数据存储:将会议数据存储在特定地理区域,以满足合规和数据驻留要求
  • 画廊视图视频录制:增强视频录制功能,支持画廊视图模式,提供更好的多参与者会议覆盖

简化迁移

我们理解迁移 API 可能是一项重大工程。因此,我们尽力让过渡过程尽可能顺畅:

  • 并行运行:v1 和 v2 同时运行——按照你自己的节奏迁移
  • 全面的迁移指南:从 v1 迁移到 v2 的逐步说明
  • Token 导入:通过 dashboard 将你剩余的 v1 token 导入 v2——可按需多次导入
  • 相同的认证方式:使用 x-meeting-baas-api-key header——无需学习新的认证流程

注意: v1 中的 bot 数据、日历连接和已调度 bot 不会自动迁移。你需要在 v2 中重新创建日历连接和已调度 bot。

开始使用

API v2 现已正式上线。v1 和 v2 将并行运行,让你有时间评估并在准备好时进行迁移。对于新的集成,我们建议从 v2 开始,从第一天起就充分利用所有改进。

准备好开始了吗?创建免费账号,几分钟内即可 deploy 你的第一个 bot。

资源:

有问题或反馈?我们非常乐意听取你的意见。API v2 代表了数月的工作成果,但这仅仅是开始。你的反馈将决定我们下一步构建什么。


© 2025 SAS SPOKE — Meeting BaaS(Meeting Bot as a Service)🐟