---
title: "Floating IPs"
slug: "floating-ips-allocation"
source: "https://app.cloudpe.com/help/floating-ips-allocation"
updated: "2026-08-30T19:03:44.370Z"
---

# Floating IPs

## Overview

A floating IP is a public IPv4 address allocated from an external network pool in a region and held by your project until you release it. You can attach it to an instance to make that instance reachable from the internet, detach it, and re-attach it to a different instance — the address itself stays with your project the whole time.

Floating IPs are managed under **NETWORK** → **Floating IPs** in the dashboard, or through the floating IPs API.

## Before you start

- You need the `floating_ips:read` permission to view floating IPs, `floating_ips:create` to allocate, `floating_ips:update` to assign or unassign, and `floating_ips:delete` to release.
- The project must already be provisioned in OpenStack. A brand-new project that has not finished provisioning cannot allocate an address yet.
- Your project must have floating IP quota available in the target region.
- To attach an address to an instance, the instance's subnet must be attached to a router whose gateway is on the same external network the floating IP was allocated from. Without that router path, the assignment will be rejected.
- The floating IP and the instance must be in the same region and the same project.

## Steps

### Allocate a floating IP

1. Go to **NETWORK** → **Floating IPs**.

   ![](/kb/networking/floating-ips-allocation-01-list.png)

2. Click **Allocate IP**. The **Allocate Floating IP** dialog opens.

   ![](/kb/networking/floating-ips-allocation-02-allocate.png)

3. Choose the region and project for the address. Optionally choose the external network to allocate from, and add a description to help you identify the address later.
4. Confirm. The new address appears in the list once the pool has issued it.

### Assign a floating IP to an instance

1. On the **Floating IPs** list, find an address that is not currently assigned.
2. Choose the assign action and select the target instance. If the instance has more than one network port, you can narrow the target by supplying the port or the fixed IPv4 address that the floating IP should map to.
3. Once assigned, traffic to the public address is forwarded to the instance's private address. Firewall rules on the instance's security groups still apply — open the ports you need under **NETWORK** → **Firewall**.

### Unassign and release

- Unassigning detaches the address from the instance but keeps it reserved for your project, so you can re-use the same address later.
- Releasing returns the address to the pool permanently. An address must be unassigned before it can be released, and the address is not guaranteed to be available again afterwards.

## API

All calls use `Authorization: Bearer <API_KEY>`.

| Method + path | Purpose |
|---|---|
| `GET /api/v1/floating-ips` | List floating IPs |
| `POST /api/v1/floating-ips` | Allocate a floating IP |
| `GET /api/v1/floating-ips/{ip_id}` | Get one floating IP |
| `PATCH /api/v1/floating-ips/{ip_id}` | Update a floating IP |
| `DELETE /api/v1/floating-ips/{ip_id}` | Release a floating IP |
| `POST /api/v1/floating-ips/{ip_id}/assign` | Assign to an instance |
| `POST /api/v1/floating-ips/{ip_id}/unassign` | Unassign from an instance |
| `GET /api/v1/floating-ips/{ip_id}/history` | Get assignment history |

Allocate an address:

```bash
curl -X POST https://app.cloudpe.com/api/v1/floating-ips \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "<project_id>",
    "region_id": "<region_id>",
    "description": "web tier ingress"
  }'
```

`project_id` and `region_id` are required; `region_id` accepts a region slug or UUID. Pass `floating_network_id` if you want to allocate from a specific external network pool instead of the default one.

Assign it to an instance:

```bash
curl -X POST https://app.cloudpe.com/api/v1/floating-ips/<ip_id>/assign \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "instance_id": "<instance_id>"
  }'
```

Add `port_id` to bind to a specific Neutron port, or `fixed_ip` to bind to the port that owns a given fixed IPv4 address.

Unassign, then release:

```bash
curl -X POST https://app.cloudpe.com/api/v1/floating-ips/<ip_id>/unassign \
  -H "Authorization: Bearer <API_KEY>"

curl -X DELETE https://app.cloudpe.com/api/v1/floating-ips/<ip_id> \
  -H "Authorization: Bearer <API_KEY>"
```

## Limits & billing

- The number of floating IPs a project can hold is capped by its quota in each region. Allocation fails once the quota is reached.
- Floating IPs are metered hourly. Metering starts when the address is allocated and stops when it is released — an allocated address that is not assigned to any instance is still billed, so release addresses you no longer need.
- A public IP attached directly to an instance at create time is metered separately from floating IPs, which are allocated and assigned by you.
- Addresses that back a load balancer VIP are managed by the load balancer and cannot be assigned or released independently.

## Troubleshooting

| Error | What it means | What to do |
|---|---|---|
| `Project is not yet provisioned in OpenStack; cannot allocate a floating IP.` | The project has no backing OpenStack tenant yet. | Wait for provisioning to finish, then retry the allocation. |
| `Quota exceeded: {…}` | The project's floating IP quota in that region is fully used. | Release an address you no longer need, or request a quota increase. |
| `No external network available for floating IP allocation` | No usable public pool was found for the region. | Retry, and raise a support ticket if it persists. |
| `Network '{…}' is not accessible for floating IP allocation in project '{…}'.` | The external network you asked for is not shared with this project. | Allocate from the default pool, or use a network your project has access to. |
| `Floating IP and instance must be in the same region` | The address and the target instance live in different regions. | Allocate an address in the instance's region. |
| `Floating IP and instance must belong to the same project` | The address and the target instance belong to different projects. | Allocate an address in the instance's project. |
| `The instance's network has no router path to the external network this floating IP belongs to. Attach the instance's subnet to a router whose gateway is on that external network, then try again.` | The instance's subnet is not routed to the external network. | Under **NETWORK** → **Routers**, attach the subnet as an interface and set the router gateway on that external network. |
| `VM has no network ports to assign floating IP to` | The instance is not attached to any network. | Attach the instance to a network, then retry. |
| `Port {…} is not attached to this instance` | The `port_id` supplied does not belong to the target instance. | Omit `port_id`, or use a port listed on that instance. |
| `No network port on this instance has fixed IP {…}` | The `fixed_ip` supplied is not present on any of the instance's ports. | Check the instance's private address and retry. |
| `Floating IP already assigned` | The address is attached to another instance. | Unassign it first, then assign it to the new instance. |
| `Floating IP is not assigned` | You tried to unassign an address that is already free. | No action needed. |
| `Unassign floating IP from instance before releasing` | Release was attempted while the address was still attached. | Unassign, then release. |
| `This floating IP serves a load balancer's VIP and cannot be assigned to an instance. Delete the load balancer to free it.` | The address is owned by a load balancer. | Use a different address, or delete the load balancer if you no longer need it. |
| `Floating IP not found` | The ID does not match a floating IP in your scope. | Re-list floating IPs and use the current ID. |
| `Failed to assign floating IP: {…}` | The upstream network service rejected or failed the operation. | Retry; if it keeps failing, raise a support ticket with the address ID. |

## FAQ

**Can I keep an address reserved between instances?**
Yes. Unassign instead of releasing — the address stays in your project and can be re-assigned. It continues to be metered while reserved.

**Will I get the same address back after releasing it?**
No. Releasing returns the address to the shared pool and it may be issued to another project.

**How do I move an address to another instance?**
Unassign it from the current instance, then assign it to the new one. Both instances must be in the same project and region as the address.

**Can one instance have more than one floating IP?**
An instance with multiple network ports can have a floating IP bound to each, by supplying `port_id` or `fixed_ip` when assigning.

**How do I see where an address has been used?**
Use `GET /api/v1/floating-ips/{ip_id}/history` to retrieve its assignment history.

**I assigned the address but the instance is still unreachable.**
Check the security group rules for the instance under **NETWORK** → **Firewall** — the floating IP only handles address translation, not filtering.

## Related

- [VPC Networks and Subnets](/help/vpc-networks-subnets)
- [Create and Manage Virtual Machines](/help/create-manage-virtual-machines)