diff --git a/src/tgclients/crud.py b/src/tgclients/crud.py
index 954919cce5cc427b410a64105222b041410f8ef5..4e94d73b0918cbfee95e5cddba32f984662012cb 100644
--- a/src/tgclients/crud.py
+++ b/src/tgclients/crud.py
@@ -157,6 +157,30 @@ class TextgridCrudRequest:
         )
         return self._handle_response(response)
 
+    def get_uri(self, sid: str, how_many: int) -> Response:
+        """Get TextGrid URIs.
+
+        Get an specified amount of TextGrid URIs for assigning to new TextGrid objects.
+        Useful e.g. for bulk imports.
+
+        Args:
+            sid (str): Session ID
+            how_many (int): number of URIs to generate
+
+        Raises:
+            TextgridCrudException: if HTTP status code >= 400
+
+        Returns:
+            Response: HTTP response from service with TextGrid URIs in body
+        """
+        params = {'sessionId': sid, 'howMany': how_many}
+        response = self._requests.get(
+            self._url + '/getUri',
+            params=params,
+            timeout=self._config.http_timeout,
+        )
+        return self._handle_response(response)
+
     def update_resource(  # noqa: PLR0913
         self,
         sid: str,
@@ -383,6 +407,25 @@ class TextgridCrud(TextgridCrudRequest):
         response = super().create_revision(sid, project_id, textgrid_uri, data, metadata_string)
         return self._parser.parse(BytesIO(response.content), MetadataContainerType)
 
+    def get_uri(self, sid: str, how_many: int) -> list:
+        """Get TextGrid URIs.
+
+        Get an specified amount of TextGrid URIs for assigning to new TextGrid objects.
+        Useful e.g. for bulk imports.
+
+        Args:
+            sid (str): Session ID
+            how_many (int): number of URIs to generate
+
+        Raises:
+            TextgridCrudException: if HTTP status code >= 400
+
+        Returns:
+            list: List with TextGrid URIs
+        """
+        response = super().get_uri(sid=sid, how_many=how_many)
+        return response.text.splitlines()
+
     def read_metadata(self, textgrid_uri: str, sid: Optional[str] = None) -> MetadataContainerType:
         """Read Metadata.
 
diff --git a/tests/integration/test_crud_integration.py b/tests/integration/test_crud_integration.py
index 0e1b39a35246fd7e44ba382bc4a5a81d038bec96..da429edfd67f0afd8c1b91ba821e20bd89da630f 100644
--- a/tests/integration/test_crud_integration.py
+++ b/tests/integration/test_crud_integration.py
@@ -201,3 +201,11 @@ class TestTextgridCrudIntegration:
         os.remove(dl2_png_loc)
         res = crud.delete_resource(sid, textgrid_uri)
         assert res.status_code == 204
+
+    @staticmethod
+    def test_get_uri(crud):
+        sid = os.getenv('SESSION_ID')
+        uris = crud.get_uri(sid, 2)
+        assert len(uris) == 2
+        for uri in uris:
+            assert uri.startswith('textgrid:')
diff --git a/tests/integration/test_crud_request_integration.py b/tests/integration/test_crud_request_integration.py
index 4ca96dbb8af1326f4135961c2b9bab84ab8bafb7..3e4fe09e362d968233011c2beec7a3d572b6d86b 100644
--- a/tests/integration/test_crud_request_integration.py
+++ b/tests/integration/test_crud_request_integration.py
@@ -176,3 +176,10 @@ class TestTextgridCrudIntegration:
         os.remove(dl2_png_loc)
         res = crud_request.delete_resource(sid, textgrid_uri)
         assert res.status_code == 204
+
+    @staticmethod
+    def test_get_uri(crud_request):
+        sid = os.getenv('SESSION_ID')
+        res = crud_request.get_uri(sid, 2)
+        assert res.status_code == 200
+        assert len(res.text.splitlines()) == 2
diff --git a/tests/unit/test_textgrid_crud.py b/tests/unit/test_textgrid_crud.py
index 7192bd7f65bc895fe9b253562ae8828b339422ca..e2690e3fae90928f71f1c69cbd3bfe295ccaf23e 100644
--- a/tests/unit/test_textgrid_crud.py
+++ b/tests/unit/test_textgrid_crud.py
@@ -248,3 +248,16 @@ class TestTextgridCrud:
 
         res = crud.delete_resource(sid, textgrid_uri)
         assert res.status_code == 204
+
+    @staticmethod
+    def test_get_uri(requests_mock, crud, tgconfig):
+        requests_mock.get(
+            tgconfig.host + '/1.0/tgcrud/rest/getUri?sessionId=SESSION_ID&howMany=2',
+            status_code=200,
+            text='textgrid:1234\ntextgrid:2345\n',
+        )
+        sid = 'SESSION_ID'  # does not matter for mocked requests
+        uris = crud.get_uri(sid, 2)
+        assert len(uris) == 2
+        for uri in uris:
+            assert uri.startswith('textgrid:')