DEV Community

Franz Wong
Franz Wong

Posted on • Edited on

Create and delete Digital Ocean droplet with curl

Assumed you have already get the Digital Ocean API key and SSH key.

digitalocean_token="<your API key>"
ssh_key="<your ssh key fingerprint>"
Enter fullscreen mode Exit fullscreen mode

Create a droplet

Let's create a droplet. You can find values of available regions, size, distro images from https://slugs.do-api.dev/

droplet_name="<your droplet name>"

region="nyc1"
size="s-1vcpu-512mb-10gb"
image="ubuntu-22-04-x64"

# Create droplet
curl -s -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
-d '{"name":"'"${droplet_name}"'","region":"'"${region}"'","size":"'"${size}"'","image":"'"${image}"'","ssh_keys":["'"${ssh_key}"'"],"backups":false,"ipv6":false,"monitoring":false}' \
"https://api.digitalocean.com/v2/droplets"
Enter fullscreen mode Exit fullscreen mode

Get droplet status

We can get the status and wait until it becomes active.

curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].status'
Enter fullscreen mode Exit fullscreen mode

Get the IP address

After it is provisioned, we can get the public IP address.

droplet_ip=$(curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].networks.v4[] | select(.type == "public") | .ip_address')

# Login to droplet
ssh -i "${your_ssh_key_path}" root@${droplet_ip}
Enter fullscreen mode Exit fullscreen mode

Delete droplet

After we've done with the droplet, delete it to prevent from charging money.

# Get droplet id
droplet_id=$(curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].id')

# Delete droplet
curl -s -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets/${droplet_id}"

# It should return no droplet details if it is deleted
curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay