API v2/Released Sep 18, 2026

v2.6.17Latest

Signed-in Teams joins and accurate speaker names

Breaking
  • 2breaking
  • 1new
  • 5improved
  • 1fixed

This release contains breaking changes

Review the breaking changes before upgrading. See the versioning policy for how they are announced and supported.

Microsoft Teams bots that sign in with a Microsoft account now join reliably, and transcripts name the right person from the first second of the meeting. Two changes affect values you may already be storing, so check the breaking changes if you branch on end reasons or keep speaker names.

Breaking Changes

  • TEAMS_LOGIN_FAILED_TIMEOUT replaces TIMEOUT_WAITING_TO_START for Teams bots configured with teams_config.fallback: "fail". When Microsoft sign-in succeeds but Teams opens the meeting as a guest, the bot previously waited on the join screen until the waiting-room timeout. It now ends as soon as the sign-in retries are exhausted, with the message "Microsoft sign-in completed, but Teams did not open the meeting with the signed-in account." Who is affected: integrations that branch on a Teams bot's end reason. What to do: handle the new value, and expect the failure webhook to arrive earlier than it used to. See Error codes.
  • Speaker names in Microsoft Teams transcripts change value for affected meetings. A name that previously came back with "External", "Unfamiliar" or "Unverified" appended is now returned without it. Who is affected: anyone storing Teams speaker names or matching them against a roster of their own. What to do: update stored values that carry that badge text. Before: "Jane Doe External unfamiliar" → After: "Jane Doe"

New Features

  • GET /public/bots/analytics returns aggregated, non-sensitive bot statistics — platform, timestamps, duration and status — and needs no authentication. It powers the Meeting BaaS status page. It takes offset, limit (max 5000), start_date, end_date, meeting_url_contains, status_type, status_category, status_priority and user_reported_error_json; results come back newest first, and an unparseable date is rejected with 400.

Improvements

  • Signed-in Teams bots recover when Teams opens the meeting as a guest. A bot could complete sign-in and still be handed the guest join screen, where it waited on a greyed-out "Join now" until the join timeout — even with teams_config.fallback set to anonymous. The bot now recognises that screen, retries the sign-in up to twice, and then applies the fallback you configured: anonymous joins as a guest under the bot's name and records the meeting, fail ends the bot immediately.
  • Personal Microsoft Teams (free) meetings can be joined as the signed-in account. A teams.live.com link only ever offers a work account the guest screen, so the bot now opens these meetings from the Teams calendar by meeting ID. If that route is unavailable for your bot account, the bot opens the link as before and the retry above recovers the signed-in join.
  • The opening seconds of a Teams meeting are attributed to the right person. Teams speaker observation now runs from the moment the bot enters the meeting, as it already did for Google Meet, so speech at the very start is named instead of being labelled "Unknown".
  • Speakers that could not be identified are named more often, on both Meet and Teams. When a speaker cannot be resolved from the meeting's own data, the bot names them from what is on screen while the meeting is running. Identities already resolved stay authoritative, and a name arriving late no longer renumbers the speaker.
  • Long meetings keep naming speakers through to the end. A meeting running on on-screen speaker detection could stop naming speakers after about an hour; that now covers meetings of around four and a half hours.

Bug Fixes

  • Two people are no longer merged into one speaker. In a small number of meetings the platform's own speaker data pinned a two-person conversation on a single name while the on-screen speaking indicator showed both. The bot now detects that disagreement at the end of the meeting and uses the better-corroborated source. Every other meeting is attributed exactly as before.

↩ All releases

On this page