Overview
FlowFn workflows can accept, process, and produce files at multiple stages — from trigger inputs through task outputs to final artifacts.
File inputs on triggers
API and form triggers can include file fields. Define a field with type file in your trigger inputs. For multiple files, set multiple: true on the field; the runtime receives an array of file pointers. File uploads use pre-signed URLs: the client uploads the file to secure storage, then passes the file metadata to the trigger.
File outputs from tasks
Tasks that produce files (e.g. Image Processing, Video Processing, AI image generation, PDF Utilities) output file objects. Each file object includes metadata such as url, key, filename, bucket, and contentType.
Referencing file fields in code tasks
In code tasks, use placeholders to access file metadata. For example:
{{$task.<id>.outputs.my_file.url}}– Pre-signed read URL for the file.{{$task.<id>.outputs.my_file.filename}}– Original filename.{{$task.<id>.outputs.my_file.key}}– Storage key.
Without a dotted subpath, the full file object is returned. See Code Task Placeholders and Custom Values for type-aware resolution details.
Artifacts
Files produced during workflow execution are stored as artifacts, organized by workflow, run, and task. You can download artifacts from the run detail view in the dashboard or fetch signed download URLs via the API. Artifact URLs are time-limited for security.
Upload URLs
For workflows and forms that accept file uploads, FlowFn provides pre-signed upload URLs. The client uploads directly to secure storage (AWS S3), and the file reference is passed to the workflow or form submission. This keeps file data out of the request body and supports large files efficiently.
Plan limits
Some plans limit the maximum file size for workflow inputs. The platform also enforces a global maximum regardless of plan. Large media files (video, high-resolution images) should be tested with representative content to confirm they are within your plan's limits. See Billing and Plans.