Import

Last updated on May 27, 2026

Import converts test files from your old platform into TofuPilot runs, so you can migrate historical data without rewriting your test code.

Upload a supported format from the dashboard or the API in one step. For arbitrary layouts like CSV and Excel, build a reusable field mapping once, then apply it to every later file from the dashboard or the API.

Supported formats

TofuPilot reads two kinds of file. Tabular formats use arbitrary column names, so you map your columns to TofuPilot fields once and save that mapping as a reusable preset. Structured formats carry a fixed, known schema, so TofuPilot detects the format and maps every field automatically.

Tabular

Structured

Import methods

You can import files from the dashboard or through the API. Both attach the imported runs to a procedure you choose.

Dashboard

The import page lives under a procedure. Open a procedure, go to its import view, then:

  1. Add files. Drag and drop, or click to browse. The dropzone accepts structured and tabular files in one batch.
  2. Review the detected format. Each row shows its detected format. Structured files are marked Ready; tabular files are marked Needs mapping.
  3. Map tabular files. Click a tabular row to open the mapping sidebar, then pick a saved preset or build a new mapping (see CSV).
  4. Import. Every Ready and Mapped file imports in one action.

API

Upload each file to get an upload_id, then call the endpoint for its kind. Authenticate with an API key.

Each format page lists its own API call. See the REST API reference for full request and response schemas.

When your format isn't supported

If your equipment writes a format TofuPilot doesn't read, convert it to a run yourself and post it to the create run endpoint. The run schema is the same one every importer targets, so a converter only has to map your file's fields onto it.

  1. Write a converter. Read your file, then build a run payload: a serial number, an outcome, timing, and the phases and measurements you want to keep.
  2. Post the run. Call POST /v2/runs directly, or use a typed SDK such as Python so the run schema is checked at compile time and you get autocomplete for every field.
  3. Repeat in a loop. Point the converter at a directory to backfill historical files in bulk.

The fastest way to write a converter is to hand the job to a coding agent. Give it a sample of your file, a link to the run schema, and the TofuPilot LLM context, and ask it to generate an upload script. The agent maps your fields to the schema and writes the loop for you.

How import works

TofuPilot parses each file into one or more runs through the same path a live test uses, so an imported run is indistinguishable from one a station produced. The first time it sees a new serial number, it auto-creates the unit, part, revision, and batch.

A single file can produce many runs. Wafer and lot datalogs (STDF, ATDF) and multi-report XML (WATS WSXF, NI TestStand) yield one run per part or report, so a full lot lands as a batch of runs in one import.

Each file is parsed independently. A malformed file is rejected on its own without failing the rest of the batch, and within a multi-run file, the runs that parse cleanly are still imported even if others fail.

How is this guide?

On this page