--- title: How to Reassign or Unassign Reserved IPs description: Reassign reserved IPs to different Droplets within the same datacenter or unassign them entirely. product: Networking url: https://docs.digitalocean.com/products/networking/reserved-ips/how-to/modify/ last_updated: "2025-06-17" --- > **For AI agents:** The documentation index is at [https://docs.digitalocean.com/llms.txt](https://docs.digitalocean.com/llms.txt). Markdown versions of pages use the same URL with `index.html.md` in place of the HTML page (for example, append `index.html.md` to the directory path instead of opening the HTML document). # How to Reassign or Unassign Reserved IPs DigitalOcean Reserved IPs are publicly-accessible static IPv4 and IPv6 addresses. Assign and reassign reserved IP addresses to Droplets as needed, or implement an automated failover mechanism with reserved IPs to build a high availability infrastructure. You can reassign a reserved IP to point it at a different Droplet. You can also unassign it from a Droplet entirely. **Note**: Assigned reserved IPv4 addresses are free, but unassigned reserved IPv4 addresses are not. [Learn more about reserved IP pricing](https://docs.digitalocean.com/products/networking/reserved-ips/details/pricing/index.html.md). ## Reassign a Reserved IP Using Automation ## How to Reassign a Reserved IPv4 Using the DigitalOcean CLI 1. [Install `doctl`](https://docs.digitalocean.com/reference/doctl/how-to/install/index.html.md), the official DigitalOcean CLI. 2. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with `doctl`. 3. Use the token to grant `doctl` access to your DigitalOcean account.```shell doctl auth init ``` 4. Finally, run `doctl compute reserved-ip-action assign`. Basic usage looks like this, but you can [read the usage docs](https://docs.digitalocean.com/reference/doctl/reference/compute/reserved-ip-action/assign/index.html.md) for more details:```shell doctl compute reserved-ip-action assign [flags] ``` The following example assigns the reserved IP address `203.0.113.25` to a Droplet with the ID `386734086`:```shell doctl compute reserved-ip-action assign 203.0.113.25 386734086 ``` ## How to Reassign a Reserved IPv4 Using the DigitalOcean API 1. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with the API. 2. Send a POST request to [`https://api.digitalocean.com/v2/reserved_ips/{reserved_ip}/actions`](https://docs.digitalocean.com/reference/api/reference/reserved-ip-actions/index.html.md#reservedIPsActions_post). ### cURL Using cURL: ```shell # Assign a Reserved IP to a Droplet curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ -d '{"type":"assign","droplet_id":8219222}' \ "https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions" # Unassign a Reserved IP # curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ -d '{"type":"unassign"}' \ "https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions" ``` ### Go Using [Godo](https://github.com/digitalocean/godo), the official DigitalOcean API client for Go: ```go import ( "context" "os" "github.com/digitalocean/godo" ) func main() { token := os.Getenv("DIGITALOCEAN_TOKEN") client := godo.NewFromToken(token) ctx := context.TODO() // Assign a Reserved IP to a Droplet action, _, err := client.ReservedIPActions.Assign(ctx, "45.55.96.47", 8219222) // Unassign a Reserved IP action, _, err := client.ReservedIPActions.Unassign(ctx, "45.55.96.47") } ``` ### Ruby Using [DropletKit](https://github.com/digitalocean/droplet_kit), the official DigitalOcean API client for Ruby: ```ruby require 'droplet_kit' token = ENV['DIGITALOCEAN_TOKEN'] client = DropletKit::Client.new(access_token: token) # Assign a Reserved IP to a Droplet client.reserved_ip_actions.assign(ip: '45.55.96.47', droplet_id: 8219222) # Unassign a Reserved IP # client.reserved_ip_actions.unassign(ip: '45.55.96.47') ``` ### Python Using [PyDo](https://github.com/digitalocean/pydo), the official DigitalOcean API client for Python: ```python import os from pydo import Client client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN")) req={ "type": "unassign" } resp = client.reserved_ips_actions.post(reserved_ip="49.32.13.21", body=req) ``` ## How to Reassign a Reserved IPv6 Using the DigitalOcean CLI 1. [Install `doctl`](https://docs.digitalocean.com/reference/doctl/how-to/install/index.html.md), the official DigitalOcean CLI. 2. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with `doctl`. 3. Use the token to grant `doctl` access to your DigitalOcean account.```shell doctl auth init ``` 4. Finally, run `doctl compute reserved-ipv6 assign`. Basic usage looks like this, but you can [read the usage docs](https://docs.digitalocean.com/reference/doctl/reference/compute/reserved-ipv6/assign/index.html.md) for more details:```shell doctl compute reserved-ipv6 assign [flags] ``` The following example assigns the reserved IPv6 address `5a11:a:b0a7` to a Droplet with the ID `386734086`:```shell doctl compute reserved-ipv6 assign 5a11:a:b0a7 386734086 ``` ## How to Reassign a Reserved IPv6 Using the DigitalOcean API 1. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with the API. 2. Send a POST request to [`https://api.digitalocean.com/v2/reserved_ipv6/{reserved_ipv6}/actions`](https://docs.digitalocean.com/reference/api/reference/reserved-ipv6-actions/index.html.md#reservedIPv6Actions_post). ### cURL Using cURL: ```shell # Assign a Reserved IPv6 to a Droplet curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ -d '{"type":"assign","droplet_id":8219222}' \ "https://api.digitalocean.com/v2/reserved_ipv6/2409:40d0:f7:1017:74b4:3a96:105e:4c6e/actions" # Unassign a Reserved IPv6 from a Droplet curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ -d '{"type":"unassign"}' \ "https://api.digitalocean.com/v2/reserved_ipv6/2409:40d0:f7:1017:74b4:3a96:105e:4c6e/actions" ``` ### Go Using [Godo](https://github.com/digitalocean/godo), the official DigitalOcean API client for Go: ```go import ( "context" "os" "github.com/digitalocean/godo" ) func main() { token := os.Getenv("DIGITALOCEAN_TOKEN") client := godo.NewFromToken(token) ctx := context.TODO() // Assign a Reserved IPv6 to a Droplet action, _, err := client.ReservedIPV6Actions.Assign(ctx, "2409:40d0:f7:1017:74b4:3a96:105e:4c6e", 8219222) // Unassign a Reserved IPv6 action, _, err := client.ReservedIPV6Actions.Unassign(ctx, "2409:40d0:f7:1017:74b4:3a96:105e:4c6e") } ``` ### Python Using [PyDo](https://github.com/digitalocean/pydo), the official DigitalOcean API client for Python: ```python import os from pydo import Client client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN")) req={ "type": "unassign" } resp = client.reserved_ipv6s_actions.post(reserved_ipv6="2409:40d0:f7:1017:74b4:3a96:105e:4c6e", body=req) ``` ## Reassign a Reserved IP Using the Control Panel To reassign or unassign a reserved IP from the [control panel](https://cloud.digitalocean.com), click **Networking** in the main menu, then click **Reserved IPs**. This page lists your reserved IPs and their assigned Droplets. Open the **More** menu of the reserved IP you want to reassign or unassign: ![Reserved IPs page listing IP addresses with associated Droplets and a More dropdown menu offering reassign, unassign, and delete options.](https://docs.digitalocean.com/screenshots/reserved-ips/assign-reserved-ip.e365e5a632472195d6c8a090d17fe4f959e2f0f21477a0a99574174560ffc3e0.png) From the **More** menu, click **Unassign** to unassign the reserved IP entirely, or click **Reassign** and pick a new Droplet in the **Search for a Droplet** text box that opens. You can only reassign reserved IPs to Droplets in the same datacenter.