We’re developing a React Native app using @zoom/meetingsdk-react-native that allows users to join Zoom meetings via the Meeting SDK. During our initial testing and development phase, we joined
20+ different meetings in a relatively short period using the same SDK key/secret pair. All joins were successful.
After that testing burst, every subsequent joinMeeting call now fails immediately with Error: fail — the error is thrown by the native bridge before any network connection is attempted. This
affects all meetings, including the developer’s own Personal Meeting Room.
What we’ve ruled out:
- Meeting password: We tested with and without the password parameter (empty string). Same result.
- ZAK token: Valid ZAK token is being passed. Joins were working with ZAK before the failures started. Removing ZAK doesn’t help either.
- Meeting number: Confirmed valid meeting numbers. Tried multiple different meetings.
- SDK initialization: SDK initializes successfully (ready state), the failure only occurs on joinMeeting.
- Code changes: We reverted to the exact same SDK call configuration that was working previously — joinMeeting({ meetingNumber, userName, password: “”, zoomAccessToken: zakToken }). Same
failure. - App restart / device restart: No change.
Our SDK call:
const statusCode = await zoom.joinMeeting({
meetingNumber: “…”,
userName: “…”,
password: “”,
zoomAccessToken: zakToken, // valid ZAK from /users/me/token?type=zak
})
Environment:
- @zoom/meetingsdk-react-native (latest)
- React Native 0.81 / Expo 54
- iOS (physical device)
- Meeting SDK app type (not OAuth app)
Questions:
- Is there a rate limit on the number of joinMeeting calls per hour/day for a given SDK key/secret pair?
- If so, what are the limits, and is there documentation on this? We couldn’t find any mention of join rate limits in the SDK docs.
- Is there a cooldown period, or does the limit reset on a fixed schedule (hourly, daily)?
- Is there a way to check current rate limit status via API?
Any guidance would be appreciated. The immediate Error: fail from the native bridge with no error code or descriptive message makes this very difficult to debug from our side.
