# Stage an input file

> A presigned upload for a file-type test input. PUT the bytes, then pass the storage URI as the field's value in a test payload.

Source: https://docs.generalinput.com/api/workflows/input-upload-url



<Endpoint method="POST" path="/v1/workflows/:id/input-upload-url" />

<Access scope="workflows:manage" />

For `inputSchema` properties declared with `"format": "file"`. The runtime materializes the object at `inputs/<field>/<filename>` for the run, exactly like a dashboard upload.

## Body [#body]

| Field      | Type   | Required | Notes                 |
| ---------- | ------ | -------- | --------------------- |
| `filename` | string | yes      | Up to 255 characters. |
| `mimeType` | string | yes      | The file's MIME type. |

## Response [#response]

```json
{
  "uploadUrl": "https://storage.example/…?X-Amz-Signature=…",
  "storageUri": "store://trigger-inputs/wf_01HX…/4e2a9c07-31bd-4856-90f2-7c05be13a9d8/resume.docx"
}
```

`PUT` the file to `uploadUrl` with the same `Content-Type`, then use `storageUri` in the [test](/api/workflows/test) payload. For a multi-file field, stage each file and pass the URIs as an array.
