---
title: Initiate a transfer
url: https://developers.wpengine.com/docs/managed-hosting-platform/api/reference/operations/createsitetransfer/
image: https://developers.wpengine.com/og/docs/managed-hosting-platform/api/reference/operations/createsitetransfer.png
---

# Initiate a transfer

POST

/sites/{site_id}/site_transfers

Select code sample

```sh
curl --request POST \
  --url https://api.wpengineapi.com/v1/sites/a1b2c3d4-e5f6-41b2-b3d4-e5f6a1b2c3d4/site_transfers \
  --header 'Authorization: Basic <credentials>' \
  --header 'Content-Type: application/json' \
  --data '{ "destination_account_id": "eeda3227-9a39-46ae-9e14-20958bb4e6c9", "scheduled_time": "2026-06-01T14:30:00Z", "maintenance_mode": false }'
```

-

Requests a transfer of the given site to a destination account. The transfer is accepted asynchronously and initially has a `pending` or `scheduled` status.

## Limitations & Warnings

- Requires Owner or Full with Billing access on both the origin and destination accounts.
- The origin and destination accounts must be different.
- Sandbox sites cannot be transferred.
- The destination account must have a preferred Data Center configured.
- If `scheduled_time` is provided, it must be an RFC 3339 datetime between 1 hour and 7 days in the future.

## Authorizations

- **[basicAuth](https://developers.wpengine.com/docs/managed-hosting-platform/api/reference/#basicauth)**

## Parameters

### Path Parameters

**site_id**

required

string format: uuid

ID of the site to transfer

#### Example

```
a1b2c3d4-e5f6-41b2-b3d4-e5f6a1b2c3d4
```

## Request Bodyrequired

##### Properties

- `destination_account_id` *(required)* — UUID of the account to transfer the site to
- `scheduled_time` *(optional)* — RFC 3339 datetime at which the transfer should be executed (must be between 1 hour and 7 days in the future). Omit to transfer immediately.
- `maintenance_mode` *(optional)* — Whether to enable maintenance mode during the transfer. Defaults to `false`.

Media typeapplication/json

object

**destination_account_id**

required

UUID of the destination account

string format: uuid

### Example

```
eeda3227-9a39-46ae-9e14-20958bb4e6c9
```

**scheduled_time**

RFC 3339 datetime at which to execute the transfer. Must be between 1 hour and 7 days in the future. Example: ‘2026-06-01T14:30:00Z’

string format: date-time

nullable

### Example

```
2026-06-01T14:30:00Z
```

**maintenance_mode**

Whether to enable maintenance mode on the site during the transfer

boolean

### Example

```json
false
```

## Responses

### 202

Returns the created `SiteTransfer` object.

Media typeapplication/json

object

**id**

required

Unique identifier for the site transfer

string format: uuid

**site**

required

Name of the site being transferred (as it was at time of transfer)

string

**installs**

required

Names of the installs associated with the site at time of transfer

Array\<string>

**origin_account**

required

Name of the account the site is transferring from

string

**destination_account**

required

Name of the account the site is transferring to

string

**status**

required

Current status of the transfer

string

Allowed values: pending scheduled in_progress completed failed cancelled

**scheduled_time**

The time at which the transfer is scheduled to execute. Null for immediate transfers.

string format: date-time

nullable

**created_at**

required

Timestamp when the transfer was created

string format: date-time

**updated_at**

required

Timestamp when the transfer was last updated

string format: date-time

#### Example

```json
{
  "id": "7c3e1a2b-4f5d-4e6c-b7a8-d9e0f1a2b3c4",
  "site": "my-wordpress-site",
  "installs": [
    "mysite",
    "mysitestg"
  ],
  "origin_account": "Acme Corp",
  "destination_account": "New Owner Inc",
  "status": "pending",
  "scheduled_time": "2026-06-01T14:30:00Z",
  "created_at": "2026-05-15T10:00:00Z",
  "updated_at": "2026-05-15T10:05:00Z"
}
```

### 400

Bad Request

Media typeapplication/json

object

**message**

required

A message regarding the error that occurred on the server

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

**errors**

An array of error objects describing specific errors that arose when servicing the request

Array\<object>

object

**resource**

required

The name of the resource that was being processed when the error occurred

string

**field**

required

(Optional) The specific field associated with the error

string

**type**

required

(Optional) A type associated with the error. `invalid_value`, `access_error`, `value_unavailable`

string

**code**

required

(Optional) A machine code relating to the error that occurred with the field and resource

string

**message**

required

(Optional) A human-readable message relating to the error that occurred with the field and resource

string

#### Example

```json
{
  "message": "Invalid request.",
  "errors": [
    {
      "resource": "Resource",
      "field": "field_name",
      "type": "invalid_value",
      "code": "invalid",
      "message": "The value is invalid."
    }
  ]
}
```

### 401

Authentication Error

Media typeapplication/json

object

**message**

required

A message regarding the error that occurred on the server

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

#### Example

```json
{
  "message": "Bad Credentials"
}
```

### 403

Not authorized

Media typeapplication/json

object

**message**

required

A message regarding the error that occurred on the server

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

#### Example

```json
{
  "message": "You don't have permission to perform that action"
}
```

### 404

Not found

Media typeapplication/json

object

**message**

required

A message regarding the error that occurred on the server

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

#### Example

```json
{
  "message": "Not Found"
}
```

### 409

Conflict — e.g. site already has an active transfer, site is not in a transferable state, or destination account is not eligible.

Media typeapplication/json

object

**message**

required

A message regarding the conflict that occurred

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

**errors**

An array of error objects describing specific errors that arose when servicing the request

Array\<object>

object

**resource**

required

The name of the resource that was being processed when the error occurred

string

**field**

required

(Optional) The specific field associated with the error

string

**type**

required

(Optional) A type associated with the error. `invalid_value`, `access_error`, `value_unavailable`

string

**code**

required

(Optional) A machine code relating to the error that occurred with the field and resource

string

**message**

required

(Optional) A human-readable message relating to the error that occurred with the field and resource

string

#### Example

```json
{
  "message": "The request conflicts with the current state of the resource.",
  "errors": [
    {
      "resource": "Resource",
      "field": "field_name",
      "type": "invalid_value",
      "code": "invalid",
      "message": "The value is invalid."
    }
  ]
}
```

### 422

Unprocessable Entity — e.g. validation failed on transfer parameters

Media typeapplication/json

object

**message**

required

A message regarding the unprocessable entity that occurred

string

**documentation_url**

(Optional) A URL where documentation regarding this specific error can be found

string

**errors**

An array of error objects describing specific errors that arose when servicing the request

Array\<object>

object

**resource**

required

The name of the resource that was being processed when the error occurred

string

**field**

required

(Optional) The specific field associated with the error

string

**type**

required

(Optional) A type associated with the error. `invalid_value`, `access_error`, `value_unavailable`

string

**code**

required

(Optional) A machine code relating to the error that occurred with the field and resource

string

**message**

required

(Optional) A human-readable message relating to the error that occurred with the field and resource

string

#### Example

```json
{
  "message": "The request could not be processed.",
  "errors": [
    {
      "resource": "Resource",
      "field": "field_name",
      "type": "invalid_value",
      "code": "invalid",
      "message": "The value is invalid."
    }
  ]
}
```

### 429

Too many requests

### 500

Internal Server Error

Media typeapplication/json

object

**message**

required

A message regarding the error that occurred on the server

string

#### Example

```json
{
  "message": "An unexpected error occurred, please try again in a few minutes"
}
```

### 503

Service unavailable

## Was this helpful?

Thanks for the feedback!

```json
{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://developers.wpengine.com/#website","name":"WP Engine Product Documentation","url":"https://developers.wpengine.com/","description":"Resources for developing, deploying, and scaling on WP Engine.","inLanguage":"en-US","keywords":["API documentation","product documentation","headless WordPress","managed WordPress hosting"],"publisher":{"@id":"https://wpengine.com/#organization"}}]}
```
