OpenAPI JSON

Migrate a site

A migration starts a background task from a completed snapshot. The API supports internal migrations to another site in the account and external migrations with destination credentials.

1. Choose a source snapshot

Use List site snapshots and select a snapshot with status: succeeded. Confirm that the destination and the selected content scope are correct before starting.

2. Start the migration

Call Start a site backup migration. The request uses a migration wrapper. Set migration.type to internal or external, then provide the connection fields required by that type.

For a safer first pass, make the scope explicit:

{
  "migration": {
    "type": "internal",
    "destination_url": "https://destination.example.com",
    "scope": {
      "include_files": true,
      "include_database": true
    }
  }
}

The response returns a task ID. Use Show a task to monitor site-level progress and step-level details.

External destinations

External migrations require the documented FTP connection and database credentials. Keep credentials server-side, redact them from logs, and use a secret manager. Do not retry an external migration blindly after a timeout; inspect the task state first.

Failure recovery

409 indicates a conflicting operation, while 422 generally indicates a missing connection, unsupported method, invalid scope, or plan restriction. Read the structured error details, correct the request, and only start a new migration after confirming the existing task’s terminal state.