> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetstream.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetstream.ai/_mcp/server.

# FAQ

> Answers to common MeetStream questions: supported platforms, authentication, recording retrieval, retention, per-participant streams, scheduling, webhooks, and AI tooling.

## Platforms

#### Which meeting platforms does MeetStream support?

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](/guides/platforms/zoom). Webex and Slack are on the roadmap.

#### Do I need different code per platform?

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](/guides/platforms/zoom), [Google Meet](/guides/platforms/google-meet), and [Teams](/guides/platforms/microsoft-teams) pages.

#### What meeting link formats work?

Standard invite links: `https://meet.google.com/xxx-xxxx-xxx`, `https://zoom.us/j/<id>` (with `?pwd=` when the meeting is password-protected), and `https://teams.microsoft.com/l/meetup-join/...`.

## Getting started

#### How do I authenticate?

Every request sends `Authorization: Token YOUR_API_KEY` — literally the word `Token`, not `Bearer`. Keys come from the [dashboard](https://app.meetstream.ai/api-key) and are scoped per workspace. An invalid key returns 401. See [Authentication](/api-reference/authentication).

#### What's the minimum request to put a bot in a meeting?

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](/guides/get-started/create-your-first-bot).

#### Is there a way to try the API without writing code?

Yes, two: the [API Playground](/guides/get-started/api-playground) in the dashboard (a visual bot builder with live preview and generated code), and the [CLI](/build-with-ai/meetstream-cli) (`npx @meetstream/cli`).

## Recording & data

#### How do I get the recording after the meeting?

`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`.

#### What does per-participant audio actually contain?

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](/guides/transcription-recordings/per-participant-audio).

#### How long is my data kept?

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](/guides/features/custom-storage-configurations). See [usage & retention](/guides/features/usage-and-retention).

#### What's the difference between removing and deleting a bot?

`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

#### Which transcription providers can I use?

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](/guides/transcription-recordings/post-call-transcription) and [live](/guides/transcription-recordings/live-transcription) guides.

#### Can I re-transcribe a meeting with a different provider?

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`.

#### Why is my transcript missing after the bot stopped?

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](/guides/help/debugging-bots).

## Scheduling & webhooks

#### Can bots join meetings automatically from my calendar?

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](/guides/features/scheduling-bots).

#### How do I avoid duplicate bots?

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](/guides/features/deduplication-idempotency-keys).

#### Are webhooks retried?

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](/guides/webhooks/webhooks-and-events).

## Building with AI

#### Can my AI agent use MeetStream directly?

Yes — the [MeetStream MCP server](/build-with-ai/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`.

#### Are these docs readable by LLMs?

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

#### I'm migrating from Recall.ai — is there tooling?

Yes: `npx @meetstream/migrate` (Node) and `meetstream-migrate` (PyPI) scan your code and map fields (`meeting_url`→`meeting_link`, `transcription_options`→`recording_config.transcript`, …). See [Migrate from Recall.ai](/migration/migrate-from-recall).

Still stuck? Email [support@meetstream.ai](mailto:support@meetstream.ai) or check the [Debugging guide](/guides/help/debugging-bots).