How to Reassign or Unassign Reserved IPs

Validated on 27 Feb 2025 • Last edited on 17 Apr 2025

DigitalOcean Reserved IPs are publicly-accessible static IPv4 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. IPv6 support is now available in public preview. Enroll in the feature preview to create reserved IPv6 addresses.

You can reassign a reserved IP to point it at a different Droplet. You can also unassign it from a Droplet entirely.

Reassign a Reserved IP Using Automation

How to Reassign a Reserved IP Using the DigitalOcean CLI
  1. Install doctl, the official DigitalOcean CLI.
  2. Create a personal access token and save it for use with doctl.
  3. Use the token to grant doctl access to your DigitalOcean account.
    doctl auth init
  4. Finally, run doctl compute reserved-ip-action assign. Basic usage looks like this, but you can read the usage docs for more details:
    doctl compute reserved-ip-action assign <reserved-ip> <droplet-id> [flags]
    The following example assigns the reserved IP address 203.0.113.25 to a Droplet with the ID 386734086:
    doctl compute reserved-ip-action assign 203.0.113.25 386734086
How to Reassign a Reserved IP Using the DigitalOcean API
  1. Create a personal access token and save it for use with the API.
  2. Send a POST request to https://api.digitalocean.com/v2/reserved_ips/{reserved_ip}/actions.

cURL

Using cURL:

# 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, the official DigitalOcean API client for 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, the official DigitalOcean API client for 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, the official DigitalOcean API client for 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)

To reassign a reserved IPv6 address (currently available in public preview) instead of IPv4, replace reserved-ip with reserved-ipv6 in the previous examples.

Reassign a Reserved IP Using the Control Panel

To reassign or unassign a reserved IP from the control panel, 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:

Assigned reserved IP with More menu open

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.

We can't find any results for your search.

Try using different keywords or simplifying your search terms.