---
title: "Create capacity transfer"
method: POST
path: "/preview/v2/capacity_transfers"
tags: ["Capacities"]
---

# Create capacity transfer

`POST /preview/v2/capacity_transfers`

> ⚠️ This endpoint is in [public preview](/preview/roadmap).

Transfer some or all of one capacity into another

## Headers

- `Idempotency-Key` string, nullable

## Request body

- SfcApiV2CreateCapacityTransferRequest
  - `from_capacity` string, required — A resource path like 'sfc:capacity:acme:prod:my-capacity' _or_ an ID. Resource paths are human-readable but not stable - they change when resources are renamed or moved. IDs are stable and permanent.
  - `to_capacity` string, required — A resource path like 'sfc:capacity:acme:prod:my-capacity' _or_ an ID. Resource paths are human-readable but not stable - they change when resources are renamed or moved. IDs are stable and permanent.
  - `allocation_schedule_delta` SfcApiScheduleEntry[], required — Node count over time, as a list of `[start_at, end_at)` time ranges. Example: 5 nodes from t=0 to t=3600 is `[{"start_at": 0, "end_at": 3600, "node_count": 5}]`. `start_at` and `end_at` must be 60-second aligned, `node_count` must be non-negative. On non-final entries, `end_at` may be omitted (inferred from the next entry's `start_at`); gaps fill with `node_count: 0`.
    - `start_at` integer, required — Unix timestamp.
    - `end_at` integer — Unix timestamp.
    - `node_count` integer, required
  - `instance_sku` string, required

## Response `202`

Capacity transfer accepted.

- SfcApiV2CapacityTransferResponse
  - `object` 'capacity_transfer', required
  - `id` string, required
  - `status` 'pending' | 'executed' | 'rejected', required
  - `created_at` integer, required — Unix timestamp.
  - `from_capacity` string, required
  - `to_capacity` string, required
  - `instance_sku` SfcApiInstanceSkuSummary, required — Summary view of an instance SKU embedded on responses that reference one (orders, procurements, instances, capacity transfers). Carries both the id and the human-readable name. Legacy SKUs whose `name` column hasn't been backfilled use `UNKNOWN_INSTANCE_SKU_NAME` as a placeholder so this field is always populated on the wire.
    - `id` string, required
    - `name` string, required
  - `rejected_reason` string, nullable — Reason a capacity transfer was rejected.
  - `allocation_schedule_delta` SfcApiScheduleEntry[], required — Node count over time, as a list of `[start_at, end_at)` time ranges. Example: 5 nodes from t=0 to t=3600 is `[{"start_at": 0, "end_at": 3600, "node_count": 5}]`. `start_at` and `end_at` must be 60-second aligned, `node_count` must be non-negative. On non-final entries, `end_at` may be omitted (inferred from the next entry's `start_at`); gaps fill with `node_count: 0`.
    - `start_at` integer, required — Unix timestamp.
    - `end_at` integer — Unix timestamp.
    - `node_count` integer, required

## Other responses

- `401` — Unauthorized.
- `403` — Forbidden.
- `404` — Not found.
- `422` — Validation failed.
- `500` — Internal server error.
- `503` — Service temporarily unavailable. Try again later.

---

[API](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation.md) · [All operations](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sfcompute/san-francisco-compute-documentation/revisions/93dd7661e9bb/schema)
