How to create a one time use meetings

All users are created using “custCreate” action.

Our intention
The meetings should be used only once. When the host starts and ends a meeting, the meeting id / url must not be reusable.

The idea is create one time use meetings. Once the meeting is over, the host user must not be able to start the meeting using start_url

**Approaches **

  1. Update the password using the API. However, the host is able to still start the meeting using old meeting url. Does not work.
  2. Delete the meeting after the meeting is complete by listening to the event “meeting.ended” (webhooks). However, an email gets sent to the host saying that the meeting is cancelled by “… ISV”. This approach works. The email is bothering though.
  1. Is there an API / a workflow to create a one-time use meeting ID / URL
  2. When deleting a meeting, what settings need to be present to stop email notifications from zoom to this host user’s email address?

App type: JWT

Which Endpoint/s?
Create user - POST /users
Create meeting - POST /users/:userId/meetings
Update meeting - PATCH /meetings/:meetingId
Delete meeting - DELETE /meetings/:meetingId

Hey @kkumar-pv,

Unless you are starting an instant meeting or using your personal meeting number, the meeting IDs will act as one time use, unless the meeting is in progress.

Once the meeting is ended, and then deleted, the cancellation email should not be sent. Are you ending the meeting after the scheduled time?

That being said, you can adjust the email settings for meetings here:


Thanks for your reply.

Related to one time use meetings… What do you mean by one time meetings? Perhaps, we have a different understanding of one time meetings. I don’t seem to understand the behaviour of the one-time use meeting ids when I try them out.

Note that users do not need to be authenticated to start / join meetings.

I’ll try to explain my understanding using a sequence of steps:
API calls are being made using JWT auth (Zoom ISV account)

  1. A custCreate user is created, lets say the id is xyz
  2. A meeting is created using API /users/xyz, lets say the meeting id is 123456789 and has start_url and join_url
  3. Now, a person P1 with a computer uses the start_url and the meeting starts
  4. Another person P2 with a computer uses the join_url and joins the meeting
  5. After their discussion, person P1 ends the meeting for all (not the “Leave meeting”)
  6. Another person P3 with a computer uses the start_url of meeting 123456789 and is able to start the meeting. This is what we’d like to avoid.

Yes. The “End Meeting” button is clicked after the scheduled meeting time. Lets say the meeting start time is 10 AM and the duration is 1h. The “End Meeting” button is clicked at 11:30 AM.

Create user:
POST /users
“action”: “custCreate”,
“user_info”: {
“email”: “”,
“type”: 2,
“first_name”: “P1”,
“last_name”: “Example”

Response user id: Jarf…BABA

Create meeting
POST /users/Jarf...BABA/meetings
“topic”: “Test one time meeting - åíøü How do I get ö, Ä, é, or ß”,
“type”: 2,
“start_time”: “2020-03-04T11:30”,
“duration”: 60,
“agenda”: “Long description of this meeting”,
“settings”: {
“host_video”: false,
“participant_video”: false,
“cn_meeting”: false,
“in_meeting”: true,
“join_before_host”: true,
“mute_upon_entry”: true,
“watermark”: false,
“use_pmi”: false,
“approval_type”: 2,
“registration_type”: 1,
“audio”: “both”,
“auto_recording”: “none”,
“enforce_login”: false,
“registrants_email_notification”: false

Hey @kkumar-pv,

I mean that each meeting you create will have a different meeting ID if you don’t enable the personal meeting ID option.

Thanks for providing the step sequence.

Unfortunately, the start_url is still active for some time after the meeting, unless you delete the meeting after it ends.

Were you able to prevent the cancellation email being sent with the settings here:


ok. Misread your initial answer. Only the instant meetings are one-time meetings. The scheduled meetings are not one-time meetings even when the recurrance is not set.

Found that even though instant meetings are created using POST /users/:userId/meetings, the list user’s meetings API GET /users/:userId/meetings don’t show instant meetings (in wating mode, created but never started).


  1. Is there a way to list the ongoing and scheduled instant meetings for the entire account or the user through which the instant meeting was created?
  2. Is there a way to send the message to the host indicating the time remaining for the meeting is some way? Looked at the chat option, however, its only for user OAuth based apps and not server to server based apps.
  3. Is there a possiblity to restrict instant meetings to 1h?

Haven’t applied for vanity url and hence this setting is not visible. Found some related settings on … shall try it.

Thanks for the assistance. Your answers helped.

Hey @kkumar-pv,

Try the Meeting Dashboard endpoint:

(You can’t schedule instant meetings.)

The only way I could think of doing this inside Zoom is with Closed Caption.

No, but you could end the meeting programmatically after 1h.

Just letting you know the vanity URL feature is simple to apply for.


Thanks for the help.

Closed captioning service is something I tried. I couldn’t find an API that responds with the captioning URL. Is there any API that provides the captioning URL using JWT? That would help us.

Hey @kkumar-pv, you are welcome!

We are currently working on an API endpoint to get the Closed Captioning URL (ZOOM-100289).

Stay updated here:


1 Like


Is there any news of an API to get Captioning URL?
The changelog does not mention ZOOM-100289. Was wondering if there is a way to follow on this request somewhere so that I get a notification when its available.


Hey @kkumar-pv,

No timeline as of yet. You can stay updated here: