Skip to main content
Question

Box API Node.js cant upload file 404 Error

  • May 22, 2025
  • 3 replies
  • 57 views

Forum|alt.badge.img

I cant upload file with Box API my code:

var sdk = new BoxSDK({  clientID: BOX_clientID,  clientSecret: BOX_clientSecret});





// Create a basic API client
var client = sdk.getBasicClient(BOX_accesstoken);



var fileData = fs.createReadStream('C:\\Exports\\test.txt')
client
.files.uploadFile('123', 'test.txt', fileData, function(err, file) { if (err){console.log('err: ' + err); } else{console.log('file uploaded: ' + file); } }); // Get some of that sweet, sweet data!
client
.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) { if(err) throw err; console.log('Hello, ' + currentUser.name + '!'); });

This is the output

Hello, UserXYZ!
err: Error: Unexpected API Response [404 Not Found] (not_found: "Not Found")

Also I really don´t understand how to refresh my token with node.js the code from the docs is not working for me. Has somebody working sample codes for uploading files and how I can endless use a token I don´t want to enter new access codes everytime.

Thank you.

3 replies

Forum|alt.badge.img

The only thing I changed was the first parameter '123'.  This needs to be a valid folder_id so I put in '0' and then the upload worked.

 

In this example, I use jwt so the sdk takes care of the token refresh.

 

var BoxSDK = require('box-node-sdk');
var fs = require('fs');
var path = require('path');

var CLIENT_ID = 'xxxx',
  CLIENT_SECRET = 'xxxx',
  PUBLIC_KEY_ID = 'xxxx',
  PRIVATE_KEY_PATH = 'xxxx',
  PRIVATE_KEY_PASSPHRASE = 'xxxx',
  ENTERPRISE_ID = 'xxxx';

var sdk = new BoxSDK({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET,
    appAuth: {
      keyID: PUBLIC_KEY_ID,
      privateKey: fs.readFileSync(path.resolve(__dirname, PRIVATE_KEY_PATH)),
      passphrase: PRIVATE_KEY_PASSPHRASE
    }
});

var client = sdk.getAppAuthClient('enterprise', ENTERPRISE_ID);

var fileData = fs.createReadStream('/users/kdomen/Downloads/test.txt')
client.files.uploadFile('0', 'test.txt', fileData, function(err, file) {
if (err){console.log('err: ' + err);
}
else{console.log('file uploaded: ' + file);  
}
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;  console.log('Hello, ' + currentUser.name + '!');
});

Forum|alt.badge.img

Ah I think you wrote me also on stackoverflow 😄 lets quit this chat here and write there pls. Because I already update the status there.
Thank you

https://stackoverflow.com/questions/45396100/box-api-node-js-cant-upload-file-404-error


Forum|alt.badge.img

When using Box's generated keys, I do the following:

1.  create a directory called config

2.  rename the config file to default.json

3.  and then the code changes below

 

var BoxSDK = require('box-node-sdk');
var config = require('config');
var fs = require('fs');
var path = require('path');


var sdk = new BoxSDK({
    clientID: config.get('boxAppSettings.clientID'),
    clientSecret: config.get('boxAppSettings.clientSecret'),
    appAuth: {
      keyID: config.get('boxAppSettings.appAuth.publicKeyID'),
      privateKey: config.get('boxAppSettings.appAuth.privateKey'),
      passphrase: config.get('boxAppSettings.appAuth.passphrase'),
      expirationTime: 60,
      verifyTimestamp: false
    }
});

var client = sdk.getAppAuthClient('enterprise', "xxxxx");

var fileData = fs.createReadStream('/users/kdomen/Downloads/test.txt')
client.files.uploadFile('0', 'test.txt', fileData, function(err, file) {
  if (err){
    console.log('err: ' + err);
  }
  else {
    console.log('file uploaded: ' + file);  
  }
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;  console.log('Hello, ' + currentUser.name + '!');
});