diff --git a/cinder/api/common.py b/cinder/api/common.py
index ff5a4ae5ab3..c39770cf996 100644
--- a/cinder/api/common.py
+++ b/cinder/api/common.py
@@ -42,13 +42,13 @@ api_common_opts = [
     cfg.ListOpt('query_volume_filters',
                 default=['name', 'status', 'metadata',
                          'availability_zone',
-                         'bootable'],
+                         'bootable', 'group_id'],
                 help="Volume filter options which "
                      "non-admin user could use to "
                      "query volumes. Default values "
                      "are: ['name', 'status', "
                      "'metadata', 'availability_zone' ,"
-                     "'bootable']")
+                     "'bootable', 'group_id']")
 ]
 
 CONF = cfg.CONF
diff --git a/cinder/api/openstack/api_version_request.py b/cinder/api/openstack/api_version_request.py
index 04d5805e6f7..cb273c91b33 100644
--- a/cinder/api/openstack/api_version_request.py
+++ b/cinder/api/openstack/api_version_request.py
@@ -57,6 +57,7 @@ REST_API_VERSION_HISTORY = """
     * 3.7 - Add cluster API and cluster_name field to service list API
     * 3.8 - Adds resources from volume_manage and snapshot_manage extensions.
     * 3.9 - Add backup update interface.
+    * 3.10 - Add group_id filter to list/detail volumes in _get_volumes.
 
 """
 
@@ -65,7 +66,7 @@ REST_API_VERSION_HISTORY = """
 # minimum version of the API supported.
 # Explicitly using /v1 or /v2 enpoints will still work
 _MIN_API_VERSION = "3.0"
-_MAX_API_VERSION = "3.9"
+_MAX_API_VERSION = "3.10"
 _LEGACY_API_VERSION1 = "1.0"
 _LEGACY_API_VERSION2 = "2.0"
 
diff --git a/cinder/api/openstack/rest_api_version_history.rst b/cinder/api/openstack/rest_api_version_history.rst
index 6d9267ea5e5..3340a5dc52b 100644
--- a/cinder/api/openstack/rest_api_version_history.rst
+++ b/cinder/api/openstack/rest_api_version_history.rst
@@ -165,3 +165,8 @@ user documentation.
          "name": "backup_name",
          "links": "backup_link",
      }
+
+3.10
+----
+  Added the filter parameters ``group_id`` to
+  list/detail volumes requests.
diff --git a/cinder/api/v3/volumes.py b/cinder/api/v3/volumes.py
index 7ed73d84741..f8ef58c7d1e 100644
--- a/cinder/api/v3/volumes.py
+++ b/cinder/api/v3/volumes.py
@@ -36,6 +36,9 @@ class VolumeController(volumes_v2.VolumeController):
         if req_version.matches(None, "3.3"):
             filters.pop('glance_metadata', None)
 
+        if req_version.matches(None, "3.9"):
+            filters.pop('group_id', None)
+
         utils.remove_invalid_filter_options(context, filters,
                                             self._get_volume_filter_options())
         # NOTE(thingee): v2 API allows name instead of display_name
@@ -45,6 +48,9 @@ class VolumeController(volumes_v2.VolumeController):
         if 'name' in filters:
             filters['display_name'] = filters.pop('name')
 
+        if 'group_id' in filters:
+            filters['consistencygroup_id'] = filters.pop('group_id')
+
         strict = req.api_version_request.matches("3.2", None)
         self.volume_api.check_volume_filters(filters, strict)
 
diff --git a/cinder/tests/unit/api/v3/test_volumes.py b/cinder/tests/unit/api/v3/test_volumes.py
index a0a0692965f..80d81d1e2a9 100644
--- a/cinder/tests/unit/api/v3/test_volumes.py
+++ b/cinder/tests/unit/api/v3/test_volumes.py
@@ -87,6 +87,19 @@ class VolumeApiTest(test.TestCase):
                                          'qcow2')
         return [vol1, vol2]
 
+    def _create_volume_with_consistency_group(self):
+        vol1 = db.volume_create(self.ctxt, {'display_name': 'test1',
+                                            'project_id':
+                                            self.ctxt.project_id,
+                                            'consistencygroup_id':
+                                            fake.CONSISTENCY_GROUP_ID})
+        vol2 = db.volume_create(self.ctxt, {'display_name': 'test2',
+                                            'project_id':
+                                            self.ctxt.project_id,
+                                            'consistencygroup_id':
+                                            fake.CONSISTENCY_GROUP2_ID})
+        return [vol1, vol2]
+
     def test_volume_index_filter_by_glance_metadata(self):
         vols = self._create_volume_with_glance_metadata()
         req = fakes.HTTPRequest.blank("/v3/volumes?glance_metadata="
@@ -109,3 +122,26 @@ class VolumeApiTest(test.TestCase):
         res_dict = self.controller.index(req)
         volumes = res_dict['volumes']
         self.assertEqual(2, len(volumes))
+
+    def test_volume_index_filter_by_group_id(self):
+        vols = self._create_volume_with_consistency_group()
+        req = fakes.HTTPRequest.blank(("/v3/volumes?group_id=%s") %
+                                      fake.CONSISTENCY_GROUP_ID)
+        req.headers["OpenStack-API-Version"] = "volume 3.10"
+        req.api_version_request = api_version.APIVersionRequest('3.10')
+        req.environ['cinder.context'] = self.ctxt
+        res_dict = self.controller.index(req)
+        volumes = res_dict['volumes']
+        self.assertEqual(1, len(volumes))
+        self.assertEqual(vols[0].id, volumes[0]['id'])
+
+    def test_volume_index_filter_by_group_id_in_unsupport_version(self):
+        self._create_volume_with_consistency_group()
+        req = fakes.HTTPRequest.blank(("/v3/volumes?group_id=%s") %
+                                      fake.CONSISTENCY_GROUP2_ID)
+        req.headers["OpenStack-API-Version"] = "volume 3.9"
+        req.api_version_request = api_version.APIVersionRequest('3.9')
+        req.environ['cinder.context'] = self.ctxt
+        res_dict = self.controller.index(req)
+        volumes = res_dict['volumes']
+        self.assertEqual(2, len(volumes))
diff --git a/releasenotes/notes/improvement-to-query-consistency-group-detail-84a906d45383e067.yaml b/releasenotes/notes/improvement-to-query-consistency-group-detail-84a906d45383e067.yaml
new file mode 100644
index 00000000000..da53724a271
--- /dev/null
+++ b/releasenotes/notes/improvement-to-query-consistency-group-detail-84a906d45383e067.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Added support for querying volumes filtered by group_id
+    using 'group_id' optional URL parameter.
+    For example, "volumes/detail?group_id={consistency_group_id}".