Video SDK Error: “This account does not exist or does not belong to you” (Error Code 200) - Valid Credentials

Video SDK Error: “This account does not exist or does not belong to you” (Error Code 200) - Valid Credentials

Problem Description

I’m encountering a persistent JOIN_MEETING_FAILED error when attempting to join a Video SDK session using the Web SDK (@zoom/videosdk v2.2.12). The error message states:

{
  type: "JOIN_MEETING_FAILED",
  reason: "This account does not exist or does not belong to you",
  errorCode: 200
}

Important: I have verified multiple times that my SDK Key and SDK Secret are correct and copied directly from the Zoom Marketplace Video SDK app credentials page.

Implementation Details

Backend (JWT Token Generation):

  • Using Deno/Supabase Edge Function
  • JWT signing library: jsrsasign@11.1.0
  • Token generation code:
const header = { alg: 'HS256', typ: 'JWT' };
const payload = {
  sdkKey: sdkKey,              // Verified correct
  mn: cleanMeetingNumber,       // Format: "session-{uuid}"
  role: role === 'host' ? 1 : 0,
  iat: Math.floor(Date.now() / 1000),
  exp: Math.floor(Date.now() / 1000) + 7200,
  appKey: sdkKey,
  tokenExp: Math.floor(Date.now() / 1000) + 7200,
};

const sHeader = JSON.stringify(header);
const sPayload = JSON.stringify(payload);
const zoomToken = KJUR.jws.JWS.sign('HS256', sHeader, sPayload, sdkSecret);

Frontend (Web SDK Implementation):

import ZoomVideo from '@zoom/videosdk';

const client = ZoomVideo.createClient();
await client.join(sessionName, token, userName);
// Fails with error 200

What I’ve Verified

:white_check_mark: SDK Credentials: Copied directly from Zoom Marketplace, correct SDK Key and Secret
:white_check_mark: JWT Structure: Header and payload match Zoom documentation exactly
:white_check_mark: Token Format: Successfully generates a valid JWT string
:white_check_mark: Session Name: Tested with various formats (alphanumeric, UUIDs with prefix)
:white_check_mark: Role Values: Using correct values (1 for host, 0 for participant)
:white_check_mark: Timestamps: iat and exp are valid Unix timestamps
:white_check_mark: Algorithm: Using HS256 as specified in documentation
:white_check_mark: SDK Version: Using latest stable version (v2.2.12)

Debug Output

Backend logs show successful token generation:

[generate-zoom-token] SDK Key present: true length: 36
[generate-zoom-token] SDK Secret present: true length: 36
[generate-zoom-token] SDK Key first 10 chars: kzUSyIxvaL...
[generate-zoom-token] Token generated successfully for host
[generate-zoom-token] meetingNumber: session-37f6265f-b72d-4665-ae7e-ebb67ece8b30

Frontend logs before join attempt:

[useZoomSDK] sessionName: session-37f6265f-b72d-4665-ae7e-ebb67ece8b30
[useZoomSDK] userName: Test User
[useZoomSDK] token length: 250+
[useZoomSDK] CALLING client.join()...
[useZoomSDK] Join error: {type: "JOIN_MEETING_FAILED", reason: "This account does not exist or does not belong to you", errorCode: 200}

Questions

  1. What does error code 200 specifically indicate? The error message suggests an account issue, but my credentials are definitely correct.

  2. Is there a credential verification endpoint? Is there a way to test/validate my SDK Key and Secret before attempting to join a session?

  3. Could this be related to the Video SDK app configuration? Are there any specific settings in the Zoom Marketplace app that need to be enabled beyond just creating the app and getting credentials?

  4. JWT payload requirements: Are there any additional required or recommended fields in the JWT payload that aren’t explicitly mentioned in the documentation?

  5. Session name restrictions: Are there any undocumented restrictions on the session name format? I’m using the format session-{uuid}.

Environment

  • SDK: @zoom/videosdk v2.2.12
  • Platform: Web (React/TypeScript)
  • Browser: Chrome (latest), Firefox (latest)
  • Backend: Deno/Supabase Edge Functions
  • JWT Library: jsrsasign v11.1.0

Additional Context

  • The Video SDK app is properly created in the Zoom Marketplace
  • The app is activated and credentials are shown as valid in the dashboard
  • No other error messages or warnings appear before the join failure
  • The same error occurs for both host and participant roles

Has anyone encountered this specific error with valid credentials? Any insights would be greatly appreciated!

Hi @Samdekian
Thanks for reaching out to us and sorry to hear you are having issues with your Video SDK account. Are you still experiencing this on your end?

Hi Elisa,

Thank you for your response, I appreciate your help with this matter.

I’ve conducted an extensive technical investigation following the suggestions in the forum post, and I’d like to share my findings to help determine if this is an account configuration issue on Zoom’s end.

What I’ve Verified:

1. Session Name (mn) Length - ✓ Confirmed Correct

As suggested in the forum post, I’ve verified the session name length:

  • Session name length: 32 characters (exactly as required, not exceeding limit)

  • Format: test1234567890abcdefghijklmnopqr

  • JWT payload mn field: Matches exactly with the session name used in client.join()

2. SDK Credentials - ✓ Present and Properly Formatted

From my edge function logs:

SDK Key: kzUSyIxvaLiDrdRy4P9uVbs3fPhb6ynQE0go (36 characters)
SDK Secret: Present (36 characters)

3. JWT Token Generation - ✓ Valid Structure

My generated JWT token contains:


{
  "sdkKey": "kzUSyIxvaLiDrdRy4P9uVbs3fPhb6ynQE0go",
  "mn": "test1234567890abcdefghijklmnopqr",
  "role": 1,
  "iat": 1761586952,
  "exp": 1761594152,
  "appKey": "kzUSyIxvaLiDrdRy4P9uVbs3fPhb6ynQE0go",
  "tokenExp": 1761594152
}
  • Algorithm: HS256

  • Token length: 351 characters

  • Expiration: 2 hours (as recommended)

  • Role: 1 (for Video SDK)

4. Implementation - ✓ Following Best Practices

  • Using official @zoom/videosdk package (version 2.2.5)

  • Proper initialization with client.init() before client.join()

  • Correct parameter order: client.join(sessionName, token, userName)

  • No special characters or formatting issues

The Problem:

Despite all the above being correct, I consistently receive:

  • Error Code: 200

  • Error Message: “This account does not exist or does not belong to you”

What I Need Verified on Zoom’s End:

Since I’ve eliminated all implementation issues mentioned in the forum post, I suspect this might be an account/app configuration issue:

  1. Is my Video SDK app properly activated/published in the Zoom Marketplace?

    • App SDK Key: kzUSyIxvaLiDrdRy4P9uVbs3fPhb6ynQE0go
  2. Are there any account-level restrictions or flags that might prevent SDK usage?

  3. Is the SDK Key correctly associated with a Video SDK app (not Meeting SDK)?

  4. Are there any pending verifications or activations required for my app/account?

  5. Could there be any regional restrictions or account type limitations?

Reproducible Test Environment:

I’ve created an isolated test environment at /test-zoom-credentials that:

  • Generates JWT tokens with hardcoded test values

  • Attempts to join using the Zoom Video SDK

  • Logs all diagnostic information

  • Can be used by your team to verify the credentials if needed

Request:

Given that I’ve followed all implementation guidelines and the forum suggestions, could you please verify on your end whether there’s an issue with my app configuration or account status? The error code 200 suggests the credentials don’t match an active account, but I can confirm the credentials are being used exactly as generated from the Zoom Marketplace.

I’m happy to provide any additional logs, screenshots, or diagnostic information you need. I can also schedule a call if that would help troubleshoot this more efficiently.

Thank you for your assistance!

Best regards,
Rafael

Thanks @Samdekian
I will follow up in a DM so I can take a look at your account