# Can't create JWT App after creating SDK App

**URL:** <https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645>\
**Category:** Web\
**Created:** [May 5, 2021, 2:20pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645 "2021-05-05T14:20:05Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 5, 2021, 2:20pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/1 "2021-05-05T14:20:05Z")

</div>

**Description**  
I tried to stand up the basic example encapsulated by:

- [GitHub - zoom/websdk-sample-angular: Use the Zoom Web SDK in an Angular App](https://github.com/zoom/websdk-sample-angular)
- [GitHub - zoom/websdk-sample-signature-node.js: Genrerate a signature to Start and Join Meetings and Webinars with the Zoom Web SDK.](https://github.com/zoom/websdk-sample-signature-node.js)

Through that process I eventually ended up speculatively creating a **SDK App** in the marketplace and ran aground with “Invalid Signature” errors on the front end. Searching this forum it became clear to me that I _should have_ created a **JWT app** rather than an **SDK App**.

I went back to the Zoom Marketplace to try and remedy the situation, but when I clicked Develop → Build App I can’t create a new app; the only thing I see there is:

![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/7/0/704a23aad4eff21e04b655161d3916b5efee3367.png)

… and I’ve dug around to the best of my ability and can’t see how to remove this app (seems impossible). I can deactivate the app, but that has no affect on my ability to create a new App.

At this point it feels like my only viable course of action is to scrap the account I created to be my dev account, deactivate my failed attempt at creating and app, and start over with a new account. This feels pretty heavy handed to me, especially given that I attached payment information to the account. Am I missing something?

**Error**  
The full error message or issue you are running into.  
N/A

**Which Web Client SDK version?**  
N/A

**To Reproduce(If applicable)**  
N/A

**Screenshots**  
N/A

**Device (please complete the following information):**  
N/A

**Additional context**  
N/A

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 5, 2021, 4:46pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/2 "2021-05-05T16:46:52Z")

</div>

So my theory that I missed a step was proven wrong by creating a second account. I simply am never offered the opportunity to create a JWT App at all. What am I missing?

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 6, 2021, 1:11pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/3 "2021-05-06T13:11:26Z")

</div>

So I went over to [App Marketplace](https://marketplace.zoom.us/develop/create) and logged in with my personal (paid/Pro) account and there I can see this:

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/4/6/46ddc927275362272f34273811794387e17b8d9f.png)

It’s on the account that I “bought” the Video SDK with the “Pay as you Go” option I’m not offered the JWT App option. In case that helps anyone diagnose my problem. Am I incorrect in my assumption that I need the to create an fresh account and add buy the Video SDK to integrate Zoom into my web application? I certainly got the impression I needed to create a new account and buy into the Video SDK based on this dialog at [https://zoom.us/buy/videosdk:](https://zoom.us/buy/videosdk:)

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/9/e/9e4afc9db4627912205008191a3ec77b4a571ba8.png)

---

<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:** [May 6, 2021, 4:22pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/4 "2021-05-06T16:22:03Z")

</div>

Greetings, @victor.aprea,

Thank you for posting in the Developer Forum- I am happy to clarify. Our Zoom API and Client SDKs are available to all Pro, Business, and Enterprise accounts with no additional cost. Registering and activating any Basic Zoom account will automatically provide free-trial Developer access to the Zoom API and SDKs. We recommend to use this free-trial period to test Zoom services and SDK functionality.

For more information about getting stated with our API and Client SDKs, you may visit our help documentation below:

1. [Developer Accounts](https://marketplace.zoom.us/docs/sdk/native-sdks/developer-accounts#:~:text=Registering%20and%20activating%20any%20Basic,to%20host%20one%20concurrent%20meeting.)
2. [API documentation](https://marketplace.zoom.us/docs/api-reference/introduction)
3. [SDK documentation](https://marketplace.zoom.us/docs/sdk/native-sdks/introduction?)

In regards to the **Video SDK** , if you wish to get access, you’ll need to first follow these steps:

1. Visit [https://developers.zoom.us/](https://zoom.us/) to sign up for a **new** Zoom account, which will serve as your development account for your video customizable SDK
2. Once your new account is enrolled in the **Video SDK** plan, you can access the **Video SDK** by logging into the [Zoom App Marketplace](https://marketplace.zoom.us/) using the new account.

✍ Once you have access, you should see it available as one of the app types under your **new account** here: [App Marketplace](https://marketplace.zoom.us/develop/create)

If you don’t see the **Video SDK** app type available, please ensure you’re logged into the account that was granted access. Please also take note of the [prerequisite noted here](https://marketplace.zoom.us/docs/sdk/custom/developer-accounts) as well—You can not access the **Video SDK** using your existing account if it is already enrolled in a free-trial plan, Pro plan or higher plans. You must sign up for a new account to enroll in the **Video SDK** plan.

After you’ve gained access and set up the app, you will have access to credentials (SDK Key & Secret) for the app and be able to download the desired SDK package (iOS, Android, Web).

Your developer can find step by step instructions for creating the app, generating credentials, and authenticating here:

> **[Zoom Developer - Technical Documentation and Reference](https://marketplace.zoom.us/docs/sdk/custom/auth)**
>
> Stoplight Hubs are the easiest way to generate API documentation, technical guides, tutorials, and more! Powered by Stoplight.io

Once this is set up, your developer will be able to test out the functionality covered here using these credentials/app:

> **[Zoom Developer - Technical Documentation and Reference](https://marketplace.zoom.us/docs/sdk/custom/web/build)**
>
> Stoplight Hubs are the easiest way to generate API documentation, technical guides, tutorials, and more! Powered by Stoplight.io

I hope this information is helpful! Let me know if you have additional questions.

Best,  
Donte

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 6, 2021, 4:45pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/5 "2021-05-06T16:45:37Z")

</div>

@donte.zoom … thanks, but it seems to me a JWT App is required in order to get JWT API Key and Secrets. On a brand new account which I created _only_ to buy the Video SDK and be separate from my personal account, I don’t get the option for a JWT App in the Create interface. If I try and use the Video SDK API Key and Secret on my server to generate the signature, the signatures are deemed invalid by the web Client code. Unfortunately, I remain lost as to what I’m intended to do to get this integration off the ground…

---

<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:** [May 6, 2021, 4:58pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/6 "2021-05-06T16:58:46Z")

</div>

Hi, @victor.aprea,

Correct, you can use your app credentials (SDK Key and Secret) located in the **App Credentials** tab to generate a JWT. Be sure that you use the signature with Video SDK. Also, you can decode a token at [http://jwt.io/](http://jwt.io/) and verify its structure. The payload section describes the authorization granted. Timestamps are in Unix epoch format. More information on Generating JWT for the Video SDK can be found in our help documentation here:

> **[Authentication - Video SDKs - Zoom Software Development Kit (Zoom SDK)](https://marketplace.zoom.us/docs/sdk/video/auth)**
>
> Authentication
> 
> 
> 
> Video SDK apps authenticate with Zoom through a pair of access credentials, SDK Key and SDK Secret, which are signed and communicated ...

Please let me know if this helps to clarify.

Best,  
Donte

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 6, 2021, 7:44pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/7 "2021-05-06T19:44:10Z")

</div>

@donte.zoom thanks… there are still a lot of ways this could be going wrong based on the documentation you are referencing here… I took a crack at taking this advice and experimenting and I’ve now gotten this far (rewriting the code [here](https://github.com/zoom/websdk-sample-signature-node.js/blob/master/index.js) according to what I read [there](https://marketplace.zoom.us/docs/sdk/video/auth) and using my SDK key and secret):

```
app.post('/', (req, res) => {

  const header = {
    alg: 'HS256',
    typ: 'JWT'
  };

  let payload = {
    app_key: ZOOM_SDK_API_KEY,
    version: 1,
    user_identity: req.user.name,
    tpc: req.body.meetingNumber
  };

  const token = jwt.sign(
    payload,
    ZOOM_SDK_API_SECRET,
    {
      algorithm: 'HS256',
      expiresIn: '1 days',
    });

  payload = jwt.decode(token);

  const b64Header = Buffer.from(JSON.stringify(header)).toString('base64');
  const b64Payload = Buffer.from(JSON.stringify(payload)).toString('base64');
  const msg = `${b64Header}.${b64Payload}`;
  const signature = crypto.createHmac('sha256', ZOOM_SDK_API_SECRET).update(msg).digest('base64');

  res.json({
    signature,
    apiKey: ZOOM_SDK_API_KEY
  });
}

```

Now I’m getting this response from Zoom on the front end:

```
{ 
  method: "join", 
  status: false, 
  result: "No permission", 
  errorMessage: undefined, 
  errorCode: 3713 
}

```

… which again doesn’t really tell me much about what is wrong with the signature I am using in the browser. I get the same exact response if I return some arbitrary string as the signature from my server route.

I’ve also tried with an equal amount of unsuccessful-ness:

```
app.post('/', (req, res) => {

  let payload = {
    app_key: ZOOM_SDK_API_KEY,
    version: 1,
    user_identity: req.user.name,
    tpc: req.body.meetingNumber
  };

  const token = jwt.sign(
    payload,
    ZOOM_SDK_API_SECRET,
    {
      algorithm: 'HS256',
      expiresIn: '1 days',
    });

  const msg = Buffer.from(JSON.stringify(token)).toString('base64');
  const signature = crypto.createHmac('sha256', ZOOM_SDK_API_SECRET).update(msg).digest('base64');

  res.json({
    signature,
    apiKey: ZOOM_SDK_API_KEY
  });
}
```

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 6, 2021, 8:56pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/8 "2021-05-06T20:56:54Z")

</div>

@donte.zoom back to the origin of this post… when I use the exact code from [this page](https://marketplace.zoom.us/docs/sdk/native-sdks/web/build/signature) for NodeJS, I get a response from zoom on the front end that:

```
{method: "join", status: false, result: "Invalid signature.", errorMessage: undefined, errorCode: 3712}

```

… and my conclusion is that that code is not suitable for when you use SDK API Key and Secret somehow. So how do I get from where I am right now (I have a Video SDK application, with an associated SDK API Key and Secret) to a valid signature for use with the front end SDK join call. It’s “just math” please can you show me how to do it correctly?

---

<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:** [May 6, 2021, 9:15pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/9 "2021-05-06T21:15:28Z")

</div>

Hi, @victor.aprea,

Thanks for reaching out! I’d be more than happy to help you. Can you try to generate the Signature using the guide linked below :

> **[Generate Signature - Getting started - Web - Video SDKs - Zoom Software...](https://marketplace.zoom.us/docs/sdk/video/web/build/signature#sample-generate-signature-function)**
>
> Generate Signature
> 
> 
> 
> Each request to start and join a session must be authenticated by an encrypted signature authorizing each user to enter. A signatu...

Please give that a try and let me know how it goes! Be sure to check out the subfolders for more information about getting started with the Video SDK.

Best,  
Donte

---

<div class="post-metadata">

**Author:** ![victor.aprea](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/victor.aprea/32/26777_2.png) [@victor.aprea](https://devforum.zoom.us/u/victor.aprea)\
**Post date:** [May 7, 2021, 3:14pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/10 "2021-05-07T15:14:27Z")

</div>

@donte.zoom I’m getting a different error using that code in conjunction with [Use the Zoom Web SDK in an Angular App](https://github.com/zoom/websdk-sample-angular). Lets take a big step back here. I think I must be mixing apples and oranges and expecting lemonade.

When I look at the Zoom documentation that starts here: [https://marketplace.zoom.us/docs/sdk/video/](https://marketplace.zoom.us/docs/sdk/video/) it’s very easy to get confused about what subset of this documentation I should be using / which path to go down because there’s so much of it. For our application, we want to create a multi-person video meeting that doesn’t take over the whole screen where people can see and talk to each other in smaller video windows while also looking at and interacting with our application; all of this happening in the web browser. I think this means I should be focused here: [https://marketplace.zoom.us/docs/sdk/video/web](https://marketplace.zoom.us/docs/sdk/video/web). **Please can you confirm that?** I’m actually not entirely sure what this other thing is or when I would consider using it: [https://marketplace.zoom.us/docs/sdk/native-sdks/web](https://marketplace.zoom.us/docs/sdk/native-sdks/web). **Can you shed any light on that?**

FWIW, the downloaded SDK Sample App is in React, and I’m not knowledgeable in that framework. I use Angular and Express, so that’s not very useful. Which is how my rather naive google search turning up the links in the original post on this topic lead my down this weird path.

---

<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:** [May 8, 2021, 3:47pm UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/11 "2021-05-08T15:47:50Z")

</div>

Hi, @victor.aprea,

Correct, the Marketplace access and development process for our Web SDK and Video SDK are different. You’ll want to maintain separate developer credentials from the Web SDK when using the Video SDK. This is why you are seeing different App types when you logged in the Zoom Marketplace. The email address for your Video SDK developer account cannot be connected to an existing Zoom account.

To that end, our Web SDK is intended for implementations where the end user has a low-bandwidth environment, is behind a network firewall, or has restrictions on their machine which would prevent them from installing the Zoom Desktop or Mobile Clients. You can customize the user interface (UI) but it will require complex CSS and is not recommended. To get started with our Web SDK, please refer to the guide linked below:

> **[Web - Client SDKs - Zoom Software Development Kit (Zoom SDK)](https://marketplace.zoom.us/docs/sdk/native-sdks/web)**
>
> Zoom Web SDK
> 
> The Web SDK enables the development of video applications powered by Zoom's core framework inside an HTML5 web client through a highly opt...

On the other hand, if you are looking to get access to raw video and audio data to **develop highly customized** user interfaces.You likely want to use our Video SDK guide linked below. If you have more questions about developing with our Video SDK, I recommend posting in our #web-video-sdk category. Our developer team there will be a wonderful resource to you. They can answer any questions in relation to developing with the Video SDK.

> **[Quickstart with Sample App - Getting started - Web - Video SDKs - Zoom...](https://marketplace.zoom.us/docs/sdk/video/web/build/sample-app)**
>
> Quickstart with sample app
> 
> 
> 
> To demonstrate the capabilities of the Video SDK, we have included a sample video session app that allows hosts to start a...

For reference, I’ve linked our Comparing Zoom SDKs help documentation [here](https://marketplace.zoom.us/docs/sdk/video/compare). This guide provides an overview of the different SDKs features.

I hope this helps to clarify! Let me know if you have additional questions about any of this.

Best,  
Donte

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [June 8, 2021, 1:48am UTC](https://devforum.zoom.us/t/cant-create-jwt-app-after-creating-sdk-app/49645/12 "2021-06-08T01:48:20Z")

</div>

Closed on June 8, 2021, 1:48am UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
