UpCloud Server Group API

Server group management

Business capability
IT Infrastructure Management BC-600.50

Operations 8

GET /1.3/server-group List server groups #
POST /1.3/server-group Create server group #
GET /1.3/server-group/{uuid} Get server group details #
DELETE /1.3/server-group/{uuid} Delete server group #
PATCH /1.3/server-group/{uuid} Modify server group #
GET /1.3/server-group/{uuid}/servers List server group members #
POST /1.3/server-group/{uuid}/servers Add server to group #
DELETE /1.3/server-group/{uuid}/servers/{server_uuid} Remove server from group #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/upcloud:upcloud-server-group-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

upcloud-server-group-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Upcloud Server Group API
  version: '1.3'
  contact:
    name: UpCloud
    url: https://upcloud.com
    email: hello@upcloud.com
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT.html
  termsOfService: https://upcloud.com/terms-of-service/
  description: 'Operations tagged server-group across 2 of this provider''s published API definitions: upcloud-openapi.json, upcloud-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.upcloud.com
security:
- apiToken: []
tags:
- name: server-group
  description: Server group management
  x-displayName: Server Group
paths:
  /1.3/server-group:
    get:
      tags:
      - server-group
      summary: List server groups
      description: Retrieves a list of server groups.
      operationId: listServerGroups
      parameters:
      - $ref: '#/components/parameters/listServerGroupsLabel'
      responses:
        '200':
          $ref: '#/components/responses/listServerGroups200'
        default:
          $ref: '#/components/responses/listServerGroupsDefault'
      x-upcloud-visibility: public
    post:
      tags:
      - server-group
      summary: Create server group
      description: Creates a new server group.
      operationId: createServerGroup
      requestBody:
        $ref: '#/components/requestBodies/createServerGroup'
      responses:
        '200':
          $ref: '#/components/responses/createServerGroup200'
        default:
          $ref: '#/components/responses/createServerGroupDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/server-group/{uuid}:
    get:
      tags:
      - server-group
      summary: Get server group details
      description: Retrieves details of a specific server group.
      operationId: getServerGroup
      parameters:
      - $ref: '#/components/parameters/getServerGroupUuid'
      responses:
        '200':
          $ref: '#/components/responses/getServerGroup200'
        default:
          $ref: '#/components/responses/getServerGroupDefault'
      x-upcloud-visibility: public
    delete:
      tags:
      - server-group
      summary: Delete server group
      description: Deletes a specific server group.
      operationId: deleteServerGroup
      parameters:
      - $ref: '#/components/parameters/deleteServerGroupUuid'
      responses:
        '204':
          $ref: '#/components/responses/deleteServerGroup204'
        default:
          $ref: '#/components/responses/deleteServerGroupDefault'
      x-upcloud-visibility: public
    patch:
      tags:
      - server-group
      summary: Modify server group
      description: Modifies an existing server group.
      operationId: modifyServerGroup
      parameters:
      - $ref: '#/components/parameters/modifyServerGroupUuid'
      requestBody:
        $ref: '#/components/requestBodies/modifyServerGroup'
      responses:
        '200':
          $ref: '#/components/responses/modifyServerGroup200'
        default:
          $ref: '#/components/responses/modifyServerGroupDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/server-group/{uuid}/servers:
    get:
      tags:
      - server-group
      summary: List server group members
      description: Retrieves a list of servers that are members of a specific server group.
      operationId: listServerGroupMembers
      parameters:
      - $ref: '#/components/parameters/listServerGroupMembersUuid'
      responses:
        '200':
          $ref: '#/components/responses/listServerGroupMembers200'
        default:
          $ref: '#/components/responses/listServerGroupMembersDefault'
      x-upcloud-visibility: public
    post:
      tags:
      - server-group
      summary: Add server to group
      description: Adds a server to a specific server group.
      operationId: addServerToGroup
      parameters:
      - $ref: '#/components/parameters/serverGroupAddServerToGroupUuid'
      requestBody:
        $ref: '#/components/requestBodies/serverGroupAddServerToGroup'
      responses:
        '204':
          $ref: '#/components/responses/serverGroupAddServerToGroup204'
        default:
          $ref: '#/components/responses/serverGroupAddServerToGroupDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/server-group/{uuid}/servers/{server_uuid}:
    delete:
      tags:
      - server-group
      summary: Remove server from group
      description: Removes a server from a specific server group.
      operationId: removeServerFromGroup
      parameters:
      - $ref: '#/components/parameters/serverGroupRemoveServerFromGroupUuid'
      - $ref: '#/components/parameters/serverGroupRemoveServerFromGroupServerUuid'
      responses:
        '204':
          $ref: '#/components/responses/serverGroupRemoveServerFromGroup204'
        default:
          $ref: '#/components/responses/serverGroupRemoveServerFromGroupDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
components:
  parameters:
    listServerGroupsLabel:
      name: label
      in: query
      description: 'A label filter to apply. Format: key:value. Multiple labels can be specified by repeating the parameter.'
      required: false
      schema:
        $ref: '#/components/schemas/serverGroupLabel'
    modifyServerGroupUuid:
      name: uuid
      in: path
      description: The UUID of the server group to modify.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    getServerGroupUuid:
      name: uuid
      in: path
      description: The UUID of the server group to retrieve.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    deleteServerGroupUuid:
      name: uuid
      in: path
      description: The UUID of the server group to delete.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    listServerGroupMembersUuid:
      name: uuid
      in: path
      description: The UUID of the server group whose members are to be listed.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    serverGroupAddServerToGroupUuid:
      name: uuid
      in: path
      description: The UUID of the server group to which the server will be added.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    serverGroupRemoveServerFromGroupServerUuid:
      name: server_uuid
      in: path
      description: The UUID of the server to remove from the group.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
    serverGroupRemoveServerFromGroupUuid:
      name: uuid
      in: path
      description: The UUID of the server group from which the server will be removed.
      required: true
      schema:
        $ref: '#/components/schemas/serverGroupUuid'
  responses:
    createServerGroup200:
      description: Details of the created server group.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroup'
    listServerGroupMembersDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    listServerGroupsDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    deleteServerGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    modifyServerGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    listServerGroups200:
      description: A list of server groups.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroups'
    listServerGroupMembers200:
      description: A list of servers in the server group.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroupServers'
    serverGroupAddServerToGroup204:
      description: The server was successfully added to the group. No content is returned.
    getServerGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    serverGroupRemoveServerFromGroup204:
      description: The server was successfully removed from the group. No content is returned.
    serverGroupAddServerToGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    createServerGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    deleteServerGroup204:
      description: The server group was successfully deleted. No content is returned.
    serverGroupRemoveServerFromGroupDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/serverGroupError'
    modifyServerGroup200:
      description: Details of the modified server group.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroup'
    getServerGroup200:
      description: Details of the server group.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroup'
  requestBodies:
    createServerGroup:
      description: The server group to create.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroupModify'
    serverGroupAddServerToGroup:
      description: The server to add to the group.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroupServerAdd'
    modifyServerGroup:
      description: The server group attributes to modify.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/serverGroupModify'
  schemas:
    serverGroupModify:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        server_group:
          type: object
          properties:
            title:
              type: string
              description: The name of the server group
              example: edge-cluster-a
            servers:
              $ref: '#/components/schemas/serverGroupServers'
            labels:
              type: object
              properties:
                label:
                  type: array
                  items:
                    $ref: '#/components/schemas/serverGroupLabel'
              description: Labels to categorize the server group
              example:
                label:
                - key: env
                  value: prod
            anti_affinity:
              $ref: '#/components/schemas/serverGroupAntiAffinity'
          additionalProperties: false
          example:
            title: edge-cluster-a
            servers:
              servers:
              - 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
            labels:
              label:
              - key: env
                value: prod
            anti_affinity: 'yes'
      required:
      - server_group
      additionalProperties: false
      description: A schema for creating/modifying a server group
      example:
        server_group:
          title: edge-cluster-a
          servers:
            servers:
            - 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
          labels:
            label:
            - key: env
              value: prod
          anti_affinity: 'yes'
    serverGroupLabel:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        key:
          type: string
          description: Label key used to classify the resource
        value:
          type: string
          description: Value associated with the label key
      required:
      - key
      - value
      additionalProperties: false
      description: A key/value pair to label and categorize resources
      example:
        key: env
        value: production
    serverGroups:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        server_groups:
          type: object
          properties:
            server_group:
              type: array
              items:
                $ref: '#/components/schemas/serverGroupDetails'
          required:
          - server_group
          additionalProperties: false
          example:
            server_group:
            - anti_affinity: 'yes'
              anti_affinity_status:
              - uuid: 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
                status: met
              labels:
                label:
                - key: env
                  value: prod
              servers:
                server:
                - 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
              title: edge-cluster-a
              uuid: 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
      required:
      - server_groups
      additionalProperties: false
      description: List of server groups
      example:
        server_groups:
          server_group:
          - anti_affinity: 'yes'
            anti_affinity_status:
            - uuid: 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
              status: met
            labels:
              label:
              - key: env
                value: prod
            servers:
              server:
              - 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
            title: edge-cluster-a
            uuid: 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
    serverGroupAntiAffinity:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      enum:
      - strict
      - 'yes'
      - 'no'
      description: Anti-affinity policy for server groups. Possible values are 'strict', 'yes', or 'no'. 'strict' ensures that no two servers in the group are placed on the same physical host. 'yes' indicates a preference for anti-affinity but does not guarantee it. 'no' means there is no anti-affinity requirement.
      default: 'no'
    serverGroupServers:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        servers:
          type: array
          items:
            $ref: '#/components/schemas/serverGroupUuid'
      required:
      - servers
      additionalProperties: false
      description: List of server UUIDs in the server group
      example:
        servers:
        - 00fce2f9-f9f4-46ff-86af-9e60f131f5cb
        - 0414e0d7-4436-4037-9dd8-6eaf47dce599
    serverGroupAntiAffinityStatus:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        uuid:
          $ref: '#/components/schemas/serverGroupUuid'
        status:
          type: string
          enum:
          - met
          - unmet
          description: Indicates whether the anti-affinity policy is currently being met ('met') or not ('unmet')
      required:
      - uuid
      - status
      additionalProperties: false
      description: Status of anti-affinity policy
    serverGroupError:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        error:
          type: object
          properties:
            error_code:
              type: string
              examples:
              - GENERAL_FAILURE
            error_message:
              type: string
              examples:
              - Your request could not be fulfilled due to a technical issue.
          required:
          - error_code
          - error_message
          additionalProperties: false
      required:
      - error
      additionalProperties: false
      description: A general error response indicating that the request could not be fulfilled due to a technical issue.
    serverGroupDetails:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        anti_affinity:
          $ref: '#/components/schemas/serverGroupAntiAffinity'
        anti_affinity_status:
          type: array
          items:
            $ref: '#/components/schemas/serverGroupAntiAffinityStatus'
        labels:
          type: object
          properties:
            label:
              type: array
              items:
                $ref: '#/components/schemas/serverGroupLabel'
          required:
          - label
          additionalProperties: false
          description: List of labels associated with the server group.
        servers:
          type: object
          properties:
            server:
              type: array
              items:
                $ref: '#/components/schemas/serverGroupUuid'
          required:
          - server
          additionalProperties: false
          description: List of servers associated with the server group.
        title:
          type: string
        uuid:
          $ref: '#/components/schemas/serverGroupUuid'
      required:
      - uuid
      - title
      - anti_affinity
      - anti_affinity_status
      - labels
      - servers
      additionalProperties: false
      description: Details of a server group
    serverGroup:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        server_group:
          $ref: '#/components/schemas/serverGroupDetails'
      required:
      - server_group
      additionalProperties: false
      description: A single server group
    serverGroupServerAdd:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        server:
          type: object
          properties:
            uuid:
              $ref: '#/components/schemas/serverGroupUuid'
          required:
          - uuid
          additionalProperties: false
      required:
      - server
      additionalProperties: false
      description: Schema for adding a server to a server group
    serverGroupUuid:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      format: uuid
      description: Universally unique identifier
      example: 0414e0d7-4436-4037-9dd8-6eaf47dce599
  securitySchemes:
    apiToken:
      type: http
      description: UpCloud API uses HTTP Bearer authentication. An API token is required to authenticate. The API token can be created in the UpCloud control panel. Alternatively, you can create an API token using the API directly, or with upctl. Note that if you want to use HTTP Basic authentication on API or with upctl, you will need to enable API access in the UpCloud control panel first.
      scheme: bearer
x-refined-from:
- upcloud-openapi.json
- upcloud-openapi.yml
x-upcloud-visibility: public
x-tagGroups:
- name: Server
  tags:
  - server
  - server-group
  - server_size
  - plan
  - device
  - events
  - timezone
  - vnc_keymap
- name: Network
  tags:
  - network
  - network-peering
  - ip_address
  - router
  - gateway
  - firewall-ruleset
- name: Account & Access
  tags:
  - account
  - audit-logs
  - account-tokens
  - permission
  - tag
- name: Billing
  tags:
  - price
  - currency
x-provenance:
  method: harvested
  publisher: UpCloud
  source: https://developers.upcloud.com/api/1.3/upcloud-openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)