---
title: "Create an upload transfer ticket"
method: POST
path: "/transfer-tickets"
tags: ["Transfer Tickets"]
---

# Create an upload transfer ticket

`POST /transfer-tickets`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/transfer-tickets`
- Auth: HTTP bearer

Creates either:
- a single PUT upload ticket for smaller files, or
- a multipart upload session for larger files.

The client supplies `sizeBytes` and the API decides which upload path to use.

## Request body

- TransferTicketRequest
  - `clientId` string, required
  - `fileName` string, required
  - `contentType` string
  - `sizeBytes` integer, required
  - `requestedExpirySeconds` integer
  - `contentMd5` string: Base64-encoded MD5 digest for single PUT uploads only

## Response `200`

Upload session created

- union
  - SingleUploadTicketResponse
    - `transferTicket` string, uuid, required
    - `clientId` string, required
    - `upload` PresignedSingleUpload, required
      - `method` string, required
      - `url` string, uri, required
      - `headers` object, required
      - `expiresInSeconds` integer, required
    - `object` ObjectReference, required
      - `bucket` string, required
      - `key` string, required
  - MultipartUploadTicketResponse
    - `transferTicket` string, uuid, required
    - `clientId` string, required
    - `object` ObjectReference, required
      - `bucket` string, required
      - `key` string, required
    - `multipart` MultipartUploadSession, required
      - `uploadId` string, required
      - `partSizeBytes` integer, required
      - `totalParts` integer, nullable
      - `maxParts` integer, required
      - `expiresInSeconds` integer, required
      - `initialParts` MultipartPart[], required
        - `partNumber` integer, required
        - `method` string, required
        - `url` string, uri, required
        - `headers` object, required
        - `expiresInSeconds` integer, required
      - `operations` MultipartOperationPaths, required
        - `presignPartsPath` string, required
        - `completePath` string, required
        - `abortPath` string, required

## Other responses

- `400`: Request failed
- `401`: Request failed
- `403`: Request failed
- `404`: Request failed

## Changes

- **2026-10-27** `1bf94ab7f66e`: 1 info
  - the endpoint scheme security `basicAuth` was removed from the API

[Operation history](https://skmtc.dev/ministryofjustice/apis/integration-hub-managed-file-transfer-api/changes/transfer-tickets/post.md)

---

[API](https://skmtc.dev/ministryofjustice/apis/integration-hub-managed-file-transfer-api.md) - [All operations](https://skmtc.dev/ministryofjustice/apis/integration-hub-managed-file-transfer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ministryofjustice/apis/integration-hub-managed-file-transfer-api/revisions/1bf94ab7f66e?raw)
