> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ibee.ai/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ibee.ai/docs/_mcp/server.

# Reserved IPs

> Reserve portable public IPv4 addresses and attach them to VMs.

Reserved IPs remain allocated to your workspace until you release them. You can
detach an address from one VM and attach it to another for failover, maintenance,
or a stable DNS endpoint.

## Reserve an address

Select the same site as the target VM or VPC. IBEE assigns an available address
from that site's provider pool.

Call `GET /networking/sites?workspace_id=607005` first and copy the exact
`site_id` from an entry where `available` is `true`. Do not pass a region name.

```bash
curl -X POST \
  "https://api.ibee.ai/v1/networking/reserved-ips?workspace_id=607005" \
  -H "Authorization: Bearer $IBEE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"site_id":"68b99bd78a8eda32ff3f16ea","label":"production-ingress"}'
```

## Attach an address

Provide the VM ID and, for a VPC resource, its VPC and subnet:

```bash
curl -X POST \
  "https://api.ibee.ai/v1/networking/reserved-ips/eip-example/attach?workspace_id=607005" \
  -H "Authorization: Bearer $IBEE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vm_id":"vm-example","vpc_id":"vpc-example","subnet_id":"subnet-example"}'
```

Use the move operation for an atomic reassignment to another VM. It validates
the new VM, VPC, subnet, and site before replacing the old attachment, avoiding
the gap caused by a separate detach and attach:

```bash
curl -X POST \
  "https://api.ibee.ai/v1/networking/reserved-ips/eip-example/move?workspace_id=607005" \
  -H "Authorization: Bearer $IBEE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vm_id":"vm-replacement","vpc_id":"vpc-example","subnet_id":"subnet-example"}'
```

Updating the label or reverse DNS does not change the assigned IPv4 address.

## Release safely

An attached address cannot be released. Detach it, update DNS records that still
reference it, and then delete the Reserved IP. Release is permanent and the same
address might not be available again.

## Related pages

* [VPC & IP management](/docs/network-security/vpc-and-ip-management)
* [Networking for VMs](/docs/infrastructure/cloud-vms/networking-for-vms)
* [API reference](/docs/api-reference)