diff --git a/docs/gl_objects/mr_approvals.rst b/docs/gl_objects/mr_approvals.rst
index b5de88c28..253b68db3 100644
--- a/docs/gl_objects/mr_approvals.rst
+++ b/docs/gl_objects/mr_approvals.rst
@@ -48,13 +48,12 @@ Change project-level or MR-level MR approvals settings::
     p_mras.approvals_before_merge = 2
     p_mras.save()
 
-    mr_mras.approvals_before_merge = 2
-    mr_mras.save()
+    mr_mras.set_approvers(approvals_required = 1)
 
 Change project-level or MR-level MR allowed approvers::
 
 	project.approvals.set_approvers(approver_ids=[105],
                                     approver_group_ids=[653, 654])
 
-	mr.approvals.set_approvers(approver_ids=[105],
+	mr.approvals.set_approvers(approvals_required = 1, approver_ids=[105],
                                approver_group_ids=[653, 654])
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 1750a3641..6b60583fa 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -2685,10 +2685,13 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
     _update_uses_post = True
 
     @exc.on_http_error(exc.GitlabUpdateError)
-    def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
+    def set_approvers(
+        self, approvals_required, approver_ids=None, approver_group_ids=None, **kwargs
+    ):
         """Change MR-level allowed approvers and approver groups.
 
         Args:
+            approvals_required (integer): The number of required approvals for this rule
             approver_ids (list): User IDs that can approve MRs
             approver_group_ids (list): Group IDs whose members can approve MRs
 
@@ -2699,8 +2702,16 @@ def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
         approver_ids = approver_ids or []
         approver_group_ids = approver_group_ids or []
 
-        path = "%s/%s/approvers" % (self._parent.manager.path, self._parent.get_id())
-        data = {"approver_ids": approver_ids, "approver_group_ids": approver_group_ids}
+        path = "%s/%s/approval_rules" % (
+            self._parent.manager.path,
+            self._parent.get_id(),
+        )
+        data = {
+            "approvals_required": approvals_required,
+            "rule_type": "regular",
+            "user_ids": approver_ids,
+            "group_ids": approver_group_ids,
+        }
         self.gitlab.http_put(path, post_data=data, **kwargs)
 
 
diff --git a/tools/ee-test.py b/tools/ee-test.py
index 82adf5cc1..af1295788 100755
--- a/tools/ee-test.py
+++ b/tools/ee-test.py
@@ -37,7 +37,7 @@ def end_log():
 approval.save()
 approval = project1.approvals.get()
 assert v != approval.reset_approvals_on_push
-project1.approvals.set_approvers([1], [])
+project1.approvals.set_approvers(1, [1], [])
 approval = project1.approvals.get()
 assert approval.approvers[0]["user"]["id"] == 1
 
@@ -50,7 +50,7 @@ def end_log():
 approval.save()
 approval = mr.approvals.get()
 assert approval.approvals_required == 3
-mr.approvals.set_approvers([1], [])
+mr.approvals.set_approvers(1, [1], [])
 approval = mr.approvals.get()
 assert approval.approvers[0]["user"]["id"] == 1