Skill 126 · Zoom Meeting SDK Windows
Subchapter 126.22
troubleshooting/common-issues.mdMarkdown22 KBView on GitHub
Build issues = Problems during compilation (Visual Studio errors) Runtime issues = Problems when running the executable (authentication, joining meetings)
Use this flowchart:
Does your code compile?
├─ NO → See "Build Issues Checklist" below
└─ YES → Does authentication succeed?
├─ NO → See "Authentication Issues" below
└─ YES → Does meeting join succeed?
├─ NO → See "Meeting Join Issues" below
└─ YES → Does video capture work?
├─ NO → See "Video Capture Issues" below
└─ YES → You're all set!Symptoms:
Error C2061: syntax error: identifier 'uint32_t'Error C3646: 'GetAudioJoinType': unknown override specifierError: use of undefined type 'YUVRawDataI420'Checklist:
#include <windows.h> is the FIRST include in every file#include <cstdint> is right after <windows.h> in every filemeeting_audio_interface.h is included BEFORE meeting_participants_ctrl_interface.hzoom_sdk_raw_data_def.h is included when using raw video dataFix: See Build Errors Guide for detailed solutions.
Symptoms:
Error C2259: 'AuthServiceEventListener': cannot instantiate abstract classnote: due to following members: 'void IAuthServiceEvent::onNotificationServiceStatus(...)': is abstractChecklist:
IAuthServiceEvent (6 methods)IMeetingServiceEvent (9 methods)#if defined(WIN32))override keyword to catch signature mismatchesFix: See Interface Methods Guide for complete method lists.
Symptoms:
LNK2019: unresolved external symbolError: Cannot open file 'sdk.lib'Checklist:
$(SolutionDir)SDK\x64\libsdk.lib to Project Properties → Linker → Input → Additional Dependenciessdk.dll) is in the same directory as the executable or in PATHFix:
$(SolutionDir)SDK\x64\libsdk.libSDK\x64\bin\sdk.dll to your output directorySymptoms:
onAuthenticationReturn() callback NEVER firesRoot Cause: 99% of the time, this is a missing Windows message loop, NOT a JWT token issue!
Checklist:
PeekMessage() loop during authentication waitPeekMessage() loop in main event loopPM_REMOVE flag with PeekMessage()TranslateMessage() and DispatchMessage() for each messageFix: See Windows Message Loop Guide for complete solution.
Quick test: Add this minimal message loop:
while (!g_authenticated) {
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}If onAuthenticationReturn() suddenly fires, you confirmed the issue was the message loop.
Symptoms:
onAuthenticationReturn() fires but with non-success codeAuthentication Error Codes:
| Code | Enum Value | Meaning | Solution |
|---|---|---|---|
| 0 | AUTHRET_SUCCESS | ✅ Success | N/A |
| 1 | AUTHRET_KEYORSECRETEMPTY | JWT token or app secret is empty | Verify JWT token string is not empty |
| 2 | AUTHRET_JWTTOKENWRONG | Invalid JWT token format or signature | Regenerate JWT token, verify app credentials |
| 3 | AUTHRET_OVERTIME | JWT token expired | Regenerate JWT with fresh timestamp |
| 4 | AUTHRET_NETWORKISSUE | Network connection problem | Check firewall, proxy settings, internet connection |
| 16 | AUTHRET_CLIENT_INCOMPATIBLE | SDK version incompatible with Zoom service | Update SDK to latest version |
Checklist:
How to regenerate JWT token:
// Node.js example
const jwt = require('jsonwebtoken');
const token = jwt.sign(
{
appKey: 'YOUR_SDK_KEY',
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 7200, // 2 hours
tokenExp: Math.floor(Date.now() / 1000) + 7200
},
'YOUR_SDK_SECRET'
);Symptoms:
onMeetingStatusChanged() fires with MEETING_STATUS_FAILEDMeeting Error Codes:
| Code | Enum Value | Meaning | Solution |
|---|---|---|---|
| 0 | MEETING_SUCCESS | ✅ Success | N/A |
| 1 | MEETING_FAIL_NETWORK_ERR | Network error | Check internet connection |
| 2 | MEETING_FAIL_RECONNECT_ERR | Reconnection failed | Retry joining |
| 3 | MEETING_FAIL_MMR_ERR | Multi-media router error | Contact Zoom support |
| 4 | MEETING_FAIL_PASSWORD_ERR | Wrong meeting password | Verify password |
| 5 | MEETING_FAIL_SESSION_ERR | Invalid meeting session | Verify meeting number |
| 6 | MEETING_FAIL_MEETING_OVER | Meeting has ended | Join a different meeting |
| 7 | MEETING_FAIL_MEETING_NOT_START | Meeting hasn’t started | Wait for host to start |
| 8 | MEETING_FAIL_MEETING_NOT_EXIST | Invalid meeting number | Verify meeting number |
| 9 | MEETING_FAIL_MEETING_USER_FULL | Meeting at capacity | Wait for slot or use livestream |
| 10 | MEETING_FAIL_CLIENT_INCOMPATIBLE | SDK version incompatible | Update SDK |
Checklist:
SDK_UT_WITHOUT_LOGIN user type for JWT authFix for common issues:
// Correct join pattern
JoinParam joinParam;
joinParam.userType = SDK_UT_WITHOUT_LOGIN; // REQUIRED for JWT auth
JoinParam4WithoutLogin withoutLoginParam;
withoutLoginParam.meetingNumber = 1234567890; // Your meeting number
withoutLoginParam.userName = L"Bot User";
withoutLoginParam.psw = L"meeting_password"; // Empty if no password
withoutLoginParam.vanityID = nullptr;
withoutLoginParam.customer_key = nullptr;
withoutLoginParam.webinarToken = nullptr;
withoutLoginParam.isVideoOff = false;
withoutLoginParam.isAudioOff = false;
joinParam.param.withoutloginuserJoin = withoutLoginParam;
meetingService->Join(joinParam);Symptoms:
SetEvent() called but callbacks never executeChecklist:
new to allocate listener (SDK manages lifecycle)Fix:
// CORRECT: Set listener before SDK actions
AuthServiceEventListener* authListener = new AuthServiceEventListener(&OnAuthComplete);
authService->SetEvent(authListener);
authService->SDKAuth(authContext); // Now callbacks will work
// WRONG: Set listener after
authService->SDKAuth(authContext);
authService->SetEvent(authListener); // Too late!Symptoms:
onRawDataFrameReceived() never firesonRawDataStatusChanged() fires but no framesChecklist:
StartRawRecording() after joining meetingSubscribe(userId, Raw_Video_On)IZoomSDKRendererDelegate interface correctlyCreateRawdataRenderer()setRawDataResolution(...) and subscribe(...)Fix: See Raw Video Capture Guide for complete workflow.
Quick test:
// After successfully joining meeting
IMeetingRecordingController* recordingCtrl = meetingService->GetMeetingRecordingController();
recordingCtrl->StartRawRecording();
IZoomSDKVideoSource* videoSource = rawDataHelper->GetRawdataVideoSourceHelper();
videoSource->subscribe(userId, Raw_Video_On);Symptoms:
Checklist:
width * height * 1.5 bytes (not width * height * 3)width * height bytes(width/2) * (height/2) bytes(width/2) * (height/2) bytesYUV420 Layout:
Width: 1920, Height: 1080
Total bytes: 1920 * 1080 * 1.5 = 3,110,400 bytes
Y plane: [0 to 2,073,599] (1920 * 1080 bytes)
U plane: [2,073,600 to 2,592,639] (960 * 540 bytes)
V plane: [2,592,640 to 3,110,399] (960 * 540 bytes)Symptoms:
AUTHRET_NETWORKISSUE error codeMEETING_FAIL_NETWORK_ERR error codeRequired Firewall Rules:
*.zoom.us*.zoomgov.com (for government)How to test connectivity:
# Test DNS resolution
ping zoom.us
ping us01web.zoom.us
# Test HTTPS connectivity
curl https://zoom.us
curl https://us01web.zoom.usProxy configuration (if required):
InitParam initParam;
initParam.strWebDomain = L"https://zoom.us";
// Add proxy settings if needed
// initParam.proxy = ...; InitParam initParam;
initParam.enableLogByDefault = true; // Enable logs
initParam.enableGenerateDump = true; // Enable crash dumpsLogs location: %APPDATA%\Zoom\logs\ or C:\Users\[username]\AppData\Roaming\Zoom\logs\
void AuthServiceEventListener::onAuthenticationReturn(AuthResult ret) {
std::cout << "[DEBUG] onAuthenticationReturn called! Code: " << ret << std::endl;
// Your logic here
}Set breakpoints in callback methods to verify they’re being called:
onAuthenticationReturn()onMeetingStatusChanged()If breakpoints never hit → Message loop issue If breakpoints hit but code is wrong → Logic issue
Check SDK/x64/version.txt or sdk.dll properties → Details tab
Different versions have different:
This guide is for SDK v6.7.2.26830.
| You See | Do This |
|---|---|
uint32_t error | Add #include <cstdint> after <windows.h> |
AudioType error | Include meeting_audio_interface.h before meeting_participants_ctrl_interface.h |
YUVRawDataI420 error | Include zoom_sdk_raw_data_def.h |
| Abstract class error | Implement ALL virtual methods (see Interface Methods Guide) |
| Authentication timeout | Add Windows message loop (see Message Loop Guide) |
AUTHRET_JWTTOKENWRONG | Regenerate JWT token with correct app credentials |
AUTHRET_OVERTIME | JWT token expired, generate a fresh one |
MEETING_FAIL_PASSWORD_ERR | Wrong meeting password or no password provided |
MEETING_FAIL_MEETING_NOT_EXIST | Invalid meeting number, verify 10-11 digits |
| Callbacks not firing | Add Windows message loop, verify SetEvent() called first |
| No video frames | Call StartRawRecording() and Subscribe() after joining |
This section provides comprehensive error code tables from official Zoom documentation.
| Code | Name | Description |
|---|---|---|
| 0 | SDKERR_SUCCESS | Success |
| 1 | SDKERR_NO_IMPL | This feature is currently not available |
| 2 | SDKERR_WRONG_USEAGE | Incorrect usage of the feature |
| 3 | SDKERR_INVALID_PARAMETER | Wrong parameter |
| 4 | SDKERR_MODULE_LOAD_FAILED | Loading module failed |
| 5 | SDKERR_MEMORY_FAILED | No memory allocated |
| 6 | SDKERR_SERVICE_FAILED | Internal service error |
| 7 | SDKERR_UNINITIALIZE | SDK is not initialized before use |
| 8 | SDKERR_UNAUTHENTICATION | SDK is not authorized before use |
| 9 | SDKERR_NORECORDINGINPROCESS | No recording is in progress |
| 10 | SDKERR_TRANSCODER_NOFOUND | Transcoder module is not found |
| 11 | SDKERR_VIDEO_NOTREADY | The video service is not ready |
| 12 | SDKERR_NO_PERMISSION | No permission |
| 13 | SDKERR_UNKNOWN | Unknown error |
| 14 | SDKERR_OTHER_SDK_INSTANCE_RUNNING | Another SDK instance is in progress |
| 15 | SDKERR_INTERNAL_ERROR | SDK internal error |
| 16 | SDKERR_NO_AUDIODEVICE_ISFOUND | No audio device is found |
| 17 | SDKERR_NO_VIDEODEVICE_ISFOUND | No video device is found |
| 18 | SDKERR_TOO_FREQUENT_CALL | API calls too frequent |
| 19 | SDKERR_FAIL_ASSIGN_USER_PRIVILEGE | User cannot be assigned with the new privilege |
| 20 | SDKERR_MEETING_DONT_SUPPORT_FEATURE | The current meeting does not support the request feature |
| 21 | SDKERR_MEETING_NOT_SHARE_SENDER | The current user is not the presenter |
| 22 | SDKERR_MEETING_YOU_HAVE_NO_SHARE | There is no sharing |
| 23 | SDKERR_MEETING_VIEWTYPE_PARAMETER_IS_WRONG | Incorrect ViewType parameters |
| 24 | SDKERR_MEETING_ANNOTATION_IS_OFF | Annotation is disabled |
| 25 | SDKERR_SETTING_OS_DONT_SUPPORT | Current OS doesn’t support the setting |
| 26 | SDKERR_EMAIL_LOGIN_IS_DISABLED | Email login is disabled |
| 27 | SDKERR_HARDWARE_NOT_MEET_FOR_VB | Computer doesn’t meet minimum requirements for virtual background |
| 28 | SDKERR_NEED_USER_CONFIRM_RECORD_DISCLAIMER | Need to process recording disclaimer |
| 29 | SDKERR_NO_SHARE_DATA | There is no raw data from sharing |
| 30 | SDKERR_SHARE_CANNOT_SUBSCRIBE_MYSELF | Cannot subscribe to my own stream |
| 31 | SDKERR_NOT_IN_MEETING | Not in the meeting |
| Code | Name | Description | Solution |
|---|---|---|---|
| 0 | AUTHRET_SUCCESS | Authentication success | N/A |
| 1 | AUTHRET_KEYORSECRETEMPTY | SDK key or secret is empty | Verify JWT token string is not empty |
| 2 | AUTHRET_KEYORSECRETWRONG | SDK key or secret is incorrect | Check app credentials match |
| 3 | AUTHRET_ACCOUNTNOTSUPPORT | Account does not support SDK | Verify account has SDK access |
| 4 | AUTHRET_ACCOUNTNOTENABLESDK | Account does not have SDK enabled | Enable SDK for account |
| 5 | AUTHRET_UNKNOWN | Unknown error | Check logs |
| 6 | AUTHRET_SERVICE_BUSY | Service is busy | Retry later |
| 7 | AUTHRET_NONE | Initial status | N/A |
| 8 | AUTHRET_OVERTIME | Timeout | Check network, retry |
| 9 | AUTHRET_NETWORKISSUE | Network issues | Check firewall/proxy |
| 10 | AUTHRET_CLIENT_INCOMPATIBLE | Account does not support this SDK version | Update SDK |
| 11 | AUTHRET_JWTTOKENWRONG | JWT token is wrong | Regenerate JWT with correct credentials |
| Code | Name | Description |
|---|---|---|
| 0 | LoginFail_None | Initial status |
| 1 | LoginFail_EmailLoginDisable | Email login is disabled |
| 2 | LoginFail_UserNotExist | User does not exist |
| 3 | LoginFail_WrongPassword | Incorrect password |
| 4 | LoginFail_AccountLocked | Account is locked |
| 5 | LoginFail_SDKNeedUpdate | SDK version is unsupported |
| 6 | LoginFail_TooManyFailedAttempts | Too many failed attempts |
| 7 | LoginFail_SMSCodeError | SMS verification code error |
| 8 | LoginFail_SMSCodeExpired | SMS verification code expired |
| 9 | LoginFail_PhoneNumberFormatInValid | Phone number format invalid |
| 10 | LoginFail_LoginTokenInvalid | Login token is invalid |
| 11 | LoginFail_UserDisagreeLoginDisclaimer | User disagreed login disclaimer |
| 12 | LoginFail_Mfa_Required | MFA is required |
| 13 | LoginFail_Need_Bitrthday_ask | Need to provide DOB information |
| 100 | LoginFail_OtherIssue | Other issue |
| Code | Name | Description |
|---|---|---|
| 0 | BOControllerError_NULL_POINTER | BO controller is null, SDK not initialized |
| 1 | BOControllerError_WRONG_CURRENT_STATUS | Incorrect current status |
| 2 | BOControllerError_TOKEN_NOT_READY | Token is not ready |
| 3 | BOControllerError_NO_PRIVILEGE | No privilege |
| 4 | BOControllerError_BO_LIST_IS_UPLOADING | BO list is uploading |
| 5 | BOControllerError_UPLOAD_FAIL | BO list upload failed |
| 6 | BOControllerError_NO_ONE_HAS_BEEN_ASSIGNED | No user assigned to BO |
| 100 | BOControllerError_UNKNOWN | Unknown error |
| Code | Name | Description |
|---|---|---|
| 0 | PhoneFailedReason_None | Initial status |
| 1 | PhoneFailedReason_Busy | Telephone service is busy |
| 2 | PhoneFailedReason_Not_Available | Service not available |
| 3 | PhoneFailedReason_User_Hangup | User hung up |
| 4 | PhoneFailedReason_Other_Fail | Other failure |
| 5 | PhoneFailedReason_No_Answer | No answer |
| 6 | PhoneFailedReason_Block_No_Host | Call-out blocked before host joins |
| 7 | PhoneFailedReason_Block_High_Rate | Blocked due to high cost |
| 8 | PhoneFailedReason_Block_Too_Frequent | Blocked due to high frequency |
Important Dates:
| Code | Name | Description |
|---|---|---|
| 503 | MEETING_FAIL_USER_LEVEL_TOKEN_NOT_HAVE_HOST_ZAK_OBF | To access raw data with privilege token, must also provide OBF token authorized by host |
| 504 | MEETING_FAIL_APP_CAN_NOT_ANONYMOUS_JOIN_MEETING | Anonymous joins not allowed. Provide ZAK or OBF token |
| 6603 | RESULT_UNKNOWN_ERROR | Account is blocking your Meeting SDK application |
| Code | Description | Solution |
|---|---|---|
| 5 | Failed to create data connection | Check network connection |
| 15 | Failed to send create meeting command | Check HTTP request configuration |
| 1002 | Wrong user password | Check password |
| 1019 | Web login locked after 6 failed attempts | Contact support to reactivate |
| 3023 | SDK authentication failure: invalid SDK key/secret | Check credentials |
| 3024 | Account does not support using SDK | Verify license type |
| 5003 | No response from server in 30 seconds | Retry later |
| 4502 | Invalid recurring meeting - no meeting occurrence | Verify meeting recurrence |
| 5004 | DNS resolve failure | Check network adaptor |
| 102006 | Conference does not exist | Verify meeting number |
| 102011 | Client version lower than minimum required | Download latest SDK |
| 102012 | Client version higher than maximum allowed | Download latest SDK |
| 102014 | Conference token expired | Get new token |
| 103008 | Server is too busy | Retry later |
| 103024 | Account does not support requested feature | Verify account features |
| 103025 | Account does not support call out | Verify call out feature |
| 103037 | Too many pending requests | Reduce request frequency |
| 103039 | Account is in blacklist | Contact support |
| 102004/103001 | Conference already exists | Use different meeting number |
| 102010/103006 | Attendee limit reached | Contact sales for more attendees |
| 102015/103011 | Conference is locked | Contact host to unlock |
| 102016/103014 | Account restricted | Contact support |
Symptom: Error Code 105035 when running the SDK
Root Cause: Re-signing or adding new signatures to protected SDK files
Protected Files (DO NOT re-sign):
CptControl.exeCptHost.exeCptInstall.exeCptService.exeCptShare.dllzzhost.dllzzplugin.dllaomhost64.exeSolution: Skip signing these files during your build/deployment process. If error persists without re-signing, visit the Zoom Developer Forum (opens in a new tab).
%APPDATA%\Zoom\logs\std::cout to all callbacksLast Updated: Based on Zoom Windows Meeting SDK v6.7.2.26830