FAQ

Frequently asked questions about the MeetStream meeting bot API
View as Markdown

Platforms

Zoom, Google Meet, and Microsoft Teams, all through the same API. Google Meet and Teams need zero setup; Zoom needs a one-time Marketplace app setup. Webex and Slack are on the roadmap.

No — one create_bot call with the meeting link. MeetStream detects the platform from the URL. Platform differences that do exist (Zoom’s recording-permission gate, per-participant isolation levels, timeout defaults) are documented on the Zoom, Google Meet, and Teams pages.

Getting started

Every request sends Authorization: Token YOUR_API_KEY — literally the word Token, not Bearer. Keys come from the dashboard and are scoped per workspace. An invalid key returns 401. See Authentication.

Two fields: meeting_link and bot_name. A successful create returns 201 with the bot_id you’ll use for everything else. See the quickstart.

Yes, two: the API Playground in the dashboard (a visual bot builder with live preview and generated code), and the CLI (npx @meetstream/cli).

Recording & data

GET /bots/{bot_id}/get_audio and /get_video return presigned URLs (audio links valid 1 hour, video links 10 minutes — re-request for fresh ones). Per-participant streams come from /get_audio_streams and /get_recording_streams.

Depends on the platform. Zoom: full isolation — each file is only that participant’s microphone (dedicated SDK stream). Google Meet and Teams: partial isolation — speaker-attributed capture of the meeting audio during each participant’s speaking windows. Details: per-participant audio.

Configurable via recording_config.retention (default 24 hours). When retention expires or you call the delete endpoint, a data_deletion webhook fires and artifact endpoints return 404/410. You can also store recordings in your own S3 bucket. See usage & retention.

GET /bots/{id}/remove_bot makes the bot leave the meeting now — data is kept. DELETE /bots/{id}/delete permanently deletes audio, video, and transcripts.

Transcription

Post-call: meetstream (in-house), deepgram, assemblyai, sarvam, jigsawstack, and meeting_captions (native platform captions, Meet/Teams). Live streaming: deepgram_streaming and assemblyai_streaming. One provider per request. See post-call and live guides.

Yes — POST /bots/{bot_id}/transcribe re-runs transcription on the recorded audio with any provider config, without re-recording anything. List every run with GET /bots/{bot_id}/transcriptions.

Either post-call processing is still running (retry shortly), or you used a streaming-only provider — those deliver text to your live webhook during the meeting and never produce a post-call transcript. See debugging.

Scheduling & webhooks

Yes — connect Google Calendar or Outlook, then schedule per event or enable full auto-join (bots join 1 minute before start). Recurring meetings are supported. See the Scheduling guide.

Use a deduplication_key (same key + same meeting replays the existing bot) and the Idempotency-Key header for safe retries (replay returns 507 with the original bot). Neither charges twice. See Deduplication & Idempotency.

No — delivery is best-effort, and non-2xx or unreachable endpoints are not retried. Test locally with meetstream listen plus a tunnel. See Webhooks and Events.

Building with AI

Yes — the MeetStream MCP server is an action server: it creates bots, pulls transcripts, and sends messages into live meetings. Use the hosted server at https://mcp.meetstream.ai/mcp or run npx @meetstream/mcp locally. There’s also a docs-search MCP at docs.meetstream.ai/_mcp/server.

Append .md to any docs URL for clean Markdown, and start from the index at docs.meetstream.ai/llms.txt. The OpenAPI spec is published at docs.meetstream.ai/openapi.json.

Yes: npx @meetstream/migrate (Node) and meetstream-migrate (PyPI) scan your code and map fields (meeting_urlmeeting_link, transcription_optionsrecording_config.transcript, …). See Migrate from Recall.ai.

Still stuck? Email support@meetstream.ai or check the Debugging guide.