diff --git a/semantic_router/index/pinecone.py b/semantic_router/index/pinecone.py
index 0ea93d85e0929b434147188e7b5233bdd31fef89..0d0e986002a633ae10ccffbfd68e5457fdcf7590 100644
--- a/semantic_router/index/pinecone.py
+++ b/semantic_router/index/pinecone.py
@@ -363,39 +363,15 @@ class PineconeIndex(BaseIndex):
         if self.index is None:
             raise ValueError("Index is None, could not retrieve vector IDs.")
         all_vector_ids = []
-        next_page_token = None
-
-        if prefix:
-            prefix_str = f"?prefix={prefix}"
-        else:
-            prefix_str = ""
-
-        # Construct the request URL for listing vectors. Adjust parameters as needed.
-        list_url = f"https://{self.host}/vectors/list{prefix_str}"
-        params: Dict = {}
-        if self.namespace:
-            params["namespace"] = self.namespace
-        headers = {"Api-Key": self.api_key}
         metadata = []
 
-        while True:
-            if next_page_token:
-                params["paginationToken"] = next_page_token
-
-            # Make the request to list vectors. Adjust headers and parameters as needed.
-            response = requests.get(list_url, params=params, headers=headers)
-            response_data = response.json()
-
-            # Extract vector IDs from the response and add them to the list
-            vector_ids = [vec["id"] for vec in response_data.get("vectors", [])]
-            # check that there are vector IDs, otherwise break the loop
-            if not vector_ids:
+        for ids in self.index.list(prefix=prefix):
+            if not ids:
                 break
-            all_vector_ids.extend(vector_ids)
+            all_vector_ids.extend(ids)
 
-            # if we need metadata, we fetch it
             if include_metadata:
-                for id in vector_ids:
+                for id in ids:
                     res_meta = (
                         self.index.fetch(ids=[id], namespace=self.namespace)
                         if self.index
@@ -404,12 +380,6 @@ class PineconeIndex(BaseIndex):
                     metadata.extend(
                         [x["metadata"] for x in res_meta["vectors"].values()]
                     )
-                # extract metadata only
-
-            # Check if there's a next page token; if not, break the loop
-            next_page_token = response_data.get("pagination", {}).get("next")
-            if not next_page_token:
-                break
 
         return all_vector_ids, metadata