diff --git a/src/api/users.js b/src/api/users.js
index 3755ee7ccd423f61497d40ac31263893fc661663..8298eeca047c6b890bbe5f84061401adca901fca 100644
--- a/src/api/users.js
+++ b/src/api/users.js
@@ -89,12 +89,13 @@ export async function getPasswordResetToken(nickname, authHost, token) {
   })
 }
 
-export async function requirePasswordReset(nickname, authHost, token) {
+export async function forcePasswordReset(nicknames, authHost, token) {
   return await request({
     baseURL: baseName(authHost),
-    url: `/api/pleroma/admin/users/${nickname}/force_password_reset`,
+    url: `/api/pleroma/admin/users/force_password_reset`,
     method: 'patch',
-    headers: authHeaders(token)
+    headers: authHeaders(token),
+    data: { nicknames }
   })
 }
 
diff --git a/src/store/modules/users.js b/src/store/modules/users.js
index 9c0c594d60d81db736c4435dbddbdc57b2d42fd9..75b07402807d20ae9260cf72f09d87fb5a3ca710 100644
--- a/src/store/modules/users.js
+++ b/src/store/modules/users.js
@@ -12,7 +12,7 @@ import {
   searchUsers,
   tagUser,
   untagUser,
-  requirePasswordReset,
+  forcePasswordReset,
   confirmUserEmail,
   resendConfirmationEmail
 } from '@/api/users'
@@ -207,9 +207,10 @@ const users = {
 
       dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: users[0].id })
     },
-    async RequirePasswordReset({ dispatch, getters }, user) {
+    async RequirePasswordReset({ dispatch, getters }, users) {
+      const nicknames = users.map(user => user.nickname)
       try {
-        await requirePasswordReset(user.nickname, getters.authHost, getters.token)
+        await forcePasswordReset(nicknames, getters.authHost, getters.token)
       } catch (_e) {
         return
       }
diff --git a/src/views/users/components/ModerationDropdown.vue b/src/views/users/components/ModerationDropdown.vue
index b44a7c015b1637d631c7396529dfdd1dbbc750d0..892b8f392f85460916afa60d632d2d7c8b00e4a4 100644
--- a/src/views/users/components/ModerationDropdown.vue
+++ b/src/views/users/components/ModerationDropdown.vue
@@ -95,7 +95,7 @@
       </el-dropdown-item>
       <el-dropdown-item
         v-if="user.local"
-        @click.native="requirePasswordReset(user.nickname)">
+        @click.native="requirePasswordReset(user)">
         {{ $t('users.requirePasswordReset') }}
       </el-dropdown-item>
     </el-dropdown-menu>
@@ -136,13 +136,13 @@ export default {
     handleEmailConfirmation(user) {
       this.$store.dispatch('ConfirmUsersEmail', [user])
     },
-    requirePasswordReset(nickname) {
+    requirePasswordReset(user) {
       const mailerEnabled = this.$store.state.user.nodeInfo.metadata.mailerEnabled
       if (!mailerEnabled) {
         this.$alert(this.$t('users.mailerMustBeEnabled'), 'Error', { type: 'error' })
         return
       }
-      this.$store.dispatch('RequirePasswordReset', { nickname })
+      this.$store.dispatch('RequirePasswordReset', [user])
     },
     showAdminAction({ local, id }) {
       return local && this.showDeactivatedButton(id)
diff --git a/src/views/users/components/MultipleUsersMenu.vue b/src/views/users/components/MultipleUsersMenu.vue
index 1fdc029b6208b9bee989e0302023277d475979fa..de058ad8f58dd2c394ead0634f9bac6a8c3d127a 100644
--- a/src/views/users/components/MultipleUsersMenu.vue
+++ b/src/views/users/components/MultipleUsersMenu.vue
@@ -216,8 +216,9 @@ export default {
         },
         requirePasswordReset: () => {
           const filtered = this.selectedUsers.filter(user => user.local)
-          filtered.map(user => this.$store.dispatch('RequirePasswordReset', user))
-          this.$emit('apply-action')
+          const requirePasswordResetFn = async(users) => await this.$store.dispatch('RequirePasswordReset', users)
+
+          applyAction(filtered, requirePasswordResetFn)
         },
         confirmAccounts: () => {
           const filtered = this.selectedUsers.filter(user => user.local && user.confirmation_pending)