Skip to main content
The upload endpoint lets you bring your own data into Flowmatic by submitting a CSV file. Once uploaded, Flowmatic parses the file, registers it under a unique 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

Content-Type: multipart/form-data
Authentication: 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.
CSV column headers become template variable names throughout your workflow. For example, a column named email becomes {{item.email}} inside an OUTPUT node’s to field, and a column named rating becomes {{item.rating}} inside a FILTER expression. Keep your headers concise and free of spaces or special characters for the cleanest template syntax.

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 HTTP 200 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 an uploadId, 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).
Once a 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.