# Create a meeting using registration To provide an additional layer of security for your Zoom meetings you can utilize [registration](https://support.zoom.us/hc/en-us/articles/211579443-Scheduling-a-meeting-with-registration). When utilizing registration each meeting or webinar participant will have a unique join_URL. These unique URL’s allow you to ensure that only registered participants can join and allows you to better track meeting and webinar participation. Endpoint: N/A Granular Scopes: N/A ![](/img/create-user.png) 1. When a user signs up for or is assigned to use your service, you use the [create a user](/docs/api/users/#tag/users/post/users) API endpoint to create a Zoom user account for them. 2. Save the returned `id` to your user table and associated with the user. When the user interacts with the Zoom platform you will use this `id`. **API Call Example** CURL Command: ```shell curl --location --request POST 'https://api.zoom.us/v2/users' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ' \ --data-raw '{"action": "custCreate", "user_info": {"email": "", "first_name": "John","last_name": "Doe","type": 2}}' ``` Sample Response: ```json { "email": "dGljbw==@isv-domain.com", "first_name": "John", "id": "_SObcJT7Q52O58dcGd9KhQ", "last_name": "Doe", "type": 2 } ``` Save the returned `id` to your user table and associate it with the user. When this user interacts with the Zoom platform they will use this `id`. 3. When a user creates a meeting you use the [create a meeting](/docs/api/meetings/#tag/meetings/post/users/{userId}/meetings) API endpoint to create the meeting on their behalf. The path of this request requires the user's `id`, and the `id` creates the meeting for the specified user. For this workflow you need to specify registration settings in the body of the request. We recommend that you set **registration** to `required` and **approval** to `manually approve`. CURL command: ```shell curl --location --request POST 'https://api.zoom.us/users/{userid}/meetings' \ --header 'Content-Type: application/json' \ --data-raw '{ "duration": 60, "password": "123456", "settings": { "Approval_type": 1, "registration_type": 2, "start_time": "2022-03-25T07:32:55Z", "timezone": "America/Los_Angeles", "topic": "My Meeting", "type": 2 } }' ``` Sample response: ```json { "Settings": { "Approval_type": 1, "registration_type": 2, "start_time": "2022-03-25T07:32:55Z", "timezone": "America/Los_Angeles", "topic": "My Meeting", "type": 2 }, "agenda": "My Meeting", "created_at": "2022-03-25T07:29:29Z", "duration": 60, "h323_password": "123456", "host_email": "dGljbw==@isv.domain.com", "id": 92674392836, "join_url": "https://example.com/j/11111", "registration_url": "https://example.com/meeting/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6", "start_time": "2022-03-25T07:29:29Z", "start_url": "https://example.com/s/11111", "timezone": "America/Los_Angeles", "topic": "My Meeting" } ``` Save the returned `start_url `and `id` in your DB. You need these to for the host to start the meeting and to add registrants.