# Start a meeting

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

The Zoom Meeting SDK enables you to embed Zoom's complete meeting experience directly into your platform, allowing users to host and join meetings without leaving your application or webpage.

When a user wants to start a meeting, first retrieve the meeting details from your database. You can then connect the host to their meeting using one of two methods:

-   Pass the `start_url` directly to the host, which opens the meeting in their Zoom client.
-   Use the meeting information to initialize the Meeting SDK and programmatically start the meeting for the host directly within your platform.

Endpoint: [Get User token](/docs/api/users/#tag/users/get/users/{userId}/token)

Granular Scopes: `user:read:token`, `user:read:token:admin`

![](/img/create-user.png)

This workflow describes starting a meeting using [Zoom Meeting Web SDK](/docs/meeting-sdk/web/).

1. After [creating a meeting](/docs/isv/workflows/create-meeting/), save the meeting's _id_ and _password_ to your database. You'll use the _id_ to generate the SDK signature and the password to start the meeting.
2. To start the meeting, use the [Get a User’s Token](/docs/api/users/#tag/users/get/users/{userId}/token) request to retrieve the user's authentication token (ZAK - Zoom Access Key).
3. [Generate the signature](/docs/meeting-sdk/auth/) used to authenticate the SDK. Take note of the following values:
    - For `role` key, use the value **1** for host.
    - For `mn` key, use the value of the meeting `id`.
    - You can use this [sample code](https://github.com/zoom/meetingsdk-auth-endpoint-sample) to generate the signature.
4. Initialize the SDK using the `init` method. **Y**
5. [Start the meeting](/docs/meeting-sdk/web/client-view/meetings/#start-meeting) using the `client.join` method. Each `ZoomMtg join` method call needs to be inside `ZoomMtg init` method success callback. For the join method, take note of the following values:

    - For ZAK value, use the host’s ZAK token.
    - For meetingNumber value, use the value of meeting id. The value must be the same used in the SDK signature.

    For more information, see the [start meeting code sample](/docs/meeting-sdk/web/client-view/meetings/#start-meeting).

## Sample API Call

CURL Command

```shell
curl --location --request POST 'https://api.zoom.us/v2/users/{userid}/token' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <token>' \
  --data-raw '{"type": "zak", "ttl": "7200"}'
```

Sample response

```json
{
    "token": "6IjAwMDAwMSIsInptX3NrbSI6InptX"
}
```

## Init SDK & Client.Join

Javascript example

```javascript
ZoomMtg.init({
    leaveUrl: leaveUrl, // https://example.com/thanks-for-joining
    success: (success) => {
        ZoomMtg.join({
            sdkKey: sdkKey,
            signature: signature, // role in SDK signature needs to be 1
            meetingNumber: meetingNumber,
            passWord: passWord,
            userName: userName,
            zak: zakToken, // the host's ZAK token
            success: (success) => {
                console.log(success);
            },
            error: (error) => {
                console.log(error);
            },
        });
    },
    error: (error) => {
        console.log(error);
    },
});
```
