---
title: "candidate.uploadFile"
method: POST
path: "/candidate.uploadFile"
tags: ["Candidate"]
---

# candidate.uploadFile

`POST /candidate.uploadFile`

Uploads a file for a candidate. Accepts either a multipart/form-data
request with a `file` file part, or a JSON body with a `fileHandle`
previously created via `file.createFileUploadHandle`.

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

## Request body

- CandidateUploadFileRequest
  - `candidateId` string, uuid, required — The id of the candidate
  - `fileHandle` string, nullable — A handle returned by `file.createFileUploadHandle` after uploading a file to the presigned URL.

## Response `200`

Responses from the candidate.uploadFile endpoint

- union
  - CandidateUploadFileSuccessResponse
    - `success` true, required
    - `results` Candidate, required
      - `id` string, uuid, required — The unique identifier for the candidate
      - `createdAt` string, required — The timestamp when the candidate was created
      - `updatedAt` string, required — The timestamp when the candidate was last updated
      - `name` string, required — The candidate's name
      - `primaryEmailAddress` ContactInfo, required
        - `value` string, required — The email address or phone number of the candidate
        - `type` 'Personal' | 'Work' | 'Other', required — The type of the contact info
        - `isPrimary` boolean, required — Whether the contact info is the primary email or phone number
      - `emailAddresses` ContactInfo[], required — The candidate's email addresses
        - `value` string, required — The email address or phone number of the candidate
        - `type` 'Personal' | 'Work' | 'Other', required — The type of the contact info
        - `isPrimary` boolean, required — Whether the contact info is the primary email or phone number
      - `primaryPhoneNumber` ContactInfo, required
        - `value` string, required — The email address or phone number of the candidate
        - `type` 'Personal' | 'Work' | 'Other', required — The type of the contact info
        - `isPrimary` boolean, required — Whether the contact info is the primary email or phone number
      - `phoneNumbers` ContactInfo[], required — The candidate's phone numbers
        - `value` string, required — The email address or phone number of the candidate
        - `type` 'Personal' | 'Work' | 'Other', required — The type of the contact info
        - `isPrimary` boolean, required — Whether the contact info is the primary email or phone number
      - `socialLinks` SocialLink[], required — The candidate's social links
        - `type` 'LinkedIn' | 'GitHub' | 'Twitter' | 'Medium' | 'StackOverflow' | 'Website' | 'YouTube' | 'CodePen', required — The type of social link
        - `url` string, required — The URL of the social profile
      - `tags` CandidateTag[], required — The candidate's tags
        - `id` string, uuid, required — The candidate tag's unique identifier
        - `title` string, required — The tag's title
        - `isArchived` boolean, required — Whether the tag has been archived
      - `position` string — The candidate's current position
      - `company` string — The candidate's current company
      - `school` string — The candidate's school
      - `applicationIds` string[], required — The unique identifiers of the candidate's applications
      - `resumeFileHandle` FileHandle, required
        - `id` string, uuid, required — The unique identifier for the file
        - `name` string, required — The file name
        - `handle` string, required — The file handle, which can be used with the file.info endpoint
      - `fileHandles` FileHandle[], required — The file handles associated with the candidate
        - `id` string, uuid, required — The unique identifier for the file
        - `name` string, required — The file name
        - `handle` string, required — The file handle, which can be used with the file.info endpoint
      - `customFields` CandidateCustomField[] — The custom field values associated with the candidate
        - `id` string, uuid, required — The unique identifier for the custom field definition
        - `isPrivate` boolean, required — Whether the custom field is private
        - `title` string, required — The title of the custom field
        - `value` union, required — The custom field value
          - boolean
          - number
          - string
          - string[]
          - object
            - `value` number, required — The currency amount
            - `currencyCode` string, required — The currency code
          - object
            - `type` string, required — The range type
            - `minValue` number, required — The minimum value
            - `maxValue` number, required — The maximum value
          - object
            - `type` string, required — The compensation range type
            - `minValue` number, required — The minimum compensation value
            - `maxValue` number, required — The maximum compensation value
            - `currencyCode` string, required — The currency code
            - `interval` string, required — The compensation interval
        - `valueLabel` union — The human-readable label for select custom field values
          - string
          - string[]
      - `profileUrl` string, required — The URL of the candidate's profile in Ashby
      - `source` Source
        - `id` string, uuid, required — The source's unique identifier
        - `title` string, required — The title of the source
        - `isArchived` boolean, required — Whether the source has been archived
        - `sourceType` SourceType, required
          - `id` string, uuid, required — The source type's unique identifier
          - `title` string, required — The title of the source type
          - `isArchived` boolean, required — Whether the source type has been archived
      - `creditedToUser` User
        - `id` string, uuid, required — The unique identifier for the user
        - `firstName` string, required — The user's first name
        - `lastName` string, required — The user's last name
        - `email` string, email, nullable, required — The user's email address
        - `globalRole` 'Organization Admin' | 'Elevated Access' | 'Limited Access' | 'External Recruiter', required — The user's global role in the organization
        - `isEnabled` boolean, required — Whether the user is enabled (not deactivated)
        - `updatedAt` string, required — The timestamp when the user was last updated (ISO 8601 format)
        - `managerId` string, uuid — The unique identifier for the user's manager
        - `customFields` CustomField[] — Custom fields associated with the user (only included when requested)
          - `id` string, uuid, required — The unique identifier for the custom field definition
          - `isPrivate` boolean, required — Whether the custom field is private
          - `title` string, required — The title of the custom field
          - `value` union, required — The value of the custom field
            - boolean
            - number
            - string
            - string[]
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `valueLabel` union — The label of the custom field value. This is only present for value select custom fields.
            - string
            - string[]
      - `timezone` string, nullable — The candidate's timezone
      - `location` CandidateLocation
        - `id` string, uuid, required — The unique identifier for the location
        - `locationSummary` string, nullable, required — A human-readable summary of the location
        - `locationComponents` CandidateLocationComponent[], nullable, required — The individual components of the location
          - `type` string, required — The type of the location component
          - `name` string, required — The name of the location component
      - `fraudStatus` 'Fraudulent' | 'NotFraudulent' | 'Unsure' | 'Unreviewed' | 'PassedFraudCheck', nullable — The fraud status of the candidate
  - 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)
