diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py
index 8bdaaf5c83731a83fc12f8ff8540827dc0aa8cbb..1a820811f24a123e85ae0e7f6a8f64ab0e11e6a7 100644
--- a/arkindex/documents/api/elements.py
+++ b/arkindex/documents/api/elements.py
@@ -1260,7 +1260,7 @@ class ElementMetadata(ListCreateAPIView):
     The `reference` type is also indexed in search APIs and allows searching by
     known identifiers or references, or any arbitrary string.
     """
-    permission_classes = (IsVerified, )
+    permission_classes = (IsVerifiedOrReadOnly, )
     pagination_class = None
     serializer_class = MetaDataUpdateSerializer
 
diff --git a/arkindex/documents/tests/test_retrieve_elements.py b/arkindex/documents/tests/test_retrieve_elements.py
index 0155c0d90e73a6ed126af93e3a151f6588bb4a13..8c609715ee5b689747e769eb45695938145cb287 100644
--- a/arkindex/documents/tests/test_retrieve_elements.py
+++ b/arkindex/documents/tests/test_retrieve_elements.py
@@ -145,6 +145,36 @@ class TestRetrieveElements(FixtureAPITestCase):
             },
         ])
 
+    def test_list_element_metadata_public(self):
+        self.assertTrue(self.corpus.public)
+        with self.assertNumQueries(2):
+            response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertListEqual(response.json(), [
+            {
+                'dates': [],
+                'id': str(self.folio_metadata.id),
+                'name': 'folio',
+                'type': 'text',
+                'value': '1r',
+                'worker_version': None
+            },
+            {
+                'id': str(self.metadata.id),
+                'name': str(self.metadata.name),
+                'type': self.metadata.type.value,
+                'value': self.metadata.value,
+                'dates': [],
+                'worker_version': None
+            },
+        ])
+
+    def test_list_element_metadata_private_requires_login(self):
+        self.page.corpus = self.private_corpus
+        self.page.save()
+        response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
+        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+
     def test_list_element_metadata_with_entity(self):
         # Link an entity to metadata, db requests number should remains same
         entity = Entity.objects.create(