Meeting URL's

Meeting URL Regex

Most times, developers will validate the meeting URL by calling the Create Bot endpoint, seeing a 400 response that includes an error message saying the meeting URL is invalid. We generally recommend this flow to verify whether meeting URLs are valid.

That said, there are rare cases where you want to check the Meeting URL before you attempt to schedule/create a bot. In these cases, you can use the following regex snippets to verify the meeting URL before creating a bot.

📘

Changes to meeting URL regex

Meeting URL regex is rarely updated as the meeting platforms don't often update their meeting URL formats.

That said, if there are changes to meeting URLs, the scope of the meeting URL will strictly increase to include new formats.

If you notice we support a new meeting URL format that differs from your regex, feel free to reach out for the latest updates and we can share the updated list of meeting URL regex.

Zoom

# Bare Zoom meeting link with optional password/tk in query or legacy passcode text
zoom\.(us|com)\/(?:j|s|wc\/join)\/(?P<id>[0-9]+)
(
    (\?pwd=(?P<password>[^&#,<"\n ]+)) |
    (\?tk=(?P<tk>[^&#,<"\n ]+)) |
    (\ \(Password:\ (?P<password_legacy>.+)\)) |
    (\ \(Passcode:\ (?P<password_legacy_2>.+)\)) |
    ([?&=a-zA-Z0-9_\-%]{1,64}\&pwd=(?P<password_later_in_query_string>[^&#,<"\n ]+)) |
    ([?&=a-zA-Z0-9_\-%]{1,64}\&tk=(?P<tk_later_in_query_string>[^&#,<"\n ]+))
)?

# Zoom personal link (/my/...)
zoom\.(us|com)\/my\/(?P<id>\w+)

# Zoom webinar link (/w/<id>) with optional tk/pwd
zoom\.(us|com)\/w\/(?P<id>\w+)
(\?tk=(?P<tk>[^&#,<"\n ]+))?
((.*)pwd=(?P<password>[^&#,<"\n ]+))?

Google Meet

(http.+)?meet\.google\.com\/(?P<id>\w{3}-\w{4}-\w{3})

Microsoft Teams

# Teams meetup-join deep link with JSON context; captures thread_id, message_id, context
http.+meetup-join\/
(?P<thread_id>.+)\/
(?P<message_id>[0-9]+)
\?context=(?P<context>\{.+\})&?

# Teams message deep link with query string; captures thread_id, message_id, query
http.+message\/(?P<thread_id>.+)\/(?P<message_id>[0-9]+)\?(?P<query>[^<\s.]+)

# Teams meetup-join deep link with URL-encoded context; captures thread_id, message_id, context
http.+meetup-join\/(?P<thread_id>.+)\/(?P<message_id>[0-9]+)\?context=(?P<context>[^& ]+)

# Teams personal meeting invite (teams.live.com) with optional password parameter "p"
https://teams\.live\.com/meet/(?P<meeting_id>[0-9]+)((.*)p=(?P<meeting_password>[^&#,<"\n >]+))?

# Teams short business meeting invite (teams.microsoft.com) with optional password parameter "p"
https://teams\.microsoft\.com/meet/(?P<meeting_id>[0-9]+)((.*)p=(?P<meeting_password>[^&#,<"\n >]+))?

Webex

\.webex\.com\/(?P<path>.+)\/j\.php\?(.+)?MTID=(?P<mtid>[^&\s]+)

GoTo Meeting

(http.+)?(app\.goto\.com\/meeting|meet\.goto\.com|gotomeet\.me)\/(?P<id>[\w/-]*\w)

Meeting URL API Response

Zoom

"meeting_url": {
  "meeting_id": string,
  "meeting_password": string | null,
  "platform": "zoom"
}

Google Meet

"meeting_url": {
  "meeting_id": string,
  "platform": "google_meet"
}

Microsoft Teams

"meeting_url": {
  "meeting_id": string | null,
  "meeting_password": string | null,
  "organizer_id": string | null,
  "tenant_id": string | null,
  "message_id": string | null,
  "thread_id": string | null,
  "business_meeting_id": string | null,
  "business_meeting_password": string | null,
  "platform": "microsoft_teams" | "microsoft_teams_live"
}
📘

Microsoft Teams URL differences

Microsoft Teams meeting URL use different parameters depending on the Teams version being used.

The table below shows what you can expect for each Teams version meeting URL.

VersionBase URLNon-null Parameters
Teams for Businessteams.microsoft.comorganizer_id
tenant_id
message_id
thread_id
Teams for Personal useteams.live.commeeting_id
meeting_password

Webex

"meeting_url": {
  "meeting_subdomain": string,
  "meeting_mtid": string,
  "meeting_path": string,  
  "platform": "webex"
}

// or 

"meeting_url": {
  "meeting_subdomain": string,
  "meeting_personal_room_id": string,
  "platform": "webex"
}

GoTo

  "meeting_url": {
    "meeting_id": "680504437",
    "platform": "goto_meeting"
  }