uploadId, and makes each row available as structured data inside your workflow graphs. You reference the uploadId in a DATA_SOURCE node, and every column header in your CSV becomes a named template variable that downstream nodes — such as AI, FILTER, and OUTPUT — can access directly.
Endpoint
multipart/form-dataAuthentication:
Authorization: Bearer <accessToken> header required.
Request
file
required
The CSV file you want to upload. The first row must contain column headers — these headers become the template variable names you use in downstream nodes (e.g.,
{{item.email}}, {{item.name}}). The file must be a valid .csv with UTF-8 encoding.Example CSV Format
Your CSV file should include a header row followed by data rows. Here is a representative example:Example Request
Response
A successful upload returns HTTP200 OK with a JSON body containing the uploadId for your file.
string
A unique identifier for the uploaded file. Store this value and use it as the
uploadId property in any DATA_SOURCE node that should read from this file. The uploadId remains valid for as long as the file exists in your account.Example Response
Using the uploadId in a Workflow
After you receive anuploadId, you reference it inside a DATA_SOURCE node in your workflow graph. The node makes all rows from the uploaded file available to subsequent nodes via the {{ds.rows}} template expression (where ds is the node’s id).
DATA_SOURCE node is wired into your graph, you can pass {{ds.rows}} to a FILTER node’s source field, an AI node’s prompt, or any other field that accepts template expressions.