---
title: "Volume Transfer"
method: POST
path: "/api/v1/training/volumes/{name}/transfer"
tags: ["training"]
---

# Volume Transfer

`POST /api/v1/training/volumes/{name}/transfer`

## Request

- Base URL: `https://api.primeintellect.ai`
- URL: `https://api.primeintellect.ai/api/v1/training/volumes/{name}/transfer`
- Auth: HTTP bearer

Where `prime volumes get/put` should transfer (ENG-6585). A put
needs rft:write, like every other volume write.

## Path parameters

- `name` string, required

## Request body

- VolumeTransferRequest
  - `mode` 'get' | 'put', required
  - `path` string
  - `entries` string[], nullable
  - `leaseId` string, nullable
  - `live` boolean
  - `teamId` string, nullable

## Response `200`

Successful Response

- VolumeTransferResponse: `via: session`: transfer through `session` (the caller's live read-write session). `via: r2`: transfer directly with these prefix-scoped credentials (read-only for get, read-write for put); a put's carry `leaseId`, to send on refresh and to release when done.
  - `via` 'session' | 'r2', required
  - `session` VolumeSessionResponse
    - `id` string, required
    - `volumeName` string, required
    - `status` string, required
    - `readOnly` boolean, required
    - `sshConnection` string, nullable
    - `gateway` VolumeSessionGateway
      - `host` string, required
      - `port` integer, required
      - `certSha256` string, required
    - `hostPublicKey` string, nullable
    - `errorMessage` string, nullable
    - `createdAt` string, date-time, required
    - `phase` string, nullable
    - `progress` string, nullable
    - `liveViewOf` string, nullable
  - `endpoint` string, nullable
  - `bucket` string, nullable
  - `prefix` string, nullable
  - `accessKeyId` string, nullable
  - `secretAccessKey` string, nullable
  - `sessionToken` string, nullable
  - `expiresAt` string, date-time, nullable
  - `leaseId` string, nullable
  - `note` string, nullable

## Other responses

- `401`: Authorization failed
- `422`: Invalid request data

## Changes

> 49 revisions in range; 1 not diffed.

- **2026-10-29** `e96edafbde88`: 3 info
  - added the new optional request property `live`
  - added the optional property `note` to the response with the `200` status
  - added the optional property `session/anyOf[subschema #1: VolumeSessionResponse]/liveViewOf` to the response with the `200` status
- **2026-10-10** `4e60263f0880`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/primeintellect/apis/pi-api/changes/api/v1/training/volumes/:name/transfer/post.md)

---

[API](https://skmtc.dev/primeintellect/apis/pi-api.md) - [All operations](https://skmtc.dev/primeintellect/apis/pi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/primeintellect/apis/pi-api/revisions/7f032a9306b0?raw)
