---
title: "file.createFileUploadHandle"
method: POST
path: "/file.createFileUploadHandle"
tags: ["File"]
---

# file.createFileUploadHandle

`POST /file.createFileUploadHandle`

Creates a presigned upload URL that allows uploading a file directly to storage, bypassing the need to send file bytes through the API.

The presigned URL expires after 10 minutes. The fileUploadContext must be one of CandidateResume, CandidateFiles, or ApplicationForm.

**Requires the [`candidatesWrite`](authentication#permissions-filecreatefileuploadhandle) permission.**

## Request body

- FileCreateFileUploadHandleRequest
  - `fileUploadContext` 'CandidateResume' | 'CandidateFiles' | 'ApplicationForm', required — The context for the file upload
  - `filename` string, required — The name of the file being uploaded, including extension
  - `contentType` string, required — The MIME type of the file being uploaded
  - `contentLength` integer, required — The size of the file in bytes

## Response `200`

Responses from the file.createFileUploadHandle endpoint

- union
  - FileCreateFileUploadHandleSuccessResponse
    - `success` true, required
    - `results` FileUploadHandle, required
      - `handle` string, required — An encrypted handle to pass to a follow-up API call after the file has been uploaded
      - `url` string, uri, required — The presigned URL to upload the file to via a multipart/form-data POST request
      - `fields` object, required — Form fields that must be included before the file field in the multipart upload request
  - ErrorResponse
    - `success` false, required
    - `errors` ErrorDetail[], required
      - `message` string, required
      - `parameter` string

---

[API](https://skmtc.net/ashbyhq/apis/ashby-api.md) · [All operations](https://skmtc.net/ashbyhq/apis/ashby-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ashbyhq/ashby-api/revisions/778b919dc743/schema)
