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, candidate.uploadFile, or applicationForm.submit 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. Use the returned handle in a follow-up call:
    • candidate.uploadResume with { candidateId, resumeHandle } to attach a resume to a candidate.
    • candidate.uploadFile with { candidateId, fileHandle } to attach a file to a candidate.
    • applicationForm.submit with Content-Type: application/json, where file field values in fieldSubmissions contain the handle string instead of a multipart file reference.

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

Body Params
string
enum
required

The context for the file upload. Use CandidateResume for resume uploads, CandidateFiles for general file uploads, and ApplicationForm for file fields in application form submissions.

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