Skip to content
April 12, 2026Dashboard 2.19.0Python SDK 2.2.6C# SDK 2.3.3Rust SDK 2.1.4C++ SDK 2.0.2MATLAB SDK 2.0.2

Attach files to runs and units in one call

Uploading files to test runs and units used to require three API calls (initialize, PUT, finalize) plus a fourth to link the attachment. Now it's one call across all five SDK clients.

  • Added runs.attachments.upload() and units.attachments.upload() helpers that handle the full upload flow in a single call across Python, C#, Rust, C++, and MATLAB
  • Added units.attachments.delete() to remove attachments from units by ID
  • Added runs.attachments.download() and units.attachments.download() to download attachments to local files
from tofupilot.v2 import TofuPilot

client = TofuPilot()

# Upload a file to a run
client.runs.attachments.upload(id=run.id, file="data/test-report.pdf")

# Upload a file to a unit
client.units.attachments.upload(serial_number="SN-0001", file="data/calibration.pdf")

# Download
client.runs.attachments.download(attachment, dest="local-report.pdf")

# Delete (units only)
client.units.attachments.delete(serial_number="SN-0001", ids=[attachment_id])

Try these features today