Google Vision API returns empty response

Describe the problem/error/question

My workflow is triggered by an image upload to telegram. The image is converted to base64 by the extract from file node. Now I am trying to send a request to Google Vision API via an HTTP Request node in n8n. The exact same request works correctly in Postman, but in n8n, the response body comes back empty ({}), even though the status is 200 OK.

I’ve checked the JSON body, headers, and API key placement, and everything matches what works in Postman.

I’ve also tried:

  • Enabling “Full Response” in the HTTP Request node.
  • Adding/removing various headers to match Postman.
  • Using a Function node instead, but fetch() and this.helpers.request() don’t work in the n8n cloud version.

Is there something about how n8n structures or processes HTTP requests that could be causing this?


What is the error message (if any)?

There’s no error message—the request completes successfully with statusCode: 200, but the response body is empty ({}).


Please share your workflow

{
“nodes”: [
{
“parameters”: {
“updates”: “={{ ["message"] }}”,
“additionalFields”: {
“download”: true,
“imageSize”: “extraLarge”
}
},
“type”: “n8n-nodes-base.telegramTrigger”,
“typeVersion”: 1.1,
“position”: [
-480,
-360
],
“id”: “8104aa19-f754-47c7-a179-862a6e054045”,
“name”: “Telegram Trigger”,
“webhookId”: “82bc0d09-920f-4b99-9bdd-cce51a742bee”,
“credentials”: {
“telegramApi”: {
“id”: “i1EEMyqZmBMLPAsD”,
“name”: “Telegram account”
}
}
},
{
“parameters”: {
“method”: “POST”,
“url”: “=https://vision.googleapis.com/v1/images:annotate?key=AIzaSyAttl_1TUdCxpl1Hwm7Vxw7zXaLT2ihKLU”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{
“name”: “Accept”,
“value”: “application/json”
},
{
“name”: “Content-Type”,
“value”: “application/json”
}
]
},
“sendBody”: true,
“contentType”: “=json”,
“specifyBody”: “={\n "requests": [\n {\n "image": {\n "content": " [BASE64 ENCODED IMAGE GOES HERE]”\n\n },\n "features": [\n {\n "type": "LABEL_DETECTION",\n "maxResults": 10\n }\n ]\n }\n ]\n}\n",
“bodyParameters”: {
“parameters”: [
{}
]
},
“jsonBody”: “{\n "requests": [\n {\n "image": {\n "content": "BASE64_ENCODED_IMAGE"\n },\n "features": [\n {\n "type": "LABEL_DETECTION",\n "maxResults": 5\n }\n ]\n }\n ]\n}\n”,
“options”: {
“response”: {
“response”: {
“fullResponse”: true,
“neverError”: true
}
}
}
},
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4.2,
“position”: [
-20,
-360
],
“id”: “de3f2594-8ae5-4a3b-80c4-07f5046b780f”,
“name”: “HTTP Request”
},
{
“parameters”: {
“operation”: “binaryToPropery”,
“options”: {}
},
“type”: “n8n-nodes-base.extractFromFile”,
“typeVersion”: 1,
“position”: [
-260,
-360
],
“id”: “2a19868b-9f54-4061-a349-05c10f962dce”,
“name”: “Extract from File”
}
],
“connections”: {
“Telegram Trigger”: {
“main”: [
[
{
“node”: “Extract from File”,
“type”: “main”,
“index”: 0
}
]
]
},
“HTTP Request”: {
“main”: [

]
},
“Extract from File”: {
“main”: [
[
{
“node”: “HTTP Request”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “9d9d21b7a9e16cfaef14c6f10c9d5dcbfae66bd900f9a85b01f19fa6f865e3e3”
}
}

Share the output returned by the last node

{
“body”: {},
“headers”: {
“content-type”: “application/json; charset=UTF-8”,
“vary”: “Origin, X-Origin, Referer”,
“date”: “Thu, 30 Jan 2025 03:34:23 GMT”,
“server”: “ESF”,
“x-xss-protection”: “0”,
“x-frame-options”: “SAMEORIGIN”,
“x-content-type-options”: “nosniff”,
“alt-svc”: “h3=":443"; ma=2592000,h3-29=":443"; ma=2592000”,
“connection”: “close”,
“transfer-encoding”: “chunked”
},
“statusCode”: 200,
“statusMessage”: “OK”
}


---

## **Information on your n8n setup**

* **n8n version:** 1.75.2 (Cloud)
* **Database (default: SQLite):** Default
* **n8n EXECUTIONS_PROCESS setting (default: own, main):** Default
* **Running n8n via:** **n8n Cloud**
* **Operating system:** Cloud-based

---

### **Additional Notes**

* The request works **perfectly in Postman** but not in n8n.
* Could this be an issue with how n8n processes the response?
* Any guidance would be greatly appreciated!
* I've removed the giant block of base64 from my workflow so this post wouldn't be over the character limit.
1 Like

It looks like your topic is missing some important information. Could you provide the following if applicable.

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:
1 Like

Hi mkultra! I’m having the same problem!
Sending a reply here so I can follow on this thread if eventually anyone figures this out and shares the knowledge

Having the exact same issue. I am in my free trial and most of the things I’m trying to test need me to send BODY data, can’t get it to work and any endpoint.

Same is happening to me.