# Create a Portfolio File Upload Request **POST /portfolio_file_upload_requests** Create a presigned S3 POST upload request for a portfolio file upload. File uploads use a three-step flow: 1. Create an upload request to receive a temporary S3 upload URL and required POST parameters. 2. Upload the file directly to S3 with a multipart/form-data POST. Include every key/value pair from `fields` as form parameters, followed by the file as the file part. 3. Finalize the upload by creating a portfolio file with `upload_request_id`. Upload requests expire after 15 minutes and can only be finalized once. ## Servers - Production server: https://api.visible.vc (Production server) ## Authentication methods - Bearer auth ## Parameters ### Body: application/json (object) - **name** (string) Name of the file to upload - **size** (integer) Claimed upload size in bytes - **content_type** (string) MIME type of the file to upload - **portfolio_company_profile_id** (string(uuid)) ID of the portfolio company profile the file belongs to ## Responses ### 201 Upload request successfully created #### Body: application/json (object) - **portfolio_file_upload_request** (object) ### 400 Bad Request - The request is invalid or malformed #### Body: application/json (object) - **errors** (array[object]) ### 401 Unauthorized - Invalid or missing authentication token #### Body: application/json (object) - **errors** (array[object]) ### 403 Forbidden - The authenticated user does not have access to the requested resource #### Body: application/json (object) - **errors** (array[object]) ### 422 Unprocessable Entity - The request is valid but contains semantic errors #### Body: application/json (object) - **errors** (array[object]) ### 429 Too Many Requests - Rate limit exceeded #### Body: application/json (object) - **errors** (array[object]) [Powered by Bump.sh](https://bump.sh)