meetbot.dev

v1for the team shipping a meeting AI feature · meet · teams · zoom

The meeting-bot API.

$0.005 per minute, billed per minute. Drop in a Meet, Teams or Zoom link and the bot joins for you — then writes per-speaker audio, the meeting's native captions, the chat log and a full tab recording into your own S3 bucket. When the call ends a signed webhook tells your app the files are ready. Built for the developer who needs the raw recording without renting another SaaS dashboard.

Sign in →Try free with bot@meetbot.dev10 free hours every month · no card · per-minute billing
~/your-app/dispatch.tsmain
import { createMeetbot } from "@meetbot/sdk";

const meetbot = createMeetbot({ apiKey: process.env.MEETBOT_API_KEY! });

const job = await meetbot.dispatchBot({
  url: "https://meet.google.com/abc-defg-hij",
  externalId: "session-42",
  webhooks: { onFinalize: "https://yours.example/hook" },
});

console.log(job.id, job.status);

02 · what you get back

Four files. In your bucket.

No proprietary container, no "sign in to download" portal. When the meeting ends, these files land in the S3 prefix you chose, and a webhook arrives with the path to the index file. Open them with anything that reads webm + JSON.

  • audio · per speaker12.3 MB
    audio.{speaker}.webm
    opus@48k mono
    alice.audio.webm    12.3 MB
    bob.audio.webm       8.7 MB
    carol.audio.webm     9.1 MB
  • captions · live JSON186 KB
    captions.jsonl
    1,402 lines · jsonl
    {"speakerId":"p-2",
     "name":"alice",
     "text":"so the redesign…"}
  • video · whole tab412 MB
    tab.video.webm
    vp9 1080p15
    tab.video.webm
      vp9 · 1920×1080 · 15 fps
      duration 00:42:17
  • chat · inbound4.1 KB
    chat.jsonl
    28 lines · jsonl
    {"sender":"alice",
     "text":"link?",
     "tMs":1827000}

03 · platforms

Three platforms. One contract.

Google Meet

shipping*

Joins as anonymous guest by default. Workspace-account login is in progress for the April 2026 dual-queue admit rollout.

Microsoft Teams

shipping

Web client, anonymous join. Captions via the data-channel intercept; real participant names from the People pane.

Zoom (Web)

shipping

Web client only — no Zoom SDK key required, no native binary. Per-speaker audio via WebRTC SSRC mapping.

* About the asterisk: Google rolled out a dual-queue admit system for Meet in April 2026 that auto-denies anonymous joiners on Workspace meetings. We're shipping a Workspace-bot identity pool to handle it — landing this month.

04 · what happens

One HTTP POST in. Files in your bucket out.

Five steps end-to-end. Your app calls our API, a bot joins the meeting, the recording lands in your bucket, and we ping your webhook. Every step is visible in the admin — no black box, no proprietary state machine.

your app
POST /jobs
meetbot API
queues + dispatches
bot joins meeting
meet · teams · zoom
your S3 bucket
s3://you/meetings/
your webhook
POST /your-hook
  1. dispatch
    Your backend POSTs the meeting URL plus a webhook target. Bearer token, JSON body, returns a job id.
  2. queue + spin up
    The API enqueues the job, pulls a clean Chrome bot container, and admits it to the meeting like any other guest.
  3. record + upload
    During the call: per-speaker audio, captions, chat, tab video. After the call: streamed straight to your bucket — never our disks.
  4. signed callback
    A signed POST to your webhook tells you the meeting is finished and gives you the path to the index file.

05 · pricing

$0.005 per minute.

Thirty cents an hour. Billed by the minute of meeting time — a 17-minute call costs eight and a half cents, no rounding up to the nearest hour, no per-bot fee. Every account gets 10 free meeting-hours every month, refreshed on the 1st UTC. We publish the math because the proprietary alternatives won't.

updated 2026-05-08billed monthly · stripe
meetbotRecall.ai
per meeting-minute$0.005$0.008340% less
billing granularityper minuteper minute (rounded up)
free tier10 hours / month5 hours one-time
per-bot fee
minimum spend
pricing exposedthis pageafter a sales call

Recall.ai pricing as of their ; we'll update this row when theirs moves. This is a comparison, not a takedown — they built a great product. public pricing page

calculator

What you'd actually pay, side-by-side

Move the slider to your real meeting volume. We compare meetbot to Recall.ai, MeetingBaaS, and Vexa using each vendor's published prices — no asterisks, no "call us".

hr / mo
presets:

You save $43/mo vs Recall.ai at this volume.1

vendormonthlyannual$ / hr effective
meetbot
$27$324$0.27
Recall.ai
$70$840$0.70
MeetingBaaS(Free PAYG)
$50$600$0.50
Vexa
$50$600$0.50

1 meetbot's first 10 hours each month are free and reset on the 1st UTC of every calendar month. Recall.ai grants 5 free hours one-time on signup — already burned for any returning customer, so we don't subtract them above. MeetingBaaS Free PAYG is itself a $0/mo subscription tier (75 bots/day) — no separate hours allotment. Vexa hosted free tier is 1 concurrent bot — a parallelism cap, not an hours allotment.

Prices verified 2026-05-09. See /vs/recall for the full spec comparison.

06 · the code

The whole API in three calls.

~/your-app/dispatch.tsmain
import { createMeetbot } from "@meetbot/sdk";

const meetbot = createMeetbot({ apiKey: process.env.MEETBOT_API_KEY! });

const job = await meetbot.dispatchBot({
  url: "https://meet.google.com/abc-defg-hij",
  externalId: "session-42",
  webhooks: { onFinalize: "https://yours.example/hook" },
});

console.log(job.id, job.status);
what you'll see
→ POST /api/v1/jobs · 201 Created · 142 ms
job_4f2c9e1b "queued"

07 · faq

Things engineers actually ask.

Q.How does the bot show up in the meeting?
As a regular participant tile, with whatever displayName you passed to dispatchBot. By default it's meetbot; pass displayName: "Acme note-taker" if you want the participant list to show your product name. Hosts still admit it from the lobby like any guest.
Q.How do you handle anti-bot detection?
Three layers, in escalating order: Workspace bot accounts on a rotation pool (the only thing that survives Google's April-2026 dual-queue admit screen on Workspace meetings), cookie persistence across runs, and tier escalation on retry — each retry uses a stealthier Chrome fingerprint.
Q.What if the meeting runs three hours?
The orchestrator monitors the bot container with periodic heartbeats. There's no timeout to configure — the run ends when the host leaves, when the meeting ends, or when the bot is kicked. You're billed by the second of meeting time, not by container wall clock.
Q.How do I get started?
Easiest path: add bot@meetbot.dev to your next Google Meet, Teams, or Zoom calendar invite. The bot joins, records, and emails you the recording when the meeting ends. First meeting (up to one hour) is on us — no signup, no card. After that you can keep going on a paid account.
Q.How do you handle GDPR / recording consent?
We don't, and we won't pretend to. meetbot is infrastructure — you tell participants the meeting is being recorded, you get their consent under whichever jurisdiction applies, you decide whether to honor "do not record" requests. The bot has a configurable display name precisely so participants know it's there.