Skip to content

Server Groups API Reference

Reference · Updated Sep 2026

Coming from another cloud?

▸AWS·Placement Groups

Placement Groupshigh

  • Policies: cluster/partition/spread vs affinity/anti-affinity.
  • AZ-scoped, no instance moves/merges.
  • Specified at launch via PlacementGroupName.
  • Max 7 partitions per AZ for partition type.
AWS docs ↗
▸Azure·Availability sets

Availability setshigh

  • Uses fault/update domains (max 3/20) for HA, fixed at creation, vs flexible OpenStack server group policies (affinity/anti-affinity).
  • ARM resource (Microsoft.Compute/availabilitySets), VMs assigned at create, no dynamic move.
  • No extra cost, but requires 2+ VMs for SLA; prefers zones/scale sets.
  • Lower latency between VMs in set vs zones, hardware-specific isolation.
Azure docs ↗
▸DigitalOcean·API

DigitalOcean APIhigh

  • Uses REST API over HTTPS with Bearer token authentication via personal access tokens, not OpenStack's Keystone token-based auth.
  • Base URL https://api.digitalocean.com/v2, incompatible with OpenStack APIs like Nova/Neutron.
  • Scoped permissions tied to granular API scopes based on team roles, unlike OpenStack role/project assignments.
  • Rate limits: 5000/hour, 250/minute.
DigitalOcean docs ↗
▸Google Cloud·Sole-Tenant Nodes / Instance Groups

Sole-Tenant Nodes / Instance Groupshigh

  • MIGs offer autoscaling, autohealing, rolling updates via templates; OpenStack only scheduling policies (affinity etc.).
  • Zonal/regional with HA/load balancing integration; no management in OpenStack groups.
  • App health checks trigger recreation; requires external orchestration in OpenStack.
Google Cloud docs ↗
▸Hetzner·Cloud API

Cloud APIhigh

  • Proprietary REST API over HTTPS with Bearer token auth, not OpenStack Identity API (keystone) endpoints or mechanisms.
  • Base URL https://api.hetzner.cloud/v1/ with resource-specific endpoints (e.g., /servers) vs OpenStack service endpoints (nova, cinder).
  • No multi-project handling in single auth; separate per-project tokens vs keystone scopes/projects.
  • Missing identity/catalog endpoints; no service discovery via API.
Hetzner docs ↗

Server groups API reference

In these methods, \{server_group_id\} is a placeholder for the ID of the server group; replace it with the actual ID. The API lists existing server groups, shows details of a specific server group, creates a new server group with a specified policy, and deletes a server group. The policy in the request body determines how the scheduler places instances in the group relative to each other on the compute hosts.

List server groups#

bash
GET /os-server-groups

Show server group details#

bash
GET /os-server-groups/{server_group_id}

Create a server group#

bash
POST /os-server-groups

The request body shape depends on the Nova microversion you send. See Microversions for how to set the header.

Request body (default microversion 2.1, through 2.63):

JSON
{
  "server_group": {
    "name": "SERVER_GROUP_NAME",
    "policies": ["affinity"]
  }
}
  • policies: Single-element array. On the default microversion, the endpoint accepts only affinity and anti-affinity. To use soft-affinity or soft-anti-affinity, send the header OpenStack-API-Version: compute 2.15 (or X-OpenStack-Nova-API-Version: 2.15) or later.

Request body (microversion 2.64 or later):

JSON
{
  "server_group": {
    "name": "SERVER_GROUP_NAME",
    "policy": "anti-affinity",
    "rules": {}
  }
}
  • policy: Single string. From microversion 2.64, this string field replaces the policies array.
  • rules: Optional object of scheduler rules for the policy, for example max_server_per_host with the soft policies.

Delete a server group#

bash
DELETE /os-server-groups/{server_group_id}
Was this page helpful?