Pinecone Not Working?
Index not ready, dimension mismatch, empty query results after upsert, API 401, serverless endpoint confusion, or quota exceeded? Check live status and fix it fast.
Pinecone — live status
Updated every 5 minutes. Full history at prismix.dev/service/pinecone.
What's wrong? Diagnose fast
API key 401 — authentication failed
Pinecone uses the Api-Key header, NOT Authorization: Bearer. Python SDK: Pinecone(api_key="YOUR_KEY"). Generate keys at app.pinecone.io → API Keys. Keys are scoped to the project. If you see "forbidden" (403) you are using a key from a different project.
Index not ready / still initializing
After create_index(), poll describe_index().status.ready until True before upserting or querying. Takes 30s-2min for new serverless indexes. Pod-based indexes take longer. Never assume an index is ready immediately.
Dimension mismatch (400)
Your vectors must exactly match the index dimension. OpenAI ada-002 and text-embedding-3-small = 1536. text-embedding-3-large = 3072 (or custom reduced). Google textembedding-gecko = 768. You cannot change dimension — delete index and recreate with the correct value.
Empty query results after upsert
Most common cause: eventual consistency. Serverless indexes have a delay after upsert — wait 2-5s and retry. Also check namespace — upsert to namespace="ns1" but query default namespace="" returns nothing. Run describe_index_stats() to confirm vector_count.
Wrong endpoint / index not found
Serverless indexes: use the host from describe_index("my-index").host — do NOT guess the URL. SDK v3+ sets this automatically. If using old SDK v2, upgrade: pip install pinecone-client --upgrade. Pod indexes used environment string (us-east1-gcp) which no longer applies to serverless.
Quota exceeded / rate limit
Starter free plan: 5 indexes, 1GB storage, limited reads/writes per month. Error 429 = rate limit, 402 = quota exceeded. Upgrade at app.pinecone.io/billing. Check current usage at app.pinecone.io/metrics. Large batch upserts: break into batches of 100 vectors, retry with backoff on 429.
Pinecone API quick reference
Python SDK (v3+) — correct pattern
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(api_key="YOUR_API_KEY") # no environment needed in v3
# Create serverless index (wait for READY)
pc.create_index(
name="my-index",
dimension=1536, # must match your embedding model
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)
# Wait for index to be ready
while not pc.describe_index("my-index").status["ready"]:
time.sleep(1)
index = pc.Index("my-index")
# Upsert
index.upsert(vectors=[("id1", [0.1, 0.2, ...], {"text": "hello"})])
# Query — namespace must match upsert namespace (default is "")
results = index.query(vector=[0.1, 0.2, ...], top_k=5, include_metadata=True) curl — check index stats (diagnose empty results)
# Get host URL from describe_index first curl -X GET "https://api.pinecone.io/indexes/my-index" \ -H "Api-Key: YOUR_API_KEY" # Returns host: "my-index-HASH.svc.ENV.pinecone.io" # Then check stats on the host curl -X GET "https://HOST_FROM_ABOVE/describe_index_stats" \ -H "Api-Key: YOUR_API_KEY" # Shows namespaces, vector_count — confirms upsert worked
Common embedding dimensions for index creation
| Model | Provider | Dimension |
|---|---|---|
| text-embedding-3-small | OpenAI | 1536 |
| text-embedding-3-large | OpenAI | 3072 (or reduced) |
| text-embedding-ada-002 | OpenAI | 1536 |
| textembedding-gecko@003 | 768 | |
| text-embedding-004 | 768 | |
| embed-english-v3.0 | Cohere | 1024 |
| nomic-embed-text-v1 | Nomic AI | 768 |
| e5-large-v2 | HuggingFace | 1024 |
| BAAI/bge-small-en-v1.5 | HuggingFace | 384 |
Step-by-step fix
- 1
Check live Pinecone status
Visit prismix.dev/service/pinecone. Pinecone outages can affect the data plane (queries/upserts) independently of the console.
- 2
Fix API authentication (401/403)
Header must be
Api-Key: YOUR_KEY— notAuthorization: Bearer. Python SDK v3:Pinecone(api_key="YOUR_KEY")— no environment needed. Generate keys at app.pinecone.io → API Keys. 403 = key from wrong project. - 3
Fix index not ready / initialization failure
After
create_index(), pollpc.describe_index("my-index").status["ready"]in a loop untilTrue. Serverless: ~30-60 seconds. Pod-based: up to 2-3 minutes. Never proceed with upsert or query while status isInitializing. - 4
Fix dimension mismatch
Delete the index and recreate with the correct dimension for your embedding model (see table above). You cannot update dimension in place. The error from Pinecone will say "Vector dimension X does not match the dimension of the index Y." Double-check by running your embedding on a sample text and printing
len(embedding). - 5
Fix empty query results
Run
index.describe_index_stats()and checknamespacesto confirm vectors were upserted and the namespace name. Serverless: wait 3-5 seconds after upsert (eventual consistency). If querying withfilter={"category": "news"}, try the same query without filter first. If that returns results, your filter key/value is wrong or not indexed.
Get alerted when Pinecone goes down
Star Pinecone on Prismix and get emailed the moment status changes. Free, no credit card.
Frequently asked questions
Why is Pinecone not working?
Pinecone issues: (1) API key wrong — header is Api-Key not Authorization: Bearer, generate at app.pinecone.io; (2) index not ready — poll describe_index().status["ready"] before upserting; (3) dimension mismatch — vector length must match index dimension exactly; (4) empty results — wrong namespace or eventual consistency delay; (5) outage — check prismix.dev/service/pinecone.
Is Pinecone down right now?
Check prismix.dev/service/pinecone for live status. Also status.pinecone.io. Pinecone tracks the console, index control plane, and data plane separately — a console issue may not affect API queries.
Pinecone empty results after upsert — how to fix?
Check 4 things: (1) eventual consistency — serverless indexes propagate in 2-5 seconds, wait then retry; (2) namespace mismatch — if you upserted to namespace="ns1" you must query namespace="ns1"; (3) run describe_index_stats() to confirm vectors were stored; (4) try querying without metadata filter first to isolate the filter as the cause.
Pinecone dimension mismatch error — how to fix?
You cannot change an index's dimension. Delete the index with pc.delete_index("my-index") and recreate with the correct dimension for your model: OpenAI text-embedding-3-small and ada-002 = 1536, text-embedding-3-large = 3072, Google textembedding-gecko = 768, Cohere embed-english-v3.0 = 1024. Confirm with len(your_embedding_vector).
Pinecone SDK v2 vs v3 — what changed?
Pinecone SDK v3 (pinecone-client 3+): no environment string, just api_key. import: from pinecone import Pinecone. Old v2 import: import pinecone; pinecone.init(api_key=..., environment=...). The v2 environment string (us-east1-gcp) is only for pod-based indexes. Serverless (new default) uses the host URL from describe_index().host. Upgrade: pip install pinecone-client --upgrade.