# Pinecone API error: (400) Reason: Bad Request HTTP response headers

**URL:** <https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933>\
**Category:** Support\
**Tags:** pinecone-assistant\
**Created:** [June 19, 2024, 2:32pm UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933 "2024-06-19T14:32:28Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![btejasri1996](https://avatars.discourse-cdn.com/v4/letter/b/97f17d/32.png) [@btejasri1996](https://community.pinecone.io/u/btejasri1996)\
**Post date:** [June 19, 2024, 2:32pm UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/1 "2024-06-19T14:32:28Z")

</div>

Hi, I am getting an error when using Pinecone and Streamlit. The error message is as follows: Pinecone API error: (400) Reason: Bad Request HTTP response headers: HTTPHeaderDict({‘Date’: ‘Wed, 12 Jun 2024 22:03:59 GMT’, ‘Content-Type’: ‘text/plain’, ‘Content-Length’: ‘90’, ‘Connection’: ‘keep-alive’, ‘server’: ‘envoy’}) HTTP response body: queries[364]: invalid value 0.0084299538284540176 for type [type.googleapis.com/QueryVector](http://type.googleapis.com/QueryVector). Can you help me, please?

---

<div class="post-metadata">

**Author:** ![ZacharyProser](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/zacharyproser/32/1146_2.png) [@ZacharyProser](https://community.pinecone.io/u/ZacharyProser)\
**Post date:** [June 20, 2024, 12:57pm UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/2 "2024-06-20T12:57:49Z")

</div>

Hi @btejasri1996, and welcome to the Pinecone community forums!

Thank you for your question.

Debugging what might be going wrong without seeing your code is difficult.

Could you please paste all your relevant code, _ **being very careful to NOT paste any secrets such as your Pinecone API key**?_

We’ll be able to provide better suggestions once we can see how you’re interacting with the Pinecone SDK.

Best,  
Zack

---

<div class="post-metadata">

**Author:** ![btejasri1996](https://avatars.discourse-cdn.com/v4/letter/b/97f17d/32.png) [@btejasri1996](https://community.pinecone.io/u/btejasri1996)\
**Post date:** [June 20, 2024, 2:02pm UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/3 "2024-06-20T14:02:30Z")

</div>

Hi Zack,

Thank you so much for your response.

Here is my Code:

import os  
import re  
import time  
import hashlib  
import openai  
import pinecone  
from langchain.document\_loaders import PyPDFLoader  
from langchain.text\_splitter import RecursiveCharacterTextSplitter  
import streamlit as st

# Initialize OpenAI API key

openai.api\_key = os.getenv(‘OPENAI\_API\_KEY’, ‘xxxxxxx’)  
model\_name = “text-embedding-ada-002”

# Initialize Pinecone

use\_serverless = True  
from pinecone import Pinecone, ServerlessSpec, PodSpec  
api\_key = os.environ.get(‘PINECONE\_API\_KEY’) or ‘xxxxxxxxx’ # Add your actual API key  
pc = Pinecone(api\_key=api\_key)

if use\_serverless:  
spec = ServerlessSpec(cloud=‘aws’, region=‘us-west-2’)  
else:  
spec = PodSpec(environment=environment)

# Define the index name

index\_name = “resp”

# Check if index already exists

if index\_name not in pc.list\_indexes().names():  
# Create index if it does not exist  
pc.create\_index(  
index\_name,  
dimension=1536, # dimensionality of text-embedding-ada-002  
metric=‘cosine’,  
spec=spec  
)  
# Wait for index to be initialized  
time.sleep(1)

# Connect to index

index = pc.Index(index\_name)

# Preprocess text function

def preprocess\_text(text):  
return re.sub(r’\s+', ’ ', text)

# Process a PDF file to extract and split text

def process\_pdf(file\_path):  
loader = PyPDFLoader(file\_path)  
data = loader.load()  
text\_splitter = RecursiveCharacterTextSplitter(chunk\_size=1000, chunk\_overlap=0)  
documents = text\_splitter.split\_documents(data)  
texts = [str(doc) for doc in documents]  
return texts

# Create embeddings function

def create\_embeddings(texts):  
embeddings\_list =   
for text in texts:  
res = openai.Embedding.create(input=[text], engine=model\_name)  
embeddings\_list.append(res[‘data’][0][‘embedding’])  
return embeddings\_list

# Upsert embeddings to Pinecone function

def upsert\_embeddings\_to\_pinecone(index, embeddings, texts, batch\_size=100):  
ids = [hashlib.md5(text.encode()).hexdigest() for text in texts]  
for i in range(0, len(embeddings), batch\_size):  
batch\_ids = ids[i:i + batch\_size]  
batch\_embeddings = embeddings[i:i + batch\_size]  
index.upsert(vectors=[(id, embedding) for id, embedding in zip(batch\_ids, batch\_embeddings)])  
time.sleep(1)

# Retrieve relevant documents from Pinecone

def retrieve\_documents(query, index, top\_k=5):  
query\_embedding = openai.Embedding.create(input=[query], engine=model\_name)[‘data’][0][‘embedding’]  
if isinstance(query\_embedding, list) and all(isinstance(i, float) for i in query\_embedding):  
results = index.query(queries=[query\_embedding], top\_k=top\_k)  
return [match[‘metadata’][‘text’] for match in results[‘matches’]]  
else:  
raise ValueError(“Invalid embedding format.”)

# Process the PDF and create embeddings

# Upsert embeddings to Pinecone function with error handling

def upsert\_embeddings\_to\_pinecone(file\_names):  
for file\_name in file\_names:  
try:  
file\_path = f"/path/to/your/pdf/{file\_name}" # Replace with your actual file path  
texts = process\_pdf(file\_path)  
embeddings = create\_embeddings(texts)  
ids = [hashlib.md5(text.encode()).hexdigest() for text in texts]  
index.upsert(vectors=[(id, embedding) for id, embedding in zip(ids, embeddings)])  
st.success(f"Successfully upserted embeddings for {file\_name}“)  
except openai.OpenAIError as e:  
st.error(f"OpenAI error occurred while processing {‘Respiratory Health’}: {str(e)}”)  
except pinecone.PineconeApiException as e:  
if ‘Missing low surrogate’ in str(e):  
st.warning(f’Skipping file {“Respiratory Health”} due to encoding issue’)  
else:  
st.error(f"Pinecone API error occurred while processing {‘Respiratory Health’}: {str(e)}“)  
except Exception as e:  
st.error(f"An unexpected error occurred while processing {‘Respiratory Health’}: {str(e)}”)  
raise e

# Streamlit Interface

st.title(‘Ask a question’)

if ‘messages’ not in st.session\_state:  
st.session\_state.messages =

for message in st.session\_state.messages:  
st.chat\_message(message[‘role’]).markdown(message[‘content’])

prompt = st.chat\_input(‘Pass your prompt here’)

if prompt:  
st.chat\_message(‘user’).markdown(prompt)  
st.session\_state.messages.append({‘role’: ‘user’, ‘content’: prompt})

```
try:
    # Retrieve relevant documents from Pinecone
    retrieved_docs = retrieve_documents(prompt, index)
    
    # Combine the retrieved documents into a single context
    context = "\n".join(retrieved_docs)
    
    # Generate response with context
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": prompt},
            {"role": "system", "content": "Context: " + context}
        ]
    ).choices[0].message['content'].strip()
    
    st.chat_message('assistant').markdown(response)
    st.session_state.messages.append({'role': 'assistant', 'content': response})
except ValueError as e:
    st.error(f"Error: {str(e)}")
except pinecone.PineconeApiException as e:
    st.error(f"Pinecone API error: {str(e)}")

```

Thank you.

Regards,  
Tejasri

---

<div class="post-metadata">

**Author:** ![michael.devlin64](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/michael.devlin64/32/3893_2.png) [@michael.devlin64](https://community.pinecone.io/u/michael.devlin64)\
**Post date:** [February 12, 2025, 8:32am UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/4 "2025-02-12T08:32:50Z")

</div>

Hi there, Did you ever get a solution to this. I am getting exactly the error and cant seem to fix it.

---

<div class="post-metadata">

**Author:** ![michael.devlin64](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/michael.devlin64/32/3893_2.png) [@michael.devlin64](https://community.pinecone.io/u/michael.devlin64)\
**Post date:** [February 12, 2025, 8:34am UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/5 "2025-02-12T08:34:18Z")

</div>

Hi Zack, Did you ever find a solution to this issue. I am having the same problem. Thanks

---

<div class="post-metadata">

**Author:** ![abu.zahid](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/abu.zahid/32/4572_2.png) [@abu.zahid](https://community.pinecone.io/u/abu.zahid)\
**Post date:** [October 14, 2025, 6:43am UTC](https://community.pinecone.io/t/pinecone-api-error-400-reason-bad-request-http-response-headers/5933/6 "2025-10-14T06:43:41Z")

</div>

Check if you are adding any null values while saving the vector data.
