Skip to main content
Inputs are files you send to a tool run. They never create an asset and never appear in your library. To keep a file in the library, use Upload an asset. Both paths need the assets:write scope.

Upload an input

1

Start the upload

POST /v1/inputs/upload-url with content_type, file_name and size, plus sha256 if you have it. The same file in the same workspace is stored once: when the response says exists is true, skip the PUT.
2

PUT the bytes

PUT the file to upload_url with the returned headers.
3

Confirm

POST /v1/inputs/confirm with the input’s url. It runs moderation and reads the file’s facts. A blocked file is deleted and the call returns 422.
Pass the returned url as a media input, {"url": "..."}, to Start a tool run. Only image, video and audio files are accepted, with the same size caps as asset uploads.

Upload from a device

When the file is on a person’s device rather than your server, POST /v1/upload-sessions with a projectId creates a 30-minute upload page. Give the returned url to the person, who must be signed in to Flowy as the same account. Poll GET /v1/upload-sessions/{uploadId} for the files they add, and record where you placed them on a canvas with PATCH /v1/upload-sessions/{uploadId}/nodes.
Last modified on November 2, 2026