Microsoft Teams · API-first · Apache 2.0

Microsoft Teams
Transcription
API

Real-time Microsoft Teams transcription via open-source REST API. Drop a bot into any Teams meeting, get live transcripts with speaker diarization. Self-host on Docker or Kubernetes, or use Vexa cloud.

No credit card required
Starred by 2k+ developers on GitHub
vexa · live transcript
LIVE

Waiting for meeting participants…

Connected · Google Meet
Teams
Meet
Vexa
🦀
Real-time Meeting Data for AI

Feed meetings into your AI. Live.

AI needs data, and the best data is real-time. Vexa streams transcripts, audio, and context from any meeting straight to your models and agents — as it happens.

Built for Microsoft Teams

Vexa drops a meeting bot into Microsoft Teams calls and streams live transcripts back through a REST API. The bot joins via the public Teams web client — no Microsoft 365 add-on, no per-tenant licensing, no admin consent flow for unmanaged tenants. Transcripts are powered by Whisper running locally or in our hosted cloud, so audio never leaves infrastructure you control when you self-host. The same API surface also covers Google Meet and Zoom, so a single integration handles every platform your customers use.

  • Join any Teams meeting via numeric meeting ID + passcode — no tenant admin consent for unmanaged tenants
  • Real-time transcripts with speaker diarization, streamed via WebSocket or polled via REST
  • Apache 2.0 license — self-host the bot pod + Whisper service entirely within your VPC for GDPR / SOC 2 control
Drop a bot into a Microsoft Teams meeting
# Extract from https://teams.live.com/meet/1234567890123?p=YOUR_PASSCODE
#   native_meeting_id = "1234567890123"
#   passcode          = "YOUR_PASSCODE"

curl -X POST "$API_BASE/bots" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "platform": "teams",
    "native_meeting_id": "1234567890123",
    "passcode": "YOUR_PASSCODE",
    "transcribe_enabled": true,
    "transcription_tier": "realtime"
  }'

# Poll transcripts
curl "$API_BASE/transcripts/teams/1234567890123" \
  -H "X-API-Key: $API_KEY"

Set $API_BASE to https://api.cloud.vexa.ai (hosted) or http://localhost:8056 (self-host). Get $API_KEY from /get-started.

Microsoft Teams transcription FAQ

Things developers and buyers usually want to know before they wire Microsoft Teams up.

Will my IT department block a Teams bot?

For unmanaged tenants Vexa joins the public Teams web client like any guest, so no admin consent is required. For managed tenants where guest access is locked down, the meeting organizer needs to admit the bot from the lobby — same flow as inviting any external participant. We have customers running Vexa in regulated environments (legal, financial services) — the bot is auditable and runs in pods you control when self-hosted.

How does Vexa compare to the Microsoft 365 transcription add-on?

The native Teams transcription feature requires a per-user Microsoft 365 license, only writes transcripts to the meeting organizer's OneDrive after the meeting ends, and gives you no programmatic access to live transcript chunks. Vexa is an API: you POST a meeting URL and receive transcripts as they happen, with no Microsoft licensing dependency.

What happens with speaker identification for large meetings?

For meetings with up to 4 active speakers, diarization is solid. For meetings with 5+ active speakers, accuracy degrades — we're honest about this and the fix is in flight (see GitHub issue #317). If you're building for board meetings or multi-party events with strict speaker-attribution requirements, talk to us before relying on it in production.

Which Teams URL formats are supported?

Personal teams.live.com links, enterprise teams.microsoft.com short and deep links, legacy /meetup-join/ URLs (via MCP), US Government gov.teams.microsoft.us, and DoD dod.teams.microsoft.us. See the platform doc for the full table.

Can I self-host the Teams bot inside my own VPC?

Yes — the entire stack is Apache 2.0 and ships as Docker images plus a Helm chart. Audio capture, Whisper transcription, and the API server all run in your Kubernetes cluster. We have customers running Vexa fully air-gapped with on-premise GPU nodes for the Whisper service. See the deployment guide.

Common patterns

What teams build with the Microsoft Teams API

Three shapes we see repeatedly across customers integrating Vexa with Microsoft Teams.

01Pattern 1

Enterprise sales-call capture

Scenario

Sales reps run discovery and demo calls on Teams. You want every conversation transcribed, summarized, and synced to CRM (HubSpot / Salesforce) without a human notetaker.

What you get

Push a bot into each scheduled call via your CRM hook, deliver structured transcripts to the deal record, and trigger downstream automations on key phrases. No license collision with M365 transcription, full control of where the data lands.

02Pattern 2

Customer-success live coaching

Scenario

CS managers want real-time visibility into how reps handle escalations on Teams. You need streaming transcript chunks during the call, not a post-meeting OneDrive dump.

What you get

Subscribe to the websocket stream, run sentiment / keyword detection on chunks as they arrive, and surface coaching prompts in your internal app while the call is still live.

03Pattern 3

Compliance & legal-hold capture

Scenario

Regulated industries (financial advice, healthcare consults, legal intake) need every Teams call recorded and transcribed for legal hold, with audio data residency under your control.

What you get

Self-host Vexa in your VPC. Audio and transcripts never leave your infrastructure. Searchable transcripts go straight to your archive — audit trail attached to every recording.

Quickstart

Get a Microsoft Teams bot live in 5 minutes

The full flow from sign-up to first transcript — no SDK install, no Marketplace approval, no admin consent for unmanaged tenants.

  1. 1

    Get an API key

    Sign up at vexa.ai/get-started, or run the self-hosted gateway and mint a key locally.

  2. 2

    Extract meeting ID + passcode

    From a Teams join URL like teams.live.com/meet/1234567890123?p=PASSCODE, take the digits as native_meeting_id and the ?p= value as passcode.

  3. 3

    POST /bots

    Send the platform, native_meeting_id, and passcode. The bot joins the meeting in 5-10 seconds.

  4. 4

    Receive transcripts

    Poll GET /transcripts/teams/{native_meeting_id} every few seconds, or set up a webhook for push delivery.

  5. 5

    Stop the bot

    DELETE /bots/{bot_id} when the meeting ends — or let it leave automatically when participants drop.

How it works under the hood

Microsoft Teams architecture

Vexa joins via the public Teams web client in a Playwright-driven bot pod. Audio is captured from the browser session, streamed to a Whisper-large-v3-turbo transcription service, and emitted as transcript chunks. The same pipeline runs in Vexa cloud or in your Kubernetes cluster when self-hosted. No Marketplace approval, no per-tenant OAuth flow, no native SDK dependency.

Pipeline

bot pod audio capture whisper-svc transcript chunks REST / WebSocket
Pricing

Pay only for
what you use

Self-host for free, or let us run it for you. Simple usage-based pricing—no per-seat tax.

Free
$0

Apache 2.0 · Self-host forever

Best for teams who need full control

View on GitHub
Full platform — no limits
Your infrastructure, your data
Google Meet + Teams + Zoom
Docker Compose / K8s deploy
REST API + WebSockets + Dashboard
Community support
Individual
$12/mo

1 bot · Flat monthly · Everything included

Best for personal use — 1 meeting at a time

No credit card required

1 concurrent bot
Google Meet + Teams + Zoom
Real-time transcription included
Audio capture + webhooks
12-month audio storage
REST API + WebSockets + Dashboard
Pay-as-you-go
$0.30/hr

Bot infrastructure · +$0.20/hr transcription

Best for teams & API builders · $5 free credit

No credit card required

Unlimited bots
Google Meet + Teams + Zoom
Transcription add-on: +$0.20/hr
Audio capture + webhooks
12-month audio storage
REST API + WebSockets + Dashboard
Enterprise

On-premises, OpenShift, Kubernetes. Dedicated support + SLA.

Book a call
Transcription API

For self-hosted Vexa bot users. Transcription only — $0.002/min.

Get started
Bot: Vexa $0.30/hr vs Recall.ai $0.50/hr —40% cheaper

Frequently asked questions

What's included in the $0.30/hr Bot Service?

The base rate covers bot infrastructure: audio capture, webhooks, and 12 months of audio storage across Google Meet, Microsoft Teams, and Zoom. Add real-time transcription for +$0.20/hr ($0.50/hr total).

Which plan is right for me?

Choose Individual ($12/mo) if you need one bot for personal use—it includes real-time transcription, storage, and the Dashboard. Choose Pay-as-you-go ($0.30/hr) if you need multiple simultaneous bots or want to pay only for what you use—ideal for teams and API integrations. Both plans include Google Meet and Microsoft Teams support. Self-host for free from GitHub if you need full data control.

How does the free credit work?

Every new account gets $5 in free bot credit—no credit card required. That covers ~16 hours of bot time at $0.30/hr. All features are available: audio capture, transcription, real-time data, and full API access.

Can I self-host Vexa?

Yes. Vexa is Apache 2.0 licensed and fully self-hostable. Deploy with Docker Compose, Kubernetes, or OpenShift on your own infrastructure with complete data sovereignty.

How does Vexa compare to Recall.ai?

Vexa is open source, self-hostable, and up to 40% cheaper. Bot: $0.30/hr vs Recall.ai ~$0.50/hr. Transcription add-on: $0.20/hr vs ~$0.15/hr. See our detailed comparison.

What's the Individual plan for?

The Individual plan ($12/mo) is for single users who need one concurrent bot with unlimited meetings. It includes real-time transcription, recording, storage, REST API, WebSockets, and the UI Dashboard—everything you need for personal meeting intelligence. It supports Google Meet and Microsoft Teams, with Zoom coming soon.

Ready when you are

Start with Microsoft Teams.
First transcript in 5 minutes.

No credit card, no Marketplace approval, no admin consent for unmanaged tenants. Get an API key, POST a meeting URL, receive transcripts.

Apache 2.0 · Self-host or cloud · No credit card required