Clarification on deleting users with recording transfer, inactive users, and recording inventory via Zoom APIs

API-Based User Deletion with Recording Transfer

We have tested the following API endpoint:

DELETE /v2/users/{userId}
?action=delete
&transfer_email=<archive-user>
&transfer_recording=true
&transfer_meeting=true

In practice, this appears to delete the user and transfer cloud recordings and meetings in a single operation.

Questions:

  1. Does this API officially guarantee transfer of all cloud recordings owned by the user?

  2. Does this API work for:

    • Active users only, or

    • Both active and deactivated users?

  3. If all recordings are transferred, is there any supported way to validate this programmatically after deletion?


Admin Account Handling

During our POC, we observed challenges related to Admin users.

Questions:

  1. Is Admin-to-Member role downgrade via API officially supported?

  2. If role downgrade is not supported or restricted, what is the recommended approach for offboarding Admin users while preserving recordings?


Recording Inventory and Discovery

Tenant-level

  • Is there a supported API or report that returns a list of users who currently own cloud recordings in a Zoom tenant?

  • If not, is enumerating recordings per user the expected approach?

User-level

For a specific user:

  • Is there a supported API method to retrieve:

    • The total number of meetings that have cloud recordings?

    • The number of recording files per meeting ?

  • If aggregation is not provided, can you confirm that counting:

    • meetings[] and

    • recording_files[]
      from the recordings API response is the correct and supported approach?


OAuth Scopes (End-to-End Automation)

To ensure our OAuth app is configured correctly, we would appreciate confirmation on:

  • What are the minimum required OAuth scopes to:

    • Search users

    • Identify user roles

    • Downgrade Admin users (if applicable)

    • Transfer recordings and meetings

    • Delete users

  • Are there any scopes that are commonly overlooked for this use case?

Primary Concern

Our primary concern is ensuring no cloud recordings are missed or lost during offboarding, especially when users are already deactivated prior to cleanup. We want to avoid relying on undocumented or unsupported behavior.


What We’re Looking For

  • Confirmation of supported behavior

  • Clarification of limitations

  • Best-practice recommendations for enterprise offboarding

  • Links to official documentation or KB articles

@elisa.zoom - I’ve noticed that you respond promptly on most threads, so I’m tagging you directly to request your help

Hi @Vamshi
Thanks for reaching out to us and happy to help here!
Based on your questions, here are my aswers:

User deletion with recording transfer

Yes, the DELETE /v2/users/{userId} API with transfer_recording=true guarantees the transfer of all cloud recordings owned by the user to the specified transfer email address.

This API works for active users only. If you need to offboard deactivated users, you must reactivate them first before initiating the deletion with recording transfer.

To validate that all recordings have been transferred successfully, you should:

  • Use the List Recordings endpoint for each user
  • Check the transfer recipient’s account to verify all recordings are present
  • Note that you will need to search recordings on a per-user basis, as there is no tenant-wide validation5. endpoint

Admin account handling

Yes, Admin-to-Member role downgrade via API is supported. You can use the Unassign a role endpoint:

DELETE /roles/{roleId}/members/{memberId}

This endpoint allows you to unassign admin roles and convert users into regular members.

To offboard Admin users while preserving recordings, you can follow these steps::

  1. Unassign the admin role using the endpoint above to convert the user to a regular member
  2. Verify the user is in active status (reactivate if necessary)
  3. Use the DELETE /v2/users/{userId} endpoint with transfer_recording=true and transfer_meeting=true parameters
  4. Validate the recording transfer by checking the recipient’s account using the List Recordings endpoint

Recording inventory and discovery

Unfortunately, there is no supported API or report that returns a tenant-wide list of users who currently own cloud recordings. To get this information, you must get recordings on a per-user basis.

For retrieving recordings for a specific user, your approach is correct, counting the meetings[] array and recording_files[] array from the List Recordings API response is the best way to get this data.

Lastly, here are the links to the docs on different collections where you will find each scope you will need to access them:

Cloud recordings: Meetings APIs
Users: Users APIs
Roles: Accounts APIs

Let me know if this helps!

Thank you very much Elisa @elisa.zoom for the detailed clarification — it was extremely helpful and has allowed me to refine the automation design.

i have a few follow-up questions to ensure our implementation aligns fully with Zoom-supported behavior before moving forward with production automation.


1. Handling Deactivated Users – Recording Transfer

You mentioned that the DELETE user API with transfer_recording=true works for active users and that deactivated users must be reactivated first.

Could you please confirm:

  • Is there any API or supported method that allows transferring recordings and deleting deactivated users directly, without reactivating the account first?

  • Or is the officially supported workflow strictly:

    Deactivated User → Reactivate → Delete with transfer parameters

We want to confirm whether reactivation is the only supported approach.


2. Conditional Recording Transfer Logic (Automation Design)

Our intended automation logic is:

  • Identify the Zoom account (active or deactivated)

  • Check whether the user owns cloud recordings

  • If recordings exist:

    • Transfer recordings to an archive account

    • Delete the user

  • If no recordings exist:

    • Delete the user directly (without transfer)

This is required because:

  • Some users have recordings from earlier years (2022–2025) but none recently inm 2026

  • Some users have never created recordings

Could you please confirm:

  • Is this approach aligned with Zoom best practices?

  • Is using the List Recordings API per user the recommended way to determine whether recordings exist before deletion?

  • Are there any limitations or edge cases we should consider when checking historical recordings?


3. License Behavior After User Deletion

Once a Zoom user is deleted via API:

  • Is the assigned license automatically returned to the available license pool?

  • Is any additional action required from administrators to reclaim licenses?


Thank you again for your continued support. appreciate your guidance and look forward to your clarification.

Kind regards,
Vamshi Krishna

@elisa.zoom - did you got chance to check my last message ?

Hi @Vamshi
I was able to run a couple of other tests on my end, and you can transfer recordings and delete deactivated users directly via the DELETE user endpoint, so there is no need to reactivate them.

To your second question, yes the List Recordings API per user is the recommended and only way to determine if a user has recordings associated with them. To check historical recordings you will just have check each individual user and also set the from and to paramters to filter by date

After the user is deleted, the assigned license autmatically returns to the available liciense pool and no further ation needed from administrators

Hope this helps!

Thanks again for the Support and help with the info. i appreciate, i am good with this thread

1 Like

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