Fetch documents
Fetch documents from a namespace. Returns the specified fields for each document. Exactly one of ids or filter must be specified.
ids: Fetch the documents with the given IDs.filter: Fetch every document matching a metadata filter expression. Results are returned a page at a time, holdinglimitdocuments per page (100 by default, 10000 at most). When there are more documents to return, the response includes apaginationtoken you can pass back aspagination_tokento retrieve the next page. When nopaginationtoken is returned, there are no more documents to fetch.
# pip install --upgrade pinecone
import os
from pinecone import Pinecone
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
index = pc.Index(name="articles")
NAMESPACE = "example-namespace"
# Fetch by IDs
response = index.documents.fetch(
namespace=NAMESPACE,
ids=["doc1", "doc2"],
include_fields=["title", "body", "category"],
)
for doc_id, doc in response.documents.items():
print(doc_id, getattr(doc, "title", ""))
# Fetch by metadata filter, paging through all matches
pagination_token = None
while True:
response = index.documents.fetch(
namespace=NAMESPACE,
filter={"category": {"$eq": "news"}},
include_fields=["title", "body", "category"],
pagination_token=pagination_token,
)
for doc_id, doc in response.documents.items():
print(doc_id, getattr(doc, "title", ""))
pagination = getattr(response, "pagination", None)
if not pagination or not getattr(pagination, "next", None):
break
pagination_token = pagination.nextPINECONE_API_KEY="YOUR_API_KEY"
INDEX_HOST="articles-abc123.svc.us-east-1.pinecone.io"
# EXAMPLE REQUEST 1: Fetch by IDs
curl "https://$INDEX_HOST/namespaces/__default__/documents/fetch" \
-H "Api-Key: $PINECONE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Pinecone-Api-Version: 2026-07" \
-d '{
"ids": ["doc1", "doc2"],
"include_fields": ["title", "body", "category"]
}'
# EXAMPLE REQUEST 2: Fetch by metadata filter
curl "https://$INDEX_HOST/namespaces/__default__/documents/fetch" \
-H "Api-Key: $PINECONE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Pinecone-Api-Version: 2026-07" \
-d '{
"filter": { "category": { "$eq": "news" } },
"include_fields": ["title", "body", "category"]
}'POST /namespaces/{namespace}/documents/fetch
{
"documents": {
"doc-1": {
"_id": "doc-1",
"title": "Introduction to Machine Learning"
}
},
"namespace": "my-namespace",
"usage": {
"egress_bytes": 1024,
"read_units": 5
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "No 'ids' or 'filter' provided in the document fetch request. Provide at least one document ID in 'ids', or a metadata filter in 'filter'."
},
"status": 400
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "No 'ids' or 'filter' provided in the document fetch request. Provide at least one document ID in 'ids', or a metadata filter in 'filter'."
},
"status": 400
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "No 'ids' or 'filter' provided in the document fetch request. Provide at least one document ID in 'ids', or a metadata filter in 'filter'."
},
"status": 400
}Authorizations
Section titled “Authorizations”Api-KeystringrequiredAn API Key is required to call Pinecone APIs. Get yours from the console.
Headers
Section titled “Headers”X-Pinecone-Api-VersionstringrequiredRequired date-based version header
Path Parameters
Section titled “Path Parameters”namespacestringrequiredThe namespace to fetch documents from.
ids?string[]A list of document IDs to fetch. Mutually exclusive with filter.
filter?objectA metadata filter expression selecting the documents to fetch. Must not be empty; an empty filter is rejected rather than matching every document. Mutually exclusive with ids.
include_fields?string[]The document fields to return on each document. When omitted or empty, all fields are returned; ['*'] also returns every field.
pagination_token?stringA pagination token from a previous fetch response, used to retrieve the next page of matching documents. Only valid together with filter.
limit?integerThe maximum number of documents to return per page. Only applies to a fetch by filter; a fetch by ids is already bounded by ids and ignores an in-range value, but a value outside 1-10000 is rejected on either form. Defaults to 100.
Required range: 1 <= x <= 10000. Example: 100
Response
Section titled “Response”200 — A successful fetch response.
The response for the fetch_documents operation.
documentsobjectrequiredA map of document IDs to their fetched documents.
pagination?objectShow child attributes
nextstringrequiredExample: Tm90aGluZyB0byBzZWUgaGVyZQo=
namespacestringrequiredThe namespace the documents were fetched from: the request's namespace, or the alias's target namespace when the request named a namespace alias.
Example: my-namespace
usageobjectrequiredUsage information for the fetch_documents operation.
Show child attributes
read_unitsintegerrequiredThe number of read units consumed by this operation.
Example: 5
egress_bytes?integerThe billed egress for this response, in bytes. Measured on the encoded response payload.
Required range: 0 <= x. Example: 1024