Skip to main content
You can use the files.read() method to download data from the sandbox.
import fs from 'fs'
import { Sandbox } from 'novita-sandbox/code-interpreter'

const sandbox = await Sandbox.create()

// Create a file in the sandbox for testing
const filePathInSandbox = '/tmp/test-file'
await sandbox.files.write(filePathInSandbox, "test-file-content")

// Read file from sandbox
const content = await sandbox.files.read(filePathInSandbox)

// Write file to local filesystem
const localFilePath = './local-test-file'
fs.writeFileSync(localFilePath, content)

await sandbox.kill()

Download with pre-signed URL

Pre-signed download URLs allow users to download files securely from environments that do not hold Novita SDK credentials, such as web browsers. Create the sandbox with the secure: true option, then use the SDK on your trusted backend to generate the download URL. Return it only to users authorized by your application, and set a short expiration time. The URL acts as a temporary bearer credential until it expires.
import fs from 'fs'
import { Sandbox } from 'novita-sandbox/code-interpreter'

const sandbox = await Sandbox.create({ secure: true })

// Create a test file in the sandbox (requires SDK authentication)
const filePathInSandbox = '/tmp/test-file'
await sandbox.files.write(filePathInSandbox, 'test-file-content')

// Generate pre signed download URL (valid for 120 seconds, optional)
const publicDownloadUrl = await sandbox.downloadUrl(filePathInSandbox, {
  useSignatureExpiration: 120, // optional, in seconds
})

// Simulate "browser/unauthorized environment": without API key, directly GET download
const res = await fetch(publicDownloadUrl)
if (!res.ok) {
  throw new Error(`Download failed: ${res.status} ${await res.text()}`)
}
const content = await res.text()

// Write to local file
const localFilePath = './local-test-file'
fs.writeFileSync(localFilePath, content)
console.log(content)

await sandbox.kill()
Last modified on June 24, 2026