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

# List plans this server can move to

> The plans sold on this server's own hardware, each priced in the service's currency (reseller discount applied) and
quoted against what the service pays today, with the disk consequence of moving. Plans that can't be priced in the
service currency are left out. `pending` is an unpaid upgrade, if any. Session auth only; owner or team ADMIN (billing
role).



## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/cloud/{id}/plan
openapi: 3.1.0
info:
  title: Server.Express API
  version: 1.0.0
  description: >-
    The customer-facing Server.Express API: auth, billing, tickets, cloud and
    dedicated servers, hosting, reselling and account management. Every response
    uses the `{ success, data | error }` envelope.
  contact:
    name: Server.Express
    url: https://server.express
servers:
  - url: https://my.server.express/api
    description: Production
security:
  - bearerAuth: []
  - apiToken: []
tags:
  - name: API Tokens
  - name: Account
  - name: Auth
  - name: Cloud
  - name: Coupons
  - name: Credits
  - name: Dashboard
  - name: Dedicated
  - name: Health
  - name: Hosting
  - name: Integrations
  - name: Invoices
  - name: Livechat
  - name: Notifications
  - name: Passkeys
  - name: Payments
  - name: Products
  - name: Public
  - name: Public Invoices
  - name: Public Tools
  - name: Reseller
  - name: SSH Keys
  - name: Services
  - name: Tasks
  - name: Teams
  - name: Tickets
  - name: Web Hosting
  - name: Webhooks
paths:
  /v1/cloud/{id}/plan:
    get:
      tags:
        - Cloud
      summary: List plans this server can move to
      description: >-
        The plans sold on this server's own hardware, each priced in the
        service's currency (reseller discount applied) and

        quoted against what the service pays today, with the disk consequence of
        moving. Plans that can't be priced in the

        service currency are left out. `pending` is an unpaid upgrade, if any.
        Session auth only; owner or team ADMIN (billing

        role).
      operationId: publicCloudGetPlanOptions
      parameters:
        - name: id
          in: path
          required: true
          description: Service id of the cloud server.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Plan options.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    type: object
                    required:
                      - currency
                      - currentPlanSlug
                      - currentMonthlyMinor
                      - remainingDays
                      - currentDiskGb
                      - options
                      - pending
                    properties:
                      currency:
                        type: string
                      currentPlanSlug:
                        type: string
                        description: Empty string when the service has no recorded plan.
                      currentMonthlyMinor:
                        type: integer
                        description: What the service renews at now (Service.price).
                      remainingDays:
                        type: integer
                        description: >-
                          Days left in the paid period (may be negative when
                          overdue).
                      currentDiskGb:
                        type: integer
                      options:
                        type: array
                        items:
                          $ref: '#/components/schemas/PublicCloudPlanOption'
                      pending:
                        type:
                          - object
                          - 'null'
                        required:
                          - toPlanSlug
                          - invoiceId
                        properties:
                          toPlanSlug:
                            type: string
                          invoiceId:
                            type:
                              - string
                              - 'null'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          description: The server hasn't been built yet. Retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    PublicCloudPlanOption:
      allOf:
        - $ref: '#/components/schemas/PublicCloudPlanChangeQuote'
        - type: object
          required:
            - slug
            - name
            - tagline
            - cores
            - ramMb
            - diskGb
            - monthlyMinor
            - current
            - disk
          properties:
            slug:
              type: string
            name:
              type: string
            tagline:
              type:
                - string
                - 'null'
            cores:
              type: integer
            ramMb:
              type: integer
            diskGb:
              type: integer
            monthlyMinor:
              type: integer
              description: Monthly price in the service currency with reseller discount.
            current:
              type: boolean
            disk:
              $ref: '#/components/schemas/PublicCloudDiskDecision'
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
          description: Human-readable error message.
      additionalProperties: true
    PublicCloudPlanChangeQuote:
      type: object
      required:
        - direction
        - dueNowMinor
        - creditMinor
        - extraDays
        - newMonthlyMinor
        - oldMonthlyMinor
      properties:
        direction:
          type: string
          enum:
            - upgrade
            - downgrade
            - sideways
        dueNowMinor:
          type: integer
          description: Due now before tax; always 0 on a downgrade.
        creditMinor:
          type: integer
          description: Unused value given back as time; 0 on an upgrade.
        extraDays:
          type: integer
          description: Days the renewal date moves out by; 0 on an upgrade.
        newMonthlyMinor:
          type: integer
        oldMonthlyMinor:
          type: integer
    PublicCloudDiskDecision:
      type: object
      required:
        - shrinks
        - shrinkGb
        - keepAsExtraGb
      properties:
        shrinks:
          type: boolean
          description: True when the target plan has less disk than the server has now.
        shrinkGb:
          type: integer
        keepAsExtraGb:
          type: integer
          description: GB carried as a paid extra if you keep the disk.
  responses:
    Unauthorized:
      description: Missing, invalid or expired credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: >-
        Authenticated but not allowed (missing scope, not an admin, or not your
        resource).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The resource doesn't exist or isn't visible to you.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServerError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Session access token (JWT) from POST /v1/auth/login or /v1/auth/refresh.
        A session satisfies every API scope.
    apiToken:
      type: http
      scheme: bearer
      bearerFormat: se_live_<prefix>_<secret>
      description: >-
        Personal API token created under Settings → API tokens. Only routes
        guarded by verifyApiAuth accept it, and the token must carry the scope
        named in the operation's x-required-scope.

````

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