This feature is in early access and available only on the 2025-10 version of the API.
Namespaces are created automatically during upsert. However, you can also create namespaces ahead of time using the create_namespace operation. Specify a name for the namespace and, optionally, the metadata fields to index.
curl
Copy
# To get the unique host for an index,# see https://docs.pinecone.io/guides/manage-data/target-an-indexPINECONE_API_KEY="YOUR_API_KEY"INDEX_HOST="INDEX_HOST"curl "https://$INDEX_HOST/namespaces" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Api-Key: $PINECONE_API_KEY" \ -H "X-Pinecone-API-Version: 2025-10" \ -d '{ "name": "example-namespace", "schema": { "fields": { "document_id": {"filterable": true}, "document_title": {"filterable": true}, "chunk_number": {"filterable": true}, "document_url": {"filterable": true}, "created_at": {"filterable": true} } } }'
Use the list_namespaces operation to list all namespaces in a serverless index.Up to 100 namespaces are returned at a time by default, in sorted order (bitwise “C” collation). If the limit parameter is set, up to that number of namespaces are returned instead. Whenever there are additional namespaces to return, the response also includes a pagination_token that you can use to get the next batch of namespaces. When the response does not include a pagination_token, there are no more namespaces to return.
Copy
# Not supported with pinecone["grpc"] extras installedfrom pinecone import Pineconepc = Pinecone(api_key="YOUR_API_KEY")index = pc.Index(host="INDEX_HOST")# Implicit pagination using a generator functionfor namespace in index.list_namespaces(): print(namespace.name, ":", namespace.record_count)# Manual paginationnamespaces = index.list_namespaces_paginated( limit=2, pagination_token="eyJza2lwX3Bhc3QiOiIxMDEwMy0=")print(namespaces)
Pinecone does not support renaming namespaces directly. Instead, you must delete the records in the namespace and upsert the records to a new namespace.
Pinecone does not support moving records between namespaces directly. Instead, you must delete the records in the old namespace and upsert the records to the new namespace.
To use the default namespace for upserts, queries, or other data operations, set the namespace parameter to __default__, for example:
Copy
from pinecone import Pineconepc = Pinecone(api_key="YOUR_API_KEY")# To get the unique host for an index, # see https://docs.pinecone.io/guides/manage-data/target-an-indexindex = pc.Index(host="INDEX_HOST")results = index.search( namespace="example-namespace", query={ "inputs": {"text": "Disease prevention"}, "top_k": 2 }, fields=["category", "chunk_text"])print(results)