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()andunits.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()andunits.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])