Skip to content

Floating IP API Reference

Reference · Updated Sep 2026

Coming from another cloud?

▸AWS·Elastic IP addresses

Elastic IP addresseshigh

  • AWS charges idle EIPs.
  • OpenStack floating IPs free/pool-limited.
  • AWS regional instance/ENI.
  • OpenStack project port.
AWS docs ↗
▸Azure·Public IP addresses

Public IP addresseshigh

  • Public IP is a dedicated ARM resource with SKUs (Basic/Standard); IPv4 billed, IPv6 free ().
  • Static/dynamic allocation (Standard static only); zone-redundant option (Standard v2).
  • Associated directly to NIC/LB/gateway vs via router DNAT in OpenStack.
  • Dynamic outbound uses ephemeral IPs even without assoc; no pool allocation like Neutron external nets.
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·Static External IP

Static External IPhigh

  • GCP static IPs are regional or global resources, with unassociated IPs metered per-hour; OpenStack floating IPs are pool-based. See the GCP pricing page for current rates.
  • GCP supports both ephemeral (auto-released on stop) and static IPs; OpenStack floating IPs are always explicit.
  • GCP global static IPs used with global load balancers only; no direct OpenStack equivalent.
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 ↗

Floating IP API reference

See https://docs.openstack.org/api-ref/network/. For error handling guidance, see the API error reference.

In these methods, {floating_ip_id} is the ID of the floating IP, {port_id} is the ID of the instance port a floating IP associates with, and {server_id} is the ID of the instance. These endpoints list floating IPs, allocate a floating IP from an external network, associate and disassociate a floating IP, and release a floating IP.

Quake AI public networks#

Neutron floating IP endpoints#

List floating IPs#

bash
GET /v2.0/floatingips

Show floating IP details#

bash
GET /v2.0/floatingips/{floating_ip_id}

Allocate a floating IP#

bash
POST /v2.0/floatingips

Request body

JSON
{
  "floatingip": {
    "floating_network_id": "PUBLIC_STATIC_NETWORK_ID"
  }
}
  • floating_network_id is the ID of the PublicStatic external network. Retrieve it with GET /v2.0/networks?name=PublicStatic.

Response (201 Created)

JSON
{
  "floatingip": {
    "id": "d46257a1-c6d0-46ae-a146-dc36ad19a430",
    "floating_ip_address": "203.0.113.50",
    "floating_network_id": "PUBLIC_STATIC_NETWORK_ID",
    "status": "DOWN",
    "port_id": null
  }
}

Associate a floating IP with a port#

bash
PUT /v2.0/floatingips/{floating_ip_id}

Request body

JSON
{
  "floatingip": {
    "port_id": "PORT_ID"
  }
}
  • port_id is the ID of the instance port that receives the floating IP. Neutron returns 200 OK with the resolved fixed_ip_address.

Disassociate a floating IP from a port#

bash
PUT /v2.0/floatingips/{floating_ip_id}

Request body

JSON
{
  "floatingip": {
    "port_id": null
  }
}

Release a floating IP#

bash
DELETE /v2.0/floatingips/{floating_ip_id}
  • Neutron returns 204 No Content.

Legacy Nova os-floating-ips endpoints (deprecated)#

List floating IPs (legacy)#

bash
GET /os-floating-ips

Show floating IP details (legacy)#

bash
GET /os-floating-ips/{floating_ip_id}

Allocate a floating IP (legacy)#

bash
POST /os-floating-ips

Request body

JSON
{
  "pool": "PublicStatic"
}
  • pool is the name of the external network to allocate from, either PublicStatic or PublicEphemeral. The pool name must match the external network name; the literal string public returns 404 Floating IP pool not found.

Associate a floating IP with an instance#

bash
POST /servers/{server_id}/action

Request body

JSON
{
  "addFloatingIp": {
    "address": "FLOATING_IP_ADDRESS"
  }
}
  • address is the floating IP address to associate. This action returns 404 on microversion 2.44 or later; use the Neutron PUT /v2.0/floatingips/{floating_ip_id} associate call with a port_id instead.

Disassociate a floating IP from an instance#

bash
POST /servers/{server_id}/action

Request body

JSON
{
  "removeFloatingIp": {
    "address": "FLOATING_IP_ADDRESS"
  }
}
  • This action returns 404 on microversion 2.44 or later; use the Neutron PUT /v2.0/floatingips/{floating_ip_id} disassociate call with port_id set to null instead.

Release a floating IP (legacy)#

bash
DELETE /os-floating-ips/{floating_ip_id}
Was this page helpful?