Microsoft Teams integration
The MeetStream Microsoft Teams integration takes a Teams meeting link and puts a bot in the call. It records, streams and transcribes, with no Azure app registration.
What you get with Microsoft Teams
A Teams join link is the whole setup, and one request reaches every artefact the call produces.

One API call, and nothing to register.
Mixed audio too, plus video segments for each person and MP4 recordings.
Over WebSocket, with live or post-call transcripts.
Bots join by themselves from Microsoft 365 calendars, through Outlook.
The bot sends chat messages, images and GIFs into the meeting, and returns the chat log, per-person data and a speaker timeline afterwards.
Why is my Teams bot stuck in the lobby?
Most tenants hold external participants in the lobby, so an organiser admits the bot.
- The widest waiting windowTeams accepts up to 1800 seconds, with 600 as the default.
- Admission as an eventA webhook tells you the moment the bot is admitted, or that the window ran out.
- Recording within a secondTeams admits and records in one step, so capture starts on arrival.
The timeouts you can set
| Timeout | Default | What it does |
|---|---|---|
| Waiting room | 600 s, up to 1800 on Teams | How long the bot waits to be admitted before it leaves |
| Nobody joined | 600 s | Leaves when it is the only one in the meeting |
| Everyone left | 300 s | Leaves after the last person leaves |
| Nobody speaking | 100 s | Leaves after this much silence, whoever is still in the room |
| Session length | 14400 s, or 4 h | Caps one recording session. Can be raised to 18000 |
Bot detection works on Teams as well. Turn it on and the bot leaves once only other vendors' notetakers remain.
It knows itself by its stable bot ID, so a renamed bot still counts correctly.
curl -X POST https://api.meetstream.ai/api/v1/bots/create_bot \
-H "Authorization: Token $MEETSTREAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"meeting_link": "https://teams.microsoft.com/l/meetup-join/…",
"bot_name": "Notetaker",
"audio_separate_streams": true,
"recording_config": { "transcript": { "provider": { "meetstream": {} } } },
"callback_url": "https://your-app.example.com/meetstream"
}'What you can capture on Teams
One bot returns the media, the transcript and the timeline from a Teams meeting.
- Audio by speakerMixed audio as well, on the same model as Google Meet.
- Video in segmentsA new segment starts when a webcam changes size or a screen share changes resolution.
- Native captionsChoose the meeting captions engine and the bot reads the captions Teams makes.
| Artefact | On Microsoft Teams |
|---|---|
| Per-participant audio | Partial isolation. Capture is tagged by speaker, on the same model as Google Meet, and falls back to the dominant speaker |
| Per-participant video | Webcam up to 854 by 480 at 800 kbps. Screen share up to 1280 by 720 at 2 Mbps, one at a time |
| Composed recording | Composed MP4 and a mixed WAV always produced |
| Real-time audio | 48 kHz PCM16 frames with the dominant speaker's name over your WebSocket |
| Transcripts | Live and post-call with six engines, or Teams' own native captions |
| Chat and images | Messages, images and GIFs into the meeting. Chat log afterwards |
| Participants and timeline | Join and leave events, data on each person, and a speaker timeline down to the byte |
Video segments and the speaker timeline
Each segment is numbered in time order, so a resolution switch is easy to spot in the list.
The speaker timeline maps byte ranges of the mixed audio to participant IDs.
Divide a byte offset by two, then by the sample rate, and you have the moment in seconds. That gives you talk time and clips per speaker.

Auto-join from Outlook
Teams meetings live on Microsoft 365 calendars, so Outlook is the hands-off path.
- Read-only calendar scopesSet up an Azure app, and events sync through Graph delta tokens.
- Tagged as Teams meetingsEach synced event carries its platform, and bots are scheduled one minute before the start.
- Changes arrive as noticesReschedules and cancellations come through Graph change notices.
Teams media bot and participant bot
Microsoft's own route to meeting media is an application-hosted media bot.
Per Microsoft's requirements it is written in C# and runs on Windows Server in Azure, at one or two media sessions per CPU core.
A participant bot joins from a link instead. It works on any tenant, and it behaves exactly as it does on Zoom and Meet.
The Teams API page sets the two side by side, with Microsoft's documentation as the source.
One MeetStream user can hold up to 200 calendar connections.
Enterprise-level security, keep your data private.
The certificate, the audit status and the Trust Center are all on the security page.
MeetStream is ISO 27001 certified. SOC 2 Type 2 is under audit rather than complete.
MeetStream is GDPR compliant, and bots run in the United States by default.
The bot joins as a participant, with no Graph permission of its own.
Teams bot limits and defaults

Got a question? We got the answer.
Common questions about Teams bots. Lobby behaviour, what is captured, and how calendar joining works.
Do I need Microsoft tenant admin access to add a bot?
A meeting link is all it takes. The bot joins as a participant, with nothing registered in Azure and no Graph permission of its own. A tenant admin comes in for the Outlook calendar integration, which does use an app registration.
Does Teams support per-participant streams?
Partly. MeetStream tags audio by speaker, on the same model as Google Meet, and adds video segments for each person. For full per-microphone isolation, the Zoom SDK is the one that provides it.
Is there a recording permission gate on Teams?
Teams admits and records in one step. Recording starts within about a second of arrival, on the first audio frame. Tenants can still hold external participants in the lobby, which is what the waiting-room window covers.
Can I read and post in the Teams meeting chat?
Yes. One call posts text into the chat, another puts an image or GIF on the bot's tile, and the chat log is ready to fetch after the meeting.
Can I use Teams native captions?
Yes. Choose the meeting captions engine and the bot reads the captions Teams makes.
Why are there several video segments for one participant?
A new segment starts when a webcam changes size or a screen share changes resolution. Each one is numbered in time order, so you can stitch them back together.
Can bots auto-join Teams meetings from a calendar?
Yes. Connect a Microsoft 365 calendar through the Outlook integration. Synced events are tagged as Teams meetings, and bots are scheduled onto them.
A bot in any Teams meeting, from the link.
No tenant setup, one request, and every artefact your product needs when the call ends.
Send a bot to a Teams meeting now
No tenant setup, one request, and every artefact your product needs when the call ends.