API v2/Released Sep 14, 2026

v2.6.14

Zoom bots no longer stick in the waiting room, and end reasons are accurate

Breaking
  • 3breaking
  • 1new
  • 4improved
  • 3fixed

This release contains breaking changes

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

Zoom bots could sit in the waiting room for hours, and bots that were never admitted often reported a misleading reason. Every bot now reaches a final status, and the reason names what actually happened. Waiting-room status and billing also start when the bot asks to be admitted, not when it opens the meeting page.

Breaking Changes

  • A Zoom meeting whose host never started it now ends with WAITING_FOR_HOST_TIMEOUT, not TIMEOUT_WAITING_TO_START. Who is affected: integrations that branch on a bot's end reason. What to do: handle the new value; it is not billed, where TIMEOUT_WAITING_TO_START is. Failures that used to arrive as ZOOM_LOADING_STALLED are now split between this, TIMEOUT_WAITING_TO_START (the host did not admit the bot) and ZOOM_ANONYMOUS_JOIN_NOT_ALLOWED (Zoom blocked the bot). See Error codes.
  • in_waiting_room is sent when the bot asks to be admitted, not when it opens the meeting page. Who is affected: anyone measuring lobby time from this status, or expecting it on every bot. What to do: a bot that fails before asking to join no longer sends in_waiting_room at all. Waiting-room charges for TIMEOUT_WAITING_TO_START and BOT_NOT_ACCEPTED now start from that first status, and a bot that never asked to join is billed zero waiting-room time rather than from its creation.
  • joined_at is absent for a bot that was never admitted. Who is affected: integrations reading joined_at as a proxy for "the bot ran". What to do: treat a missing joined_at as never admitted, and use the bot's status for its lifecycle.

New Features

  • Bots now emit the bot.chat_status webhook introduced in v2.6.13, so the event starts arriving for real meetings.

Improvements

  • An anti-bot block seen on an earlier attempt stays the reported reason, instead of being replaced by a vaguer failure from the last retry.
  • Every bot reports a final status, including after a shutdown race or a failure on the last retry. A bot stopped at its maximum session length reports RECORDING_TIMEOUT rather than rejoining the meeting hours later.
  • POST /v2/bots/{bot_id}/leave now works while a bot is still joining, not only once it is in the meeting.
  • Teams bots admitted just before the waiting-room deadline no longer fail during their final setup, and the Join control is found in meetings that render it inside an embedded frame.

Bug Fixes

  • Zoom bots no longer stay stuck showing "in waiting room" for hours.
  • Zoom bots admitted after a long wait in the lobby now record, instead of giving up at the moment they get in.
  • Zoom bots no longer leave a live meeting early when the meeting page blocks one of the bot's scripts.

↩ All releases

On this page