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.

Benefits over multipart upload:

  • Reliability: File bytes are uploaded directly to storage, avoiding timeouts and connection resets that can occur when proxying large files through the API.
  • Compatibility: Avoids issues with firewalls or proxies that block or scan multipart payloads containing binary content.
  • Simplicity: The follow-up call to, e.g., candidate.uploadResume or candidate.uploadFile is a plain application/json request rather than multipart/form-data.

Requires the candidatesWrite permission.

Usage flow:

  1. Call file.createFileUploadHandle with the file metadata to get a presigned upload URL, form fields, and a handle.
  2. Upload the file directly to the returned url using a multipart/form-data POST request. Include all returned fields as form fields, and the file as the last field named file.
  3. Call candidate.uploadResume with { candidateId, resumeHandle } or candidate.uploadFile with { candidateId, fileHandle } using Content-Type: application/json to associate the uploaded file with a candidate.

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

Body Params
string
enum
required

The context for the file upload. Use CandidateResume for resume uploads and CandidateFiles for general file uploads.

Allowed:
string
required

The name of the file being uploaded, including extension.

string
required

The MIME type of the file being uploaded.

integer
required

The size of the file in bytes.

Response

Language
Credentials
Basic
base64
:
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json