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

# Convert a stopped group to a persistent server

> Requires an inactive source with no server records, queued starts or rolling restart. Copies shared settings and transfers plugin and collection assignments, then deletes the source atomically. Returns a new inactive resource with a new ID. Group scaling and deployment settings are discarded. World files and running instances are not migrated. Requires source read/delete and destination write permissions.



## OpenAPI

````yaml https://controller.simplecloud.app/swagger/doc.json post /v0/server-groups/convert-to-persistent
openapi: 3.1.0
info:
  contact:
    name: SimpleCloud support
    url: https://discord.simplecloud.app
  description: >-
    JWT sent in Authorization: Bearer <token>. Access depends on the token's
    network membership and permissions. The admin endpoint requires admin
    claims.
  title: SimpleCloud Controller API
  version: '1.0'
servers:
  - url: https://controller.simplecloud.app/
security: []
externalDocs:
  description: ''
  url: ''
paths:
  /v0/server-groups/convert-to-persistent:
    post:
      tags:
        - server-groups
      summary: Convert a stopped group to a persistent server
      description: >-
        Requires an inactive source with no server records, queued starts or
        rolling restart. Copies shared settings and transfers plugin and
        collection assignments, then deletes the source atomically. Returns a
        new inactive resource with a new ID. Group scaling and deployment
        settings are discarded. World files and running instances are not
        migrated. Requires source read/delete and destination write permissions.
      operationId: convert_group_to_persistent
      parameters:
        - description: Network ID
          in: header
          name: X-Network-ID
          required: true
          schema:
            type: string
        - description: Source group ID
          in: query
          name: server_group_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.ConvertGroupToPersistentRequest'
        description: Destination host
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.CreatePersistentServerResponse'
          description: Created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
          description: Internal Server Error
      security:
        - BearerAuth: []
        - NetworkCredential: []
components:
  schemas:
    models.ConvertGroupToPersistentRequest:
      properties:
        serverhost_id:
          type: string
      required:
        - serverhost_id
      type: object
    models.CreatePersistentServerResponse:
      description: Response for creating a new persistent server
      properties:
        active:
          example: true
          type: boolean
        created_at:
          example: '2023-01-01T12:00:00Z'
          type: string
        max_memory:
          example: 2048
          type: integer
        max_players:
          example: 50
          type: integer
        min_memory:
          example: 1024
          type: integer
        name:
          example: my-persistent-server
          type: string
        persistent_server_id:
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
        player_count:
          example: 0
          type: integer
        priority:
          example: 10
          type: integer
        properties:
          additionalProperties: {}
          type: object
        serverhost_id:
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
        source:
          $ref: '#/components/schemas/models.SourceConfig'
        tags:
          items:
            type: string
          type: array
          uniqueItems: false
        type:
          example: SERVER
          type: string
        updated_at:
          example: '2023-01-01T12:00:00Z'
          type: string
        workflows:
          $ref: '#/components/schemas/models.WorkflowsConfig'
      type: object
    models.ErrorResponse:
      description: Generic error response
      properties:
        error:
          type: string
      type: object
    models.SourceConfig:
      description: Source configuration for server groups
      properties:
        blueprint:
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
        image:
          example: ghcr.io/user/custom-image:latest
          type: string
        type:
          enum:
            - blueprint
            - image
          example: blueprint
          type: string
      type: object
    models.WorkflowsConfig:
      description: Workflows configuration for server groups
      properties:
        manual:
          items:
            type: string
          type: array
          uniqueItems: false
        when:
          $ref: '#/components/schemas/models.WorkflowWhen'
      type: object
    models.WorkflowWhen:
      description: When workflows should be executed
      properties:
        start:
          items:
            type: string
          type: array
          uniqueItems: false
        stop:
          items:
            type: string
          type: array
          uniqueItems: false
      type: object
  securitySchemes:
    NetworkCredential:
      description: >-
        Network password or signed JWT. Password authentication also requires
        X-Network-ID and grants full access to that network. JWT permissions
        still apply.
      in: header
      name: X-Network-Credential
      type: apiKey

````