Cannot download HUME ai voice files

I have a workflow that uses a HTTP request to create a voice audio file using HUME AI. I want to take the generated file and upload it to box and dropbox. What’s odd is that box and dropbox both produce errors that the binary file has not been provided. I can see the that the binary data in the response of the HTTP request and also in the box and dropbox upload nodes.

I have tried various fixes such as using just json with a file converter and have also used file in the response. No idea what’s wrong.

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.){
  "nodes": [
    {
      "parameters": {
        "authentication": "oAuth2",
        "path": "=/{{ $json.output.properties.filename.description }}.mp3",
        "binaryData": true
      },
      "type": "n8n-nodes-base.dropbox",
      "typeVersion": 1,
      "position": [
        512,
        -160
      ],
      "id": "6a6df56b-b2db-4c1d-8575-854f9e20aa50",
      "name": "Upload a file",
      "credentials": {
        "dropboxOAuth2Api": {
          "id": "2wIsPg2ov4kbwPg6",
          "name": "Dropbox account"
        }
      }
    },
    {
      "parameters": {
        "fileName": "={{ $json.output.properties.filename.description }}.mp3",
        "binaryData": true,
        "parentId": "349779169564"
      },
      "type": "n8n-nodes-base.box",
      "typeVersion": 1,
      "position": [
        368,
        -304
      ],
      "id": "71edd00e-0646-4d9a-b3c4-0391722c012f",
      "name": "Upload a file1",
      "credentials": {
        "boxOAuth2Api": {
          "id": "JO36pqfiua2Ajmah",
          "name": "Box account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.hume.ai/v0/tts/file",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"utterances\": [\n    {\n      \"text\": {{ JSON.stringify($node[\"AI Agent\"].json.output.properties.script.description || \"\") }},\n      \"description\": \"Middle-aged masculine voice with a clear, rhythmic Scots lilt, rounded vowels, and a warm, steady tone with an articulate, academic quality.\",\n      \"voice\": { \"id\": \"fcd2297b-44dd-4115-97af-a13297afb8cb\"}\n    }\n  ],\n\n  \"format\": {\n    \"type\": \"mp3\"\n  },\n  \"num_generations\": 1\n}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -64,
        -224
      ],
      "id": "9500fac1-ab35-4a1c-9150-aa6e83735872",
      "name": "VoiceOver HUME",
      "credentials": {
        "httpHeaderAuth": {
          "id": "XsXiy3G3Ne7oHtOP",
          "name": "Hume API"
        }
      }
    }
  ],
  "connections": {
    "VoiceOver HUME": {
      "main": [
        [
          {
            "node": "Upload a file",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload a file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "4ff4e6bfd004ac5b7ed0e32beeb8f2a8b4ac79b6d739de27a909535204d872fd"
  }
}

Share the output returned by the last node

Looking at your workflow and the Hume AI API documentation, the issue is likely with how the binary data is being handled after the HTTP request. Based on the [dev.hume.ai]( Text-to-Speech (File) | Hume API ) documentation, Hume returns audio files in the specified format (MP3 in your case).

Try these steps to fix the binary data handling:

• In your HTTP Request node, make sure “Response Format” is set to “File” (not JSON) since you’re expecting an audio file

• Check that the “Binary Property Name” in the HTTP Request node is set to “data” (the default)

• In both Box and Dropbox nodes, ensure the “Input Data Field Name” matches the binary property name from the HTTP Request (usually “data”)

• If you’re still having issues, add a Code node between the HTTP Request and upload nodes to verify the binary data structure with `console.log(Object.keys($input.all()[0].binary))`

The [community.n8n.io]( How to use binary data in Http Request ) discussions show this is a common issue with binary file handling - the key is ensuring the binary property names match between nodes.