介绍 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:
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())v2 的新特性
赋予开发者更多能力:
- 批量操作:单次 request 可创建最多 100 个 bot,支持部分成功——非常适合批量操作
- 高级过滤:强大的 query 参数用于列出 bot 和事件,减少客户端过滤的需求
- 全面的 Webhook:为每个操作提供详细的 webhook 事件,支持多个 endpoint 将不同事件路由到不同系统
- 标准化错误码:如
FST_ERR_BOT_NOT_FOUND_BY_ID、FST_ERR_INSUFFICIENT_TOKENS、FST_ERR_BOT_ALREADY_EXISTS等代码,支持直接进行程序化错误处理 - 改进的 OpenAPI 文档:所有 endpoint 均提供完整的 OpenAPI schema,支持更好的工具链和类型安全。你可以通过 curl 打开或下载,供你的 LLM 使用。
企业级安全
尽管我们尚未获得 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_id、oauth_client_secret、oauth_refresh_token和raw_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_created、calendar.connection_error、calendar.events_synced、calendar.event_created、calendar.event_updated, andcalendar.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 结构示例:
{
"success": true,
"data": {
"bot_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "joining"
}
}错误 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
}v2 中的 Webhook 事件
v2 提供具有一致 payload 结构的全面 webhook 事件:
- Webhooks 概览 — v2 中 bot 和日历 webhook 行为的完整指南
- Callbacks 参考 —
bot.completed和bot.failed的规范化 callback payload
{
"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.status_change— Bot 状态转换bot.completed— Bot 完成录制bot.failed— Bot 失败并附带错误详情calendar.connection_created— 日历连接已建立calendar.events_synced— 日历事件已同步calendar.event_created/calendar.event_updated/calendar.event_cancelled
如果需要从投递问题中恢复,你可以针对特定 bot 重新发送最终 webhook 或 重试 bot callback。有关 callback payload 和行为的完整概述,请参阅 Callbacks 文档。
批量操作
单次 request 创建多个 bot,支持部分成功:
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-keyheader——无需学习新的认证流程
注意: v1 中的 bot 数据、日历连接和已调度 bot 不会自动迁移。你需要在 v2 中重新创建日历连接和已调度 bot。
开始使用
API v2 现已正式上线。v1 和 v2 将并行运行,让你有时间评估并在准备好时进行迁移。对于新的集成,我们建议从 v2 开始,从第一天起就充分利用所有改进。
准备好开始了吗?创建免费账号,几分钟内即可 deploy 你的第一个 bot。
资源:
- 访问 v2 Dashboard
- 探索 API v2 文档
- 查看新功能
- 迁移指南
- 快速入门指南
- Webhooks & Callbacks — bot 和日历的完整事件与 callback 参考
- TypeScript SDK — Meeting BaaS API v2 的官方 SDK v6.0.0(npm)
有问题或反馈?我们非常乐意听取你的意见。API v2 代表了数月的工作成果,但这仅仅是开始。你的反馈将决定我们下一步构建什么。
© 2025 SAS SPOKE — Meeting BaaS(Meeting Bot as a Service)🐟