> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rdp.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Change Server Region

> Moves a server to another location for a one-time fee of €2.50 (VAT of your
country included), paid from your account balance. The live stock of the
location is checked before anything is charged.

The move then runs on its own; follow it with `GET /region-changes/{regionChange}`.
Either way the server gets an IP address of the new location, and its old
address is released. A move that fails is credited back to your balance.

- **transfer** keeps the server, its ID and its data. It is stopped while the
  disk is copied, usually 15 to 60 minutes, and started again in the new
  location if it was running. A Linux server boots with new SSH host keys.
- **fresh** replaces the server with a new one carrying the same expiry date
  and name. The response's `region_change.new_server_id` and `deployment_id`
  are set once the setup has started.




## OpenAPI

````yaml post /servers/{server}/region-changes
openapi: 3.1.0
info:
  title: APIFiddle Sample Definition
  version: 0.0.0
  description: Example workspace
servers:
  - url: https://rdp.sh/api/v1
    description: Default production endpoint.
security: []
paths:
  /servers/{server}/region-changes:
    post:
      summary: Move a server to another region
      description: >
        Moves a server to another location for a one-time fee of €2.50 (VAT of
        your

        country included), paid from your account balance. The live stock of the

        location is checked before anything is charged.


        The move then runs on its own; follow it with `GET
        /region-changes/{regionChange}`.

        Either way the server gets an IP address of the new location, and its
        old

        address is released. A move that fails is credited back to your balance.


        - **transfer** keeps the server, its ID and its data. It is stopped
        while the
          disk is copied, usually 15 to 60 minutes, and started again in the new
          location if it was running. A Linux server boots with new SSH host keys.
        - **fresh** replaces the server with a new one carrying the same expiry
        date
          and name. The response's `region_change.new_server_id` and `deployment_id`
          are set once the setup has started.
      operationId: changeServerRegion
      parameters:
        - $ref: '#/components/parameters/server'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - region_id
                - mode
              properties:
                region_id:
                  type: integer
                  description: The location to move to, from `regions` in the options.
                  examples:
                    - 6
                mode:
                  type: string
                  enum:
                    - transfer
                    - fresh
                  description: >
                    `transfer` copies the server's disk to the new location, so
                    files,

                    applications and settings come along. The server is stopped
                    while

                    the disk is copied. `fresh` replaces the server with a new

                    installation in the new location; everything on its disk is
                    erased.
                distro_id:
                  type: integer
                  description: >
                    Required for `fresh`: the operating system to install.
                    Accepts a

                    Linux `distro` ID or a Windows `iso` ID, as on reinstall.
                ssh_key_id:
                  type: integer
                  description: Optional for a fresh Linux server, one of your SSH keys.
      responses:
        '201':
          content:
            application/json:
              schema:
                type: object
                title: ChangeServerRegionOk
                required:
                  - status
                  - message
                  - invoice_id
                  - amount_charged
                  - region_change
                properties:
                  status:
                    type: boolean
                    examples:
                      - true
                  message:
                    type: string
                    examples:
                      - The move to New York has been queued
                  invoice_id:
                    type: integer
                    examples:
                      - 5012
                  amount_charged:
                    type: number
                    examples:
                      - 2.5
                  region_change:
                    $ref: '#/components/schemas/regionChange'
          description: The move was paid from your balance and queued.
        '400':
          content:
            application/json:
              schema:
                type: object
                title: ChangeServerRegionBadRequest
                properties:
                  status:
                    type: boolean
                    examples:
                      - false
                  error:
                    type: string
                    examples:
                      - Insufficient balance
                  required:
                    type: number
                    description: Only when the balance is too low.
                    examples:
                      - 2.5
                  available:
                    type: number
                    description: Only when the balance is too low.
                    examples:
                      - 1
          description: >-
            Insufficient balance, an unknown distro, or an SSH key that is not
            yours.
        '403':
          content:
            application/json:
              schema:
                type: object
                title: ChangeServerRegionUnauthorized
                properties:
                  status:
                    type: boolean
                    examples:
                      - false
                  error:
                    type: string
                    examples:
                      - This action is unauthorized
          description: User does not own the server.
        '404':
          description: Server or region not found.
        '409':
          content:
            application/json:
              schema:
                type: object
                title: ChangeServerRegionConflict
                properties:
                  status:
                    type: boolean
                    examples:
                      - false
                  error:
                    type: string
                    examples:
                      - >-
                        New York is out of stock for this server's plan right
                        now. Please try again later or choose another location.
                  region_change:
                    $ref: '#/components/schemas/regionChange'
          description: >
            The move cannot be made: the location is out of stock, the server is

            already there, it cannot be moved right now, or the guest cannot be

            copied (choose `fresh` instead). Nothing is charged. If the payment
            was

            taken and the move refused at that moment, `region_change` is
            included

            and the fee is already back on your balance.
        '422':
          description: >-
            Validation error (missing `region_id` or `mode`, or `distro_id` for
            a fresh server).
      security:
        - Authorization: []
components:
  parameters:
    server:
      in: path
      name: server
      schema:
        type: string
      required: true
  schemas:
    regionChange:
      type: object
      required:
        - id
        - server_id
        - status
        - mode
      properties:
        id:
          type: integer
          examples:
            - 17
        server_id:
          type: integer
          description: The server the move was ordered for.
          examples:
            - 123
        status:
          type: string
          enum:
            - awaiting_payment
            - pending
            - running
            - completed
            - failed
          examples:
            - running
        mode:
          type: string
          enum:
            - transfer
            - fresh
          examples:
            - transfer
        step:
          type: string
          description: What the move is doing right now.
          examples:
            - Copying the disk
        progress:
          type: integer
          minimum: 0
          maximum: 100
          examples:
            - 46
        from_region:
          $ref: '#/components/schemas/region'
        to_region:
          $ref: '#/components/schemas/region'
        distro:
          type:
            - string
            - 'null'
          description: The operating system of a fresh server.
          examples:
            - Ubuntu 24.04
        old_ip:
          type:
            - string
            - 'null'
          examples:
            - 45.138.16.20
        new_ip:
          type:
            - string
            - 'null'
          description: The new address once a transfer has finished.
          examples:
            - 147.90.219.31
        new_server_id:
          type:
            - integer
            - 'null'
          description: The server that replaced this one, for a fresh installation.
        deployment_id:
          type:
            - integer
            - 'null'
          description: The setup of the fresh server.
        invoice_id:
          type:
            - integer
            - 'null'
        refunded:
          type: boolean
          description: Whether the fee was credited back to your balance.
        error:
          type:
            - string
            - 'null'
          description: Why the move failed, once it has.
        created_at:
          type: string
          examples:
            - '2026-10-21T12:00:00+00:00'
        finished_at:
          type:
            - string
            - 'null'
      description: A move of a server to another location.
    region:
      type: object
      required:
        - id
      properties:
        id:
          type: integer
          examples:
            - 1
            - 2
        region:
          type: string
          examples:
            - nl
            - us
        location:
          type: string
          examples:
            - Amsterdam
            - Phoenix
      description: ''
  securitySchemes:
    Authorization:
      in: header
      name: Authorization
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.