Free tier 4 min read

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

Pinecone — live status

Updated every 5 minutes. Full history at prismix.dev/service/pinecone.

Full status →

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 Google 768
text-embedding-004 Google 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. 1

    Check live Pinecone status

    Visit prismix.dev/service/pinecone. Pinecone outages can affect the data plane (queries/upserts) independently of the console.

  2. 2

    Fix API authentication (401/403)

    Header must be Api-Key: YOUR_KEY — not Authorization: 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. 3

    Fix index not ready / initialization failure

    After create_index(), poll pc.describe_index("my-index").status["ready"] in a loop until True. Serverless: ~30-60 seconds. Pod-based: up to 2-3 minutes. Never proceed with upsert or query while status is Initializing.

  4. 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. 5

    Fix empty query results

    Run index.describe_index_stats() and check namespaces to confirm vectors were upserted and the namespace name. Serverless: wait 3-5 seconds after upsert (eventual consistency). If querying with filter={"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.

Related vector databases and AI APIs