# Meeting SDK Failed to join meeting (Error Code: 4003 Invalid Parameter)

**URL:** <https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077>\
**Category:** Meeting SDK\
**Created:** [April 5, 2023, 5:10am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077 "2023-04-05T05:10:22Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![aminwafi98](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@aminwafi98](https://devforum.zoom.us/u/aminwafi98)\
**Post date:** [April 5, 2023, 5:10am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/1 "2023-04-05T05:10:22Z")

</div>

Hi,

I had actually integrated the Meeting SDK with my Angular application. I followed the code from this link: [GitHub - zoom/meetingsdk-angular-sample: Use the Zoom Meeting SDK in Angular](https://github.com/zoom/meetingsdk-angular-sample), which states that it is required to set up the authEndpoint. Therefore, I set up the authEndpoint using Express and NodeJs. However, whenever I tried to join the meeting, it pop up ‘Fail to join the meeting’. Kindly appreciate any assistance on what parameter is missing or invalid.

**Browser console error:**  
{type: ‘JOIN\_MEETING\_FAILED’, reason: ‘Invalid Parameter’, errorCode: 4003}

**Code Snippets Angular:**  
getSignature() {  
this.httpClient.post(this.authEndpoint, {  
meetingNumber: this.meetingNumber,  
role: this.role  
}).toPromise().then((data: any) =\> {  
if (data.signature) {  
console.log(data.signature);  
this.startMeeting(data.signature);  
} else {  
console.log(data);  
}  
}).catch((error) =\> {  
console.log(error);  
});  
}

startMeeting(signature) {  
this.client.join({  
signature: signature,  
sdkKey: this.sdkKey,  
meetingNumber: this.meetingNumber,  
password: this.passWord,  
userName: this.userName  
})  
}

**Code Snippet Node JS:**  
app.post(‘/zoom/signature’, (req, res) =\> {  
const iat = Math.round(new Date().getTime() / 1000) - 30;  
const exp = iat + 60 \* 60 \* 2;  
const oHeader = { alg: ‘HS256’, type: ‘JWT’ };  
const oPayload = {  
sdkKey: config.ZOOM.MEETING\_SDK\_KEY,  
mn: req.body.meetingNumber,  
role: req.body.role,  
iat: iat,  
exp: exp,  
appKey: config.ZOOM.MEETING\_SDK\_KEY,  
tokenExp: iat + 60 \* 60 \* 2  
};  
const sHeader = JSON.stringify(oHeader);  
const sPayload = JSON.stringify(oPayload);  
const signature = KJUR.jws.JWS.sign(‘HS256’, sHeader, sPayload, config.ZOOM.MEETING\_SDK\_SECRET);  
console.log(signature);  
res.json({  
signature: signature  
});  
});

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [April 5, 2023, 7:14am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/2 "2023-04-05T07:14:53Z")

</div>

are you able to share your JWT token here? An expired one will do fine as well.

---

<div class="post-metadata">

**Author:** ![aminwafi98](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@aminwafi98](https://devforum.zoom.us/u/aminwafi98)\
**Post date:** [April 8, 2023, 9:48am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/3 "2023-04-08T09:48:03Z")

</div>

Hi, does anyone have solution to this, Im still stuck on this issue 😢

---

<div class="post-metadata">

**Author:** ![j.schoenemeyer](https://avatars.discourse-cdn.com/v4/letter/j/f9ae1b/32.png) [@j.schoenemeyer](https://devforum.zoom.us/u/j.schoenemeyer)\
**Post date:** [April 8, 2023, 10:16am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/4 "2023-04-08T10:16:48Z")

</div>

check your created signature [here](https://jwt.io/)

and perhaps have a look into [this thread](https://devforum.zoom.us/t/signature-invalid-in-meeting-sdk-app-type-in-nextjs/86280/2) → first try the CDN example and if this works go forward

---

<div class="post-metadata">

**Author:** ![aminwafi98](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@aminwafi98](https://devforum.zoom.us/u/aminwafi98)\
**Post date:** [April 8, 2023, 12:47pm UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/5 "2023-04-08T12:47:15Z")

</div>

I have checked my jwt signature from [jwt.io](http://jwt.io), it seems to me that the payload and header is already correct. Here is my signature:

[REDACTED]

I have also tried the local cdn method, however upon joining the meeting, it pops up this error:

 ![Screenshot 2023-04-08 at 8.45.29 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/a/a/aa27b30c77b38c02789e43242e2d146951a7daac.png)

Thanks for helping btw 🙂

---

<div class="post-metadata">

**Author:** ![j.schoenemeyer](https://avatars.discourse-cdn.com/v4/letter/j/f9ae1b/32.png) [@j.schoenemeyer](https://devforum.zoom.us/u/j.schoenemeyer)\
**Post date:** [April 8, 2023, 3:58pm UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/6 "2023-04-08T15:58:43Z")

</div>

did you create your **Meeting SDK App** after [Feb 11, 2023](https://developers.zoom.us/docs/meeting-sdk/auth/)?

if yes - use " Client ID" & “Client Secret”  
if no - use “SDK Key” &" SDK Secret"

![id](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/f/2/f22699916674842c6e256a3f17d0f51dfd29b21e.png)

---

<div class="post-metadata">

**Author:** ![ravi.gupta](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ravi.gupta/32/49261_2.png) [@ravi.gupta](https://devforum.zoom.us/u/ravi.gupta)\
**Post date:** [June 5, 2023, 1:28pm UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/7 "2023-06-05T13:28:02Z")

</div>

have this issue been resolved? because I am getting same error can someone please help me in this. Please let me show you my code.

I am using next.js 13.2.4 and typescript

```auto
"use client"

import ZoomMtgEmbedded from '@zoomus/websdk/embedded';

import React, { useEffect } from "react";
const KJUR = require("jsrsasign");

interface IParams {
    meetingId: string;
}

const page = ({ params }: { params: IParams }) => {

    const { meetingId } = params;

    useEffect(() => {
        let client: any;

        const initializeMeeting = async () => {
            try {
                const ZoomEmbed = (await import('@zoomus/websdk/embedded')).default;
                client = ZoomMtgEmbedded.createClient();
                const meetingSDKElement = document.getElementById('meetingSDKElement');
                client.init({
                    language: 'en-US',
                    zoomAppRoot: meetingSDKElement ? meetingSDKElement : undefined,
                });
                const iat = Math.round(new Date().getTime() / 1000) - 30;
                const exp = iat + 60 * 60 * 2;

                const Header = {
                    alg: "HS256",
                    type: "JWT",
                };

                const payload = {
                    sdkKey: process.env.NEXT_PUBLIC_SDK_KEY,
                    mn: +meetingId,
                    role: 1,
                    iat: iat,
                    exp: exp,
                };

                const sHeader = JSON.stringify(Header);
                const sPayload = JSON.stringify(payload);

                const meetingSignature = await KJUR.KJUR.jws.JWS.sign(
                    "HS256",
                    sHeader,
                    sPayload,
                    process.env.NEXT_PUBLIC_SDK_SECRET
                );

                client.join({
                    sdkKey: process.env.NEXT_PUBLIC_SDK_KEY,
                    signature: meetingSignature,
                    meetingNumber: +meetingId,
                    userName: 'Ravi gupta',
                    userEmail: 'ravi2611gupta@gmail.com',
                    password: `804939`,
                    tk: ''
                });
            } catch (error) {
                console.log('--- Error inside useEffect ---> ', error);
            }
        };

        initializeMeeting();

        return () => {
            if (client) {
                console.log(client);
            }
        };
    }, []);

    return <div id='meetingSDKElement' className='w-full h-full p-32 bg-red-200'>

    </div>
}

export default page

```

---

<div class="post-metadata">

**Author:** ![donte.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/donte.zoom/32/24412_2.png) [@donte.zoom](https://devforum.zoom.us/u/donte.zoom)\
**Post date:** [September 26, 2023, 11:32am UTC](https://devforum.zoom.us/t/meeting-sdk-failed-to-join-meeting-error-code-4003-invalid-parameter/86077/8 "2023-09-26T11:32:59Z")

</div>

@ravi.gupta,

Sorry for not getting back to you sooner. Is this still an issue for you? Please let me know if you have any questions.
