We’ve corrected a bug where image types other than snapshots could be listed using the GET /v2/snapshots
endpoint. This behavior was strictly limited to image types that the user was properly authorized to access, such as backups and custom images.
Custom scopes for personal access tokens (PATs) are now generally available.
Previously, DigitalOcean PATs had only two scopes: read access to all team resources or full (read and write) access to all team resources. Custom scopes introduce more specific permissions, like creating Droplets or updating cloud firewalls, which lets you secure your workflows by granting only the permissions the token needs and restricting access to other resources and actions.
Team members with the biller role can no longer access information about shared resources. Previously, billers could access this information via the API, but not the control panel.
Tokens returned by the /kubeconfig
and /credentials
endpoints now have custom scopes to provide read-only access to Kubernetes resources. Within DOKS clusters, operations to access Kubernetes objects are still available based on team role (owner, biller, or member) as before.
The custom scopes for personal access tokens beta is now available via feature preview.
We’ve corrected a bug where image types other than snapshots could be retrieved using the GET /v2/snapshots/$SNAPSHOT_ID
and DELETE /v2/snapshots/$SNAPSHOT_ID
endpoints. This behavior was strictly limited to image types that the user was properly authorized to access, such as backups and custom images.
Released v1.101.0 of doctl, the official DigitalOcean CLI. This release adds support for scalable storage for PostgreSQL and MySQL databases and Kafka topic management.
Released v1.100.0 of doctl, the official DigitalOcean CLI. This release adds new commands for managing uptime alerts and retrieving advanced database configuration options.
The Kubernetes API endpoints /v2/kubernetes/clusters/<cluster ID>/kubeconfig
and /v2/kubernetes/clusters/<cluster ID>/credentials
now require API tokens to have write scope.
We have added Swagger functionality to the API documentation. Using an API key, you can now use the Swagger’s “Try it out” feature to interact with the API from the documentation.
The 429 error response to reaching our API’s burst rate limit now includes a Retry-After header to indicate how long to wait (in seconds) before retrying a request. This additional header enables the configuration of automatic retries and exponential backoffs in DigitalOcean clients such as doctl, Terraform, and Godo. Learn more about our API burst limit structure in our API Documentation.
Released v1.98.0 of doctl, the official DigitalOcean CLI. This release adds support for automatically retrying API requests that fail with a 429 or 500-level error. The number of attempts can be configured using the --http-retry-max
flag or DIGITALOCEAN_HTTP_RETRY_MAX
environment variable. To disable retries altogether, set to 0
.
Released v1.97.0 of doctl, the official DigitalOcean CLI. This release updates the default behavior of the doctl registry login
command to set a 30-day expiry for the registry API token that is created when logging in. The previous default behavior was to create a registry API token that did not expire.
To create a registry API token that does not expire, you can set the new --never-expire
flag to true
. To set a different expiry time than the default 30 days, you can set the --expiry-seconds
flag to an integer representing the number of seconds until the token should expire.
This also adds support for interacting with uptime checks via doctl
. Please see the doctl monitoring uptime
command reference for more information.
Released v1.94.0 of doctl, the official DigitalOcean CLI. This release updates the doctl auth init
prompt and deprecates the --algorithm
flag for load balancer sub-commands.
Released v1.92.0 of doctl, the official DigitalOcean CLI. This release updates the doctl auth init
prompt and deprecates the --algorithm
flag for load balancer sub-commands.
Released v1.91.0 of doctl, the official DigitalOcean CLI. This release adds support for creating and updating firewall rules for load balancers.
Released v1.89.0 of doctl, the official DigitalOcean CLI. This release adds support for creating serverless namespaces in the syd1
region and creating monitoring alert policies for load balancer metrics.
Released v1.88.0 of doctl, the official DigitalOcean CLI. This release adds a flag to the load balancer create command that allows you to configure its HTTP idle timeout.
Released v1.87.0 of doctl, the official DigitalOcean CLI. This release promotes the option to enable high availability on existing Kubernetes clusters to General Availability. It also adds a flag that allows you to add a load balancer to a specified project upon its creation.
Released v1.86.0 of doctl, the official DigitalOcean CLI. This release includes new doctl apps list-buildpacks
and doctl apps upgrade-buildpack
subcommands allowing you to manually upgrade an app’s buildpacks to their latest major versions.
Released v1.84.0 of doctl, the official DigitalOcean CLI. This release adds a --wait
flag to the doctl database create
subcommand.
Released v1.83.0 of doctl, the official DigitalOcean CLI. This release adds updated confirmation dialogs and a --wait
flag to the doctl compute load-balancer create
subcommand.
Released v1.82.0 of doctl, the official DigitalOcean CLI. This release upgrades godo to v1.86.0 and adds support for building App Platform apps locally.
Released v1.80.0 of doctl, the official DigitalOcean CLI. This release adds support for creating and managing multiple namespaces for serverless functions.
Released v1.81.0 of doctl, the official DigitalOcean CLI. This release adds two new pieces of functionality. When creating a reserved IP, you can now specify the project it should be placed in. It also makes the --region
flag an optional argument for the compute droplet create
sub-command.
When you create a Droplet using the API (POST /v2/droplets
), you can now specify a region (like NYC) instead of a specific datacenter (like NYC3). The API then creates your Droplet in any available datacenter within your specified region. For example, if you want to create a Droplet in San Francisco, you can use the region sfo
to guarantee that the Droplet will be in SFO1, SFO2, or SFO3. Additionally, you can omit the region entirely (or set it to an empty string) to create a Droplet in any available region.
The Rocky 9 (rockylinux-9-x64
) base image is now available in the control panel and via the API.
Released v1.79.0 of doctl, the official DigitalOcean CLI. This release adds several databases options
sub-commands you can use to look up create-time options for database clusters, such as supported engines and versions.
Debian 9 has reached end of life. Per our image deprecation policy, this image is now only available via the API. We will remove the Debian 9 image from our platform in 30 days.
The Rocky 8.6 (rockylinux-8-x64
) base image is now available in the control panel and via the API.
The DigitalOcean API now supports listing Droplets by name by using the name
query parameter, as in GET /v2/droplets?name="your_droplet_name"
. Learn more in the API documentation.
Released v1.78.0 of doctl, the official DigitalOcean CLI. This release renames the sandbox
commands to serverless
. Aliases are provided for backwards compatibility. Additionally, the output of the account get
command now includes the name of the active team.
To improve security, DigitalOcean no longer accepts TLS 1.0 and TLS 1.1 connections. This includes connections to www.digitalocean.com
, cloud.digitalocean.com
, and api.digitalocean.com
.
Released v1.77.0 of doctl, the official DigitalOcean CLI. This release deprecates the floating-ip
commands in favor of the new reserved-ip
ones.
When creating a Droplet via the API, we now release the Droplet’s IP address when it is in the active
state, instead of the new
state.
Released v1.76.0 of doctl, the official DigitalOcean CLI. This release adds support for our new serverless Functions product and updates godo to support new App Platform features.
Released v1.75.0 of doctl, the official DigitalOcean CLI. This release contains fixes and improvements for a beta product. If you are not a member of the beta group, the new features will not be available to you at this time.
Released v1.74.0 of doctl, the official DigitalOcean CLI. This release introduces new functionality for a beta product. If you are not a member of the beta group, the new features will not be available to you at this time.
Released v1.73.0 of doctl, the official DigitalOcean CLI. This release updates godo to support new App Platform features.
DigitalOcean API access tokens now begin with an identifiable prefix in order to distinguish them from other similar tokens. Tokens now use the following prefixes:
dop_v1_
for personal access tokens generated in the control paneldoo_v1_
for tokens generated by application using the OAuth flowdor_v1_
for OAuth refresh tokensv2.19.0 of the DigitalOcean Terraform Provider is now available. This release adds custom region support of the digitalocean_container_registry
resource.
Released v1.72.0 of doctl, the official DigitalOcean CLI. This release introduces new doctl compute tag apply
and doctl compute tag remove
commands that support using tags with multiple resources in a single operation.
The DigitalOcean OAuth API has been updated to include additional information when users authorize an application under a team context. The JSON bodies for both the access grant and refresh grant responses will now include team_uuid
and team_name
attributes inside of the info
object.
Released v1.71.0 of doctl, the official DigitalOcean CLI. This release adds regions support to Container Registry commands including the introduction of the new doctl registry options available-regions
command.
v2.18.0 of the DigitalOcean Terraform Provider is now available. This release adds a new digitalocean_spaces_bucket_policy
resource as well as support for configuring log destinations and alert policies in the digitalocean_app
resource.
You can now configure your MySQL, PostgreSQL, and Redis managed databases by making a PATCH
request to /v2/databases/{database_cluster_uuid}/config
. For example:
{
"config": {
"sql_mode": "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES",
"sql_require_primary_key": true
}
}
For more details, see the full reference documentation for the managed databases API.
You can now create personal access tokens with an expiry interval. After the interval passes, the token can no longer authenticate you to the API and it disappears from your account. To create tokens with expiry intervals, see How to Create a Personal Access Token.
Released v1.70.0 of doctl, the official DigitalOcean CLI. This release adds support for App Platform features, such as AppDomainSpec.Certificate
, MinimumTLSVersion
, appServiceSpecHealthCheck.Port
and more.
Released v1.69.0 of doctl, the official DigitalOcean CLI. This release contains a number of bug fixes and adds support to the kubernetes cluster kubeconfig save
sub-command for setting an alias for a cluster’s context name.
v2.17.0 of the DigitalOcean Terraform Provider is now available. This release adds support for:
It also includes bug fixes.
Released v1.68.0 of doctl, the official DigitalOcean CLI. This release contains improvements to the registry
subcommands including: revoking credentials on logout
and a new list-manifests
subcommand.
Released v1.67.0 of doctl, the official DigitalOcean CLI. This release updates godo to support new App Platform features.
v2.16.0 of the DigitalOcean Terraform Provider is now available. This release adds support for:
size_unit
field.source_kubernetes_ids
and destination_kubernetes_ids
attributes for Kubernetes firewall rules.It also includes bug fixes.
Released v1.66.0 of doctl, the official DigitalOcean CLI. This release includes a number of new features including support for PowerShell completion and a new --upsert
flag for the doctl apps create
command that updates the app in the given app spec if it already exists.
v2.15.0 of the DigitalOcean Terraform Provider is now available. This release adds support for:
It also includes bug fixes.
Released v1.65.0 of doctl, the official DigitalOcean CLI. This release includes a number of new features:
--ha
flag was added to the kubernetes cluster create
sub-command to optionally create a cluster configured with a highly-available control plane. This feature is in early availabilitykubernetes cluster
sub-commands now include a “Support Features” field when displaying version options--disable-lets-encrypt-dns-records
flag was added to the compute load-balancer create
sub-command to optionally disable automatic DNS record creation for Let’s Encrypt certificates that are added to the load balancerv2.14.0 of the DigitalOcean Terraform Provider is now available. This release adds support for the high availability (ha
) attribute when creating Kubernetes clusters.
v2.13.0 of the DigitalOcean Terraform Provider is now available. This release adds support for retrieving the CA certificate for database clusters. It also includes bug fixes.
v2.12.1 of the DigitalOcean Terraform Provider is now available. This release adds CORS support for apps on App Platform and the ability to create monitoring alerts.
Released v1.64.0 of doctl, the official DigitalOcean CLI. This release includes support for managing App Platform alerts.
Released v1.63.0 of doctl, the official DigitalOcean CLI. This release includes a number of new features:
database firewall
sub-commands now support apps as trusted sourcesmonitoring alert
sub-commands for creating and managing alert policies--droplet-agent
flag was added to the compute droplet create
sub-command to optionally disable installing the agent for the Droplet web consoleWhen updating an SSH key’s name using the API, if the request body does not contain a new name, the SSH key’s name will now retain its previous value. Previously, if the request body did not contain a new name, the SSH key’s name would update to a default value of either the comment field or the first 23 characters from the public key.
Released v1.62.0 of doctl, the official DigitalOcean CLI. This release fixes a handful of bugs and introduces new flags on existing commands:
apps logs
command now supports tailing live logs with the --tail
flag. This lets application owners select the most recent logs from their applications--wait
flag was added to apps create
and apps update
to block these commands until an application is fully created or updatedv2.10.0 of the DigitalOcean Terraform Provider is now available. This release adds support for Kubernetes maintenance policies.
v2.10.1 of the DigitalOcean Terraform Provider is now available. This release adds bug fixes and other improvements.
v2.7.0 of the DigitalOcean Terraform Provider is now available. This release adds support for distributing images to multiple regions.
Released v1.60.0 of doctl, the official DigitalOcean CLI. This release introduces an auth remove
sub-command to simplify removing an auth context when managing multiple accounts. The databases user reset
sub-command now supports resetting the user password for all database engine types.
We have updated the Floating IP API responses to better align with our newer API models. The droplet
and region
fields now use the same response models used in the /v2/droplets
and /v2/regions
endpoints. Specifically:
private_networking
feature is now displayed under the features
field under droplet
instead of the features
field under region
.vpc_uuid
field now populates with the correct values.type
displays base
when the Droplet uses a base image (i.e. Ubuntu, CentOS).networks
field now includes private and floating IP addresses, if applicable.Released v1.59.0 of doctl, the official DigitalOcean CLI. This release includes a new apps propose
sub-command and improvements to the apps spec validate
sub-command.
Released v1.58.0 of doctl, the official DigitalOcean CLI. This release adds a --wait
flag to the apps create-deployment
command which blocks until the deployment is complete. By default, the registry kubernetes-manifest
now generates a manifest that applies the secret to all the namespaces in the Kubernetes cluster using the DOSecret operator.
v2.7.0 of the DigitalOcean Terraform Provider is now available. This release adds support for Kubernetes node pool taints and resizing load balancers.
v2.6.0 of the DigitalOcean Terraform Provider is now available. This release enables surge upgrades for Kubernetes clusters by default and adds a digitalocean_firewall
data source.
Released v1.57.0 of doctl, the official DigitalOcean CLI. This release enables surge upgrades by default for newly created Kubernetes clusters and important bugfixes for App Platform logs and Kubernetes cascading deletes.
Released v1.56.0 of doctl, the official DigitalOcean CLI. This release includes support for database firewalls management, Kubernetes cascading deletes, and installing Kubernetes 1-Click Apps to existing clusters.
v2.5.0 of the DigitalOcean Terraform Provider is now available. This release adds a number of improvements to the digitalocean_app
resource including: support for images as a component source, support for job components, support for internal_ports
for services, and support for wildcard domains.
Released v1.55.0 of doctl, the official DigitalOcean CLI. This release adds Docker Hub and GitLab support to App Platform’s create and update commands.
v2.4.0 of the DigitalOcean Terraform Provider is now available. This release includes support for deployments from GitLab and app-wide environment variables for the digitalocean_app
resource, bug fixes, and other improvements.
Load balancers now come in small, medium, and large sizes. The larger the load balancer, the more simultaneous connections and requests per second it can manage. Existing load balancers are now considered “small” load balancers and are unaffected by this change.
You can specify the size of a load balancer during its creation using the size
field. The available size values are lb-small
, lb-medium
, or lb-large
.
Example request body:
{
"name": "example-lb-01",
"region": "nyc3",
"size": "lb-small",
"forwarding_rules": [
{
"entry_protocol": "https",
"entry_port": 444,
"target_protocol": "https",
"target_port": 443,
"tls_passthrough": true
}
],
"health_check": {
"protocol": "http",
"port": 80,
"path": "/",
"check_interval_seconds": 10,
"response_timeout_seconds": 5,
"healthy_threshold": 5,
"unhealthy_threshold": 3
},
"sticky_sessions": {
"type": "none"
}
]
}
Once you have created a load balancer, you can’t change its size.
Released v1.54.0 of doctl, the official DigitalOcean CLI. This release user confirmation before container registry garbage collection is started.
v2.3.0 of the DigitalOcean Terraform Provider is now available. This release includes support for configuring the size
of a digitalocean_loadbalancer
resource. OpenBSD binaries are now built and available for download.
We recently replaced Standard Droplet plans with Basic Droplet plans. Today, we have deprecated Standard Droplet plans from the API for new users. Existing customers will retain access to these plans.
You can view Droplet plans, the resources they provide, and the size slug used to identify them programmatically by querying the /v2/sizes
endpoint.
Released v1.53.0 of doctl, the official DigitalOcean CLI. This release adds support for container registry garbage collection of untagged manifests.
v2.2.0 of the DigitalOcean Terraform Provider is now available. This release adds a new digitalocean_ssh_keys
data source and a digitalocean_custom_image
resource.
Released v1.52.0 of doctl, the official DigitalOcean CLI. This release adds a --force-rebuild
flag to doctl apps create-deployment
.
v2.1.0 of the DigitalOcean Terraform Provider is now available. DigitalOcean Container Registry is now in general availability and requires a subscription plan. As a result, the digitalocean_container_registry
resource now requires setting a subscription_tier_slug
which is supported with this release.
Released v1.51.0 of doctl, the official DigitalOcean CLI. This release add support for managing DigitalOcean Container Registry subscriptions.
You can now integrate your DOCR registry with a Kubernetes cluster. When a registry is integrated with a Kubernetes cluster, we create docker registry type secrets in all the namespaces in the cluster. These secrets can be used with the workloads or added to the default service account in the namespace.
Additionally, we’ve added DOCR integration support for our official clients, godo and doctl. Only versions of doctl 1.49.0 and godo 1.48.0 and above support docr integration for clusters.
Released v1.50.0 of doctl, the official DigitalOcean CLI. This release includes a number for new features and improvements. It includes new doctl apps
sub-commands to retrieve information about App Platform pricing plan tiers, instance sizes, and regions. The doctl registry
sub-command now supports managing garbage collection for container registries.
Released v1.49.0 of doctl, the official DigitalOcean CLI. This release includes the ability to update the default VPC for a region, the ability to set an expiration time when downloading kubeconfig files, and more.
v2.0.0 of the DigitalOcean Terraform Provider is now available. This release uses v2.0.3 of the Terraform Plugin SDK and now only supports Terraform v0.12 and higher. It also includes a new digitalocean_records
data source.
You can now update a VPC network to be the default VPC network for a region using the PUT /v2/vpcs/$VPC_ID
and PATCH /v2/vpcs/$VPC_ID
endpoints.
For example:
{
"name": "renamed-new-vpc",
"description": "A new description",
"default": "true"
}
When you change the default VPC network for a region, all applicable resources are placed into the default VPC network unless otherwise specified during their creation.
v1.23.0 of the DigitalOcean Terraform Provider is now available. This release introduces a new digitalocean_app
resource with support for DigitalOcean App Platform.
Released v1.48.0 of doctl, the official DigitalOcean CLI. This release promotes doctl apps
commands with support for DigitalOcean App Platform to General Availability.
You can now apply taints to Kubernetes node pools using the DigitalOcean API. When you configure taints for a node pool, the taint automatically applies to all current nodes and any subsequently created nodes in the pool. For more information, see Kubernetes’ documentation on taints and tolerations.
You can now apply taints to Kubernetes node pools. When you configure taints for a node pool, the taint automatically applies to all current nodes in the pool and any node you add to the pool thereafter. For more information about taints and tolerations, see Kubernetes’ documentation.
Additionally, we’ve added node taint support for our official clients, godo and doctl. Only versions of doctl 1.47.0 and godo 1.45.0 and above support persistent node pool taints.
You can define taints during a pool’s creation by submitting a POST
request to the /v2/kubernetes/clusters/<cluster-id>/node_pools
and the /v2/kubernetes/clusters
endpoints, or you can update existing pools by submitting a PUT
request to the /v2/kubernetes/clusters/<cluster-id>/node_pools/<node-pool-id>
endpoint. For example, this request body defines two taints for a node pool.
{
"name": "frontend",
"size": 10,
[...]
"taints": [
{
"key": "priority",
"value": "high",
"effect": "NoSchedule",
},
{
"key": "workloadKind",
"value": "database",
"effect": "NoExecute",
}
]
}
Released v1.47.0 of doctl, the official DigitalOcean CLI. This release adds support for setting Kubernetes node pool taints.
All Droplets created after 1 October 2020 are placed into a VPC network by default. The enable_private_networking
action and private_network
parameter have been deprecated. Use the vpc_uuid
parameter to specify the VPC network for your Droplets.
You can migrate existing Droplets into VPC networks using Snapshots.
Released v1.46.0 of doctl, the official DigitalOcean CLI. This release includes support for install Kubernetes 1-Click Apps when creating a cluster, surge upgrade support for Kubernetes clusters, and more.
v1.22.0 of the DigitalOcean Terraform Provider is now available. This release includes auto_upgrade
and surge_upgrade
support for the digitalocean_kubernetes_cluster
resource.
v1.21.0 of the DigitalOcean Terraform Provider is now available. This release includes the addition of https
to the list of acceptable health check protocols for the digitalocean_loadbalancer
resource.
Load balancer health checks now support the HTTPS protocol. You can now configure load balancers to verify the health of your Droplets’ HTTPS endpoints.
v1.20.0 of the DigitalOcean Terraform Provider is now available. This release includes the addition of a digitalocean_tags
data source and improvements to other tag-related resources.
Released v1.45.1 of doctl, the official DigitalOcean CLI. This release updates doctl’s Snap packaging that allow Snap users to log in to DigitalOcean Container Registry using the doctl registry login
command. To grant access doctl access to your Docker configuration, run snap connect doctl:dot-docker
.
Listing records for a domain now supports filtering by both name
and type
using query parameters. For example, to only include A records for a domain, send a GET request to /v2/domains/$DOMAIN_NAME/records?type=A
To only include records matching sub.example.com
, send a GET request to /v2/domains/$DOMAIN_NAME/records?name=sub.example.com
. name
must be a fully qualified record name. Both name
and type
may be used together to further filter the records returned.
The response body to POST
requests creating multiple Droplets has been extended to include an actions
link for each Droplet created. For example:
"links": {
"actions": [
{
"id": 24404896,
"rel": "create",
"href": "https://api.digitalocean.com/v2/actions/24404896"
},
{
"id": 24404897,
"rel": "create",
"href": "https://api.digitalocean.com/v2/actions/24404897"
}
]
}
These can be used to check the status of each individual Droplet create event rather than polling each Droplet.
v1.19.0 of the DigitalOcean Terraform Provider is now available. This release includes initial support the DigitalOcean Container Registry.
Released v1.44.0 of doctl, the official DigitalOcean CLI. This release includes support for specifying a non-default VPC when creating Droplets, load balancers, and Kubernetes clusters. It also adds the ability to set an expiration time for container registry credentials. This can be useful when calling doctl registry login
as part of a CI/CD process. A new doctl 1-click list
subcommand is now also available.
Released v1.45.0 of doctl, the official DigitalOcean CLI. This release includes new doctl kubernetes 1-click list
and doctl compute droplet 1-click list
subcommands.
It is now possible to adjust the behavior of the OAuth authorization flow by specifying a prompt
and/or max_auth_age
query parameter:
prompt
query parameter can be used to specify how the authorizing user should be authenticated.max_auth_age
query parameter can be used to determine a deadline (in seconds) after which a user must re-authenticate on the control panel.For more details, consult the OAuth documentation.
v1.18.0 of the DigitalOcean Terraform Provider is now available. This release includes support for the backend keepalive option for the load balancer resource and data source.
Users can now use the API to destroy select resources associated with a Droplet when destroying a Droplet. You can destroy snapshots, volumes, or volume snapshots associated with a Droplet.
It is now possible to destroy snapshots, volumes, and volume snapshots associated with a Droplet while destroying the Droplet itself in a single request. A number of new related endpoints are now available:
/v2/droplets/$DROPLET_ID/destroy_with_associated_resources
endpoint./v2/droplets/$DROPLET_ID/destroy_with_associated_resources/selective
endpoint./v2/droplets/$DROPLET_ID/destroy_with_associated_resources/dangerous
endpoint./v2/droplets/$DROPLET_ID/destroy_with_associated_resources/status
endpoint./v2/droplets/$DROPLET_ID/destroy_with_associated_resources/retry
endpoint.Released v1.43.0 of doctl, the official DigitalOcean CLI. This release updates container registry features from beta to early access.
v1.17.0 of the DigitalOcean Terraform Provider is now available. This release includes bug fixes and new Spaces data sources.
DigitalOcean Load balancers now allow you to set a keepalive option for forwarding rules. Enabling this option allows the load balancer to use fewer active TCP connections to send and receive HTTP requests between the load balancer and your target Droplets.
Released v1.42.0 of doctl, the official DigitalOcean CLI. This release includes a number of small UI improvements and support for additional container registry beta features.
v1.16.0 of the DigitalOcean Terraform Provider is now available. This release includes VPC support and expanded Spaces support.
Released v1.41.0 of doctl, the official DigitalOcean CLI. This release fixes the link to create a new API token when running doctl auth init
.
Released v1.40.0 of doctl, the official DigitalOcean CLI. This release includes a support for VPCs and viewing billing history for an account.
Starting today, we have begun the incremental release of DigitalOcean VPC, including its API. VPCs (virtual private clouds) allow you to create virtual networks containing resources that can communicate with each other in full isolation using private IP addresses. The VPC service will be available for all customers soon. It replaces the existing private networking service.
When enabled on your account, you will be able to create, configure, list, and delete custom VPCs as well as retrieve information about the resources assigned to them. For example, to create a new VPC, make a POST
to the /v2/vpcs
endpoint with a JSON body like:
{
"name": "staging-vpc",
"description": "VPC for the staging environment"
"region": "nyc1"
}
For the more details, see the full API reference documentation for DigitalOcean VPCs.
This release contains related functionality for a number of other DigitalOcean resources.
When VPC is enabled on your account, the private_networking
attribute previously used to enable private networking while creating a Droplet will now provision the Droplet inside of your account’s default VPC for the region. Use the new vpc_uuid
attribute to specify a different VPC.
Kubernetes clusters, load balancers, and database clusters will also be provisioned inside of your account’s default VPC for the region when enabled. To specify a non-default VPC, set the appropriate attribute in the JSON body of the create request:
Resource | Attribute |
---|---|
Droplet | vpc_uuid |
Kubernetes cluster | vpc_uuid |
Load balancer | vpc_uuid |
Database cluster | private_networking_uuid |
Released v1.39.0 of doctl, the official DigitalOcean CLI. This release includes support for listing and retrieving invoices as well as expanded help output for all commands.
v1.15.0 of the DigitalOcean Terraform Provider is now available. This release includes new data sources for accessing information about DigitalOcean regions, images, and projects, a new resource for adding resources to projects not created via Terraform, and a number of other improvements.
The DigitalOcean Managed Databases API now supports configuring the user
authentication plug-in for both new and existing MySQL users. This is useful
when needing to connect to a MySQL 8.0 cluster using an application or older
MySQL client that does not support the default caching_sha2_password
authentication plug-in.
For example, to create a new MySQL user
using the mysql_native_password
authentication plug-in, send a POST request
to /v2/databases/$DATABASE_ID/users
with a JSON body like:
{
"name": "php-app-01",
"mysql_settings": {
"auth_plugin": "mysql_native_password"
}
}
For more details, see the full reference documentation for the managed databases API.
To provide a better service for all customers we are introducing burst request rate limits to our public API. Now clients will be rate limited if they consume more than 5% of their total requests for an hour over a 1 minute period (going over 250 requests in a minute). This only affects clients making their requests in large bursts, clients that spread their requests over time will not be affected. Check the rate limits documentation for more information about it.
v1.14.0 of the DigitalOcean Terraform Provider is now available. This release includes a bug fix for projects containing many resources and exposes the Droplet IDs for individual nodes in Kubernetes clusters.
Released v1.38.0 of doctl, the official DigitalOcean CLI. This release adds the ability to set Kubernetes node pool labels as well as support for deleting multiple Kubernetes clusters with a single command.
Our managed DigitalOcean Kubernetes product DOKS now supports setting Kubernetes labels on node pools. Once assigned, they will propagate to the associated pool nodes, both existing and new ones. This way, customers may reliably reference groups of nodes through label selectors that Kubernetes provides.
Labels can be set on node pool API objects that are accessible on multiple endpoints. For instance, updating an existing node pool by the labels service=web
and priority=high
is done by submitting a PUT
request to the /v2/kubernetes/clusters/<cluster ID>/node_pools/<node ID>
endpoint with the following JSON body:
{
"name": "web",
"count": 10,
"labels": {
"service": "web",
"priority": "high"
}
}
For details, see the available operations on the Kubernetes API.
v1.13.0 of the DigitalOcean Terraform Provider is now available. This release adds support for tagging managed databases clusters.
Released v1.37.0 of doctl, the official DigitalOcean CLI. This release adds the ability to retrieve account balances.
Our API has been extended with a new endpoint enabling you to retrieve your account balance. For more information, see the balance endpoint in the API reference documentation.
Our API has been extended with a new endpoint enabling you to retrieve balance
information for an account. To do so, make a GET
request to /v2/customers/my/balance
.
The response will be a JSON body including your balance details. For example:
{
"month_to_date_balance": "23.44",
"account_balance": "12.23",
"month_to_date_usage": "11.21",
"generated_at": "2019-07-09T15:01:12Z"
}
For all the details, see the balance endpoint in the full API reference documentation.
The DigitalOcean API currently offers the ability to retrieve a report of all
Droplets co-located on the same physical hardware by sending a GET request to
the /v2/reports/droplet_neighbors
endpoint. This endpoint has been deprecated
and will begin responding with an HTTP status of 410 (Gone) on December 17th, 2019.
Today, in its place, a new endpoint is now available: /v2/reports/droplet_neighbors_ids
.
Rather than listing the full Droplet object, responses from this endpoint only
contain sets of Droplet IDs co-located on the same physical hardware. For example:
{
"neighbor_ids": [
[168671828,168663509,168671815],
[168671883,168671750]
]
}
This implementation is more performant and better able to scale for users with many Droplets. For all the information, find the full API reference documentation here.
The API also continues to offer the ability to list “neighbors” for a specific
Droplet by sending a GET request to /v2/droplets/$DROPLET_ID/neighbors
. This
endpoint will continue to function without change.
We apologize for the inconvenience. If you need guidance on this transition, reach out to the team by opening a support ticket.
Users can now use the DigitalOcean API to set and modify trusted sources for managed databases to restrict incoming connections.
MySQL managed database clusters now support setting the global SQL mode via the control panel and the API. See How to Set Global SQL Mode on MySQL Clusters for more information.
DigitalOcean’s API now supports managing a database cluster’s firewall rules (known as “trusted sources” in the control panel) as well as the ability to configure the SQL mode used by MySQL clusters.
Using the /v2/databases/$DATABASE_ID/firewall
endpoint, you can specify which resources should be able to open connections to your database. You may limit connections to specific Droplets, Kubernetes clusters, or external IP addresses. When a tag is provided, any Droplet or Kubernetes node with that tag applied to it will have access. For example, the body a PUT
request might look like:
{
"rules": [
{"type": "ip_addr", "value": "192.168.1.1"},
{"type": "droplet", "value": "163973392"},
{"type": "k8s", "value": "ff2a6c52-5a44-4b63-b99c-0e98e7a63d61"},
{"type": "tag", "value": "backend"}
]
}
To configure the SQL modes for a MySQL cluster, use the /v2/databases/$DATABASE_ID/sql_mode
endpoint. For example, the body a PUT
request might look like:
{
"sql_mode": "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE"
}
For more information, see the full API reference documentation for managed databases.
The /v2/volumes?name=$VOLUME_NAME
endpoint now lists all volumes that match the specified name as a query parameter. For more information, see the API v2 reference documentation on list volumes filtered by name.
Today DigitalOcean’s Managed Database service launched support for two new database engines, MySQL and Redis. Both are currently in Limited Availability and can initially be used in the NYC1, FRA1, and SFO2 regions.
When creating a new database cluster using the API, you must specify the engine
attribute to select which type of database to use (mysql
for MySQL or redis
for Redis). For example, to create a new Redis cluster, make a POST
to the /v2/databases
endpoint with a JSON body like:
{
"name": "cache-01",
"engine": "redis",
"version": "5",
"region": "nyc1",
"size": "db-s-1vcpu-2gb",
"num_nodes": 2
}
See the full API reference documentation for all the details. For more information about DigitalOcean Managed Databases including the roll-out plan for additional regions, check out the blog post announcing the release.
Floating IP Address rate limit information was added to the DigitalOcean API Documentation.
The ttl of a domain record now has a minimum value of 30 seconds, and if not set, the default value has changed from 1800 to the ttl of the SOA record.
DigitalOcean Managed Databases now provide support for private networking. All new database clusters will be provisioned with private networking enabled. Existing clusters will require an update to connect over the private network. This can be triggered in the control panel.
Databases, read-only replicas, and connection pools will now contain a new private_connection
object holding the information needed to access the resource via the private network. Its attributes are identical to the existing connection
object, but the values for private_connection.uri
and private_connection.host
will contain FQDNs only accessible from resources (e.g. Droplets or Kubernetes clusters) within your account and in the same region.
For more information, see the full managed databases API documentation.
SOA records are now returned in record results, and you can update the TTL on a SOA record as you would with other records. This allows you to control the negative caching of your domain. SOA records cannot be manually deleted or created on a domain, they are created when the domain is created, and cleaned up on the domain deletion.
Today, we are promoting the Kubernetes API to General Availability. As part of this release, we have also extended the API with additional functionality:
When creating or updating a cluster, you may now configure a maintenance window policy specifying the day of the week and time of day that updates should take place for the cluster. Additionally, setting a cluster’s auto_upgrade
attribute to true
will specify that the cluster can be automatically upgraded to new Kubernetes patch releases (e.g. 1.13.1 to 1.13.2) during its maintenance window.
An upgrade
endpoint is now available to imminently trigger an upgrade to a newer patch release of Kubernetes at your own convenience. You may list available upgrades for your cluster using the upgrades
endpoint.
In order to give users finer control over individual nodes, the recycle
endpoint has been deprecated. Instead, we now offer the ability to delete or replace specific nodes in a node pool. By default, workloads will be drained from the node before deletion. Appending the skip_drain=1
query parameter to the request will cause the node to be imminently deleted. Appending the replace=1
query parameter to the request will cause the node to be replaced by a new one after it has been deleted.
For the full details, see the API reference documentation for Kubernetes.
Thank you to everyone who took the time to provide us with feedback.
The /v2/volumes/$volume_id/snapshots
endpoint now accepts tags at creation time, and these are reflected on the /v2/snapshots
endpoint. Volume snapshot tags may now be managed with the /v2/tags
endpoint as well. For more information, see the API reference documentation for both volumes and tags.
Spaces, DigitalOcean’s object storage solution, includes a built-in CDN. Today we’ve added the ability to use custom subdomains with your CDN endpoints. When configuring your CDN via the API, you can now set the custom_domain
attribute to use a subdomain with the endpoint. When a custom subdomain is in use, the certificate_id
attribute is also required. Its value must be the ID of a DigitalOcean managed SSL certificate. For example, the body of your request to enable a CDN might look like:
{
"origin": "static-images.nyc3.digitaloceanspaces.com",
"certificate_id": "892071a0-bb95-49bc-8021-3afd67a210bf",
"custom_domain": "static.example.com"
}
See here for more information about using the API to configure Spaces CDN endpoints.
DigitalOcean Load Balancers now support using PROXY Protocol to pass information like origin IP addresses and port numbers from connecting client requests along to the backend service. This can be configured using the API by setting the new enable_proxy_protocol
attribute to true
when creating a new Load Balancer or updating an existing one.
See here for more information about using PROXY Protocol with DigitalOcean Load Balancers.
The GitLab One-Click application maintained by DigitalOcean was replaced in the control panel by a GitLab Enterprise Edition maintained by GitLab. The corresponding API slug, gitlab-18-04
, is deprecated and will be removed in 90 days. The new slug, gitlab-ee-18-04
is available now.
As announced on 5 September 2018, the last_tagged
attribute returned in response to GET requests to the /v2/tags
or /v2/tags/$TAG_NAME
endpoints has been deprecated. Beginning 1 March 2019, last_tagged
is no longer populated in favor of the last_tagged_uri
attribute.
For example, a GET request to /v2/tags/frontend
currently might return:
{
"tag": {
"name": "frontend",
"resources": {
"count": 3,
"last_tagged_uri": "https://api.digitalocean.com/v2/droplets/132000916",
"droplets": {
"count": 3,
"last_tagged": {
"id": 132000916,
"name": "suspicious-bhabha-u8zq",
"memory": 2048,
"vcpus": 2,
"disk": 60,
"locked": false,
"status": "active",
"kernel": null,
"created_at": "2019-02-13T05:29:52Z",
"features": [
"private_networking"
],
"backup_ids": [],
"next_backup_window": null,
"snapshot_ids": [],
"image": {
"id": 43509743,
"name": "do-kube-1.12.3",
"distribution": "Debian",
"slug": null,
"public": false,
"regions": [
"ams2",
"ams3",
"blr1",
"fra1",
"lon1",
"nyc1",
"nyc2",
"nyc3",
"sfo1",
"sfo2",
"sgp1",
"tor1"
],
"created_at": "2019-02-11T20:38:04Z",
"min_disk_size": 20,
"type": "snapshot",
"size_gigabytes": 2.99
},
"volume_ids": [],
"size": {
"slug": "s-2vcpu-2gb",
"memory": 2048,
"vcpus": 2,
"disk": 60,
"transfer": 3,
"price_monthly": 15,
"price_hourly": 0.02232,
"regions": [
"ams2",
"ams3",
"blr1",
"fra1",
"lon1",
"nyc1",
"nyc2",
"nyc3",
"sfo1",
"sfo2",
"sgp1",
"tor1"
],
"available": true
},
"size_slug": "s-2vcpu-2gb",
"networks": {
"v4": [
{
"ip_address": "192.0.2.255",
"netmask": "255.255.240.0",
"gateway": "192.0.2.1",
"type": "public"
},
{
"ip_address": "10.136.121.81",
"netmask": "255.255.0.0",
"gateway": "10.136.0.1",
"type": "private"
}
],
"v6": []
},
"region": {
"name": "New York 1",
"slug": "nyc1",
"sizes": [
"s-1vcpu-3gb",
"s-1vcpu-1gb",
"s-3vcpu-1gb",
"s-1vcpu-2gb",
"s-2vcpu-2gb",
"s-2vcpu-4gb",
"s-4vcpu-8gb",
"s-16vcpu-64gb",
"s-6vcpu-16gb",
"s-8vcpu-32gb",
"s-12vcpu-48gb",
"s-20vcpu-96gb",
"s-24vcpu-128gb",
"s-32vcpu-192gb"
],
"features": [
"private_networking",
"backups",
"ipv6",
"metadata",
"install_agent",
"server_id",
"management_networking"
],
"available": true
},
"tags": [
"frontend"
]
},
"last_tagged_uri": "https://api.digitalocean.com/v2/droplets/132000916"
},
"images": {
"count": 1,
"last_tagged_uri": "https://api.digitalocean.com/v2/images/42991114"
},
"volumes": {
"count": 0
}
}
}
}
Following this change, the new response would look like:
{
"tag": {
"name": "frontend",
"resources": {
"count": 3,
"last_tagged_uri": "https://api.digitalocean.com/v2/droplets/132000916",
"droplets": {
"count": 3,
"last_tagged_uri": "https://api.digitalocean.com/v2/droplets/132000916"
},
"images": {
"count": 1,
"last_tagged_uri": "https://api.digitalocean.com/v2/images/42991114"
},
"volumes": {
"count": 0
}
}
}
}
For additional information, see the full API reference documentation for tags.
Today DigitalOcean’s Managed Database service, including its API, has entered Limited Availability. In order to access these new endpoints, you must first enable managed databases on your account by opting-in via the cloud control panel. Once enabled, you will be able to create, scale, and manage your database clusters via the API. For example, to create a new database cluster, make a POST
to the /v2/databases
endpoint with a JSON body like:
{
"name": "backend",
"engine": "pg",
"version": "10",
"region": "nyc3",
"size": "db-s-1vcpu-2gb",
"num_nodes": 2
}
The response will include a full JSON representation of the database cluster. The initial value of the cluster’s status
attribute will be “creating.” When the cluster is ready for use, this will transition to “online.”
For the all the details, see the full API reference documentation for DigitalOcean Managed Databases.
The /v2/volumes
endpoint now displays tags and supports adding them to volumes at creation time. Volume tags may now be managed with the /v2/tags
endpoint as well. For more information, see the API reference documentation for both volumes and tags.
The deprecated 16.04 One-Click LAMP slug, lamp-16-04
, was removed from the API.
Today we opened up access to the DigitalOcean Kubernetes service for all users. As part of this release, the API is now also available to all. While still in Limited Availability, you must first enable Kubernetes on your account by opting-in via the cloud control panel to access these endpoints.
Once enabled, you can list, create, or delete clusters as well as scale node pools up and down, recycle individual nodes, and retrieve the kubeconfig file for use with a cluster via the API. For example, to create a new cluster with a node pool using three s-2vcpu-2gb
Droplets, make a POST
to the /v2/kubernetes/clusters
endpoint with a JSON body like:
{
"name": "prod-cluster-01",
"region": "nyc1",
"version": "1.12.1-do.2",
"tags": ["production"],
"node_pools": [
{
"size": "s-2vcpu-2gb",
"count": 3,
"name": "woker-pool"
}
]
}
The response includes a full JSON representation of the cluster. The initial value of the cluster’s status.state
attribute is “provisioning.” When the cluster is ready for use, this transitions to “running.” You can use the /v2/kubernetes/options
endpoint to find the available versions of Kubernetes as well as the supported regions and Droplet sizes.
Once ready, you can retrieve the credentials for use with the cluster by sending a GET request to /v2/kubernetes/clusters/$K8S_CLUSTER_ID/kubeconfig
. The response is a kubeconfig file in YAML format. This file can be used to connect to and administer the cluster using the Kubernetes command line tool, kubectl. For more information, see “How to Connect to a DigitalOcean Kubernetes Cluster with kubectl.”
For the all the details, see the full API reference documentation for DigitalOcean Kubernetes.
The Projects API was released to general availability.
Today, we are promoting the Projects API to General Availability. For the full details, see the API reference documentation for both Projects and Project Resources.
Thank you to everyone who took the time to provide us with feedback.
Ubuntu 16.04 One-Click application images were removed from the API.
Today, we are launching a beta of our new Projects API. Projects enable you to group your resources in ways that align with the applications you host on DigitalOcean, and now you can do so via our API as well. This initial release includes the ability to:
Additionally, we’ve added beta support for Projects to our official clients (Droplet Kit, godo, and doctl).
You can create a new project by sending a POST request to the /v2/projects
endpoint including a body like:
{
"name": "my-web-api",
"description": "My website API",
"purpose": "Service or API",
"environment": "Production"
}
To assign resources to a project, send a POST request to /v2/projects/$PROJECT_ID/resources
including a list of those resources in the body:
{
"resources": [
"dođź’§123456",
"do:floatingip:192.168.99.100",
"do:space:static-assets",
"do:volume:0e250b2a-8a01-11e8-96ae-0242ad114410"
]
}
Resources are identified by uniform resource names or URNs, a string consisting of the type of resource and its unique identifier. A valid URN has the following format: do:resource_type:resource_id
. For the full details, see the API reference documentation for both Projects and Project Resources.
Note that as this is a beta release, we may make additional changes based on your feedback. So let us know how you’re using projects, and follow along with the API changelog for updates.
Today’s release brings Content Delivery Network (CDN) support to Spaces, DigitalOcean’s object storage solution. This can be configured and managed using our API. By sending requests to /v2/cdn/endpoints
, you can list, create, or delete CDN endpoints as well as purge cached content.
To enable the CDN for your Space, send a POST request to /v2/cdn/endpoints
. In the JSON body of your request, specify the origin of your content and the desired TTL. For example:
{
"origin": "static-images.nyc3.digitaloceanspaces.com",
"ttl": 3600
}
Currently, the origin must be a DigitalOcean Space.
To purge cached content from a CDN endpoint, send a DELETE
request to /v2/cdn/endpoints/$ENDPOINT_ID/cache
. The body of the request should include a files
attribute containing a list of cached file paths to be purged. A path may be for a single file or may contain a wildcard (*
) to recursively purge all files under a directory. When only a wildcard is provided, all cached files will be purged. For example, the body of your request might look like:
{
"files": [
"assets/img/hero.png",
"assets/css/*"
]
}
For additional details, see the API reference documentation for managing CDN endpoints.
Today DigitalOcean released support for uploading custom images, enabling you to create Droplets based on your own Linux virtual machine images. Our image management API has been extended with support as well. By sending a POST
to the /v2/images
endpoint, you can create a new custom image. The request must contain a url
attribute pointing to where the image can be downloaded. The image itself may be in the raw, qcow2, vhdx, vdi, or vmdk format. It can be compressed using gzip or bzip2 but must be smaller that 100 GB after being decompressed. For example, the body of you request might look like:
{
"name": "ubuntu-18.04-minimal",
"url": "http://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.img",
"distribution": "Ubuntu",
"region": "nyc3",
"description": "Cloud-optimized image w/ small footprint",
"tags": [
"base-image",
"prod"
]
}
To make organizing your images easier, we’ve also extended tagging support to custom images as well as Droplet snapshots. For additional details, see the API reference documentation for creating custom images and tagging resources.
When listing or getting tags by sending a GET request to /v2/tags
or /v2/tags/$TAG_NAME
, the response payload currently includes a last_tagged
value inside the tag’s resources.droplets
containing a full representation of the resource. This payload is considerably nested and adds additional overhead to the request. In order to improve performance as well as lay the groundwork for bring tagging support to additional resources, this attribute is being deprecated. Beginning March 1st, 2019 last_tagged
will no longer be populated in favor of the new last_tagged_uri
attribute introduced today.
For all resources (and each resource type supported), the last_tagged_uri
attribute contains a string indicating the URI which can be used to retrieve details about that specific resource. If you need information about the last tagged resource specifically, issuing another call to that URI will provide you with all the data for that resource.
Additionally, a count
attribute describing how many resources overall have been tagged with the tag in question has been added. Each individual resource type will continue providing a count
attribute.
If you need guidance on transitioning from using last_tagged
to using of the new last_tagged_uri
attribute, reach out to the team by opening a support ticket.
New Domain resources can now be created via the DigitalOcean v2 API without providing an IP address. The previous behavior, which would automatically create an A record pointing to the apex domain, will be retained for backwards-compatibility when an IP address is provided.
This example demonstrates how to create a new domain without providing an IP address:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_API_TOKEN" \
-d '{"name":"example.com"}' \
"https://api.digitalocean.com/v2/domains"
For more information, see the full Domains API documentation.
The /v2/volumes
endpoint has been updated to support automatically formatting the filesystem of newly created volumes. Volume resources now expose two new attributes: filesystem_type
and filesystem_label
. They can be used to specify the filesystem and the label to be applied. Currently, the available filesystem types are ext4
and xfs
.
For example, here is a request creating a new volume formatted with an EXT4 filesystem:
curl -X POST \
-d '{"name":"volume-nyc3-01","region":"nyc3","filesystem_type":"ext4","filesystem_label":"example","size_gigabytes": 100}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
https://api.digitalocean.com/v2/volumes
Additionally, Ubuntu, Debian, Fedora, Fedora Atomic, and CentOS Droplets created on or after April 26, 2018 will now automatically mount volumes with pre-formatted filesystems when attached. Attaching pre-formatted volumes to other Droplets is not recommended. When the filesystem_type
attribute is not provided, volumes will continue to be presented as raw block devices and require additional configuration.
When retrieving an existing volume, filesystem_type
and filesystem_label
will reflect the current filesystem and label used on the volume even if these were applied manually.
For more information, see the full API documentation for Volumes.
Today, DigitalOcean released a number of Load Balancer improvements including support for using SSL/TLS certificates automatically generated by Let’s Encrypt. Our Certificate management API has been updated to support automatically generating Let’s Encrypt certificates in addition to uploading custom, user-generated certificates.
A request to generate a new SSL/TLS certificate using Let’s Encrypt would look like:
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DO_TOKEN" \
-d '{"name": "le-cert-01", "type": "lets_encrypt", "dns_names": ["www.example.com","example.com"]}' \
"https://api.digitalocean.com/v2/certificates"```
The new type
attribute must be set to lets_encrypt
when using Let’s Encrypt. If omitted, it will default to custom
in order to maintain backwards compatibility. For additional details, see the Certificate management API reference documentation.
For more information on how to use Let’s Encrypt with DigitalOcean Load Balancers, see this tutorial on our community site.
Spaces now support:
Today, we announced wide-ranging changes to our Droplet plans, bringing improved resources across the board. These new plans are now available via the API and can be referenced using their respective size slugs.
Size slugs are human-readable strings used to specify the type of Droplet in certain API requests. In the past, size slugs were typically based on the amount of RAM provided with the plan (e.g. 1gb
). Moving forward, we are standardizing on a format comprised of the identifier for the Droplet’s class, the vCPU count, and the amount of RAM in order to provide more flexibility in the plans we are able to offer you. For example, our new $5 per month Standard Droplet comes with 1 vCPU and 1 GB of RAM. So its size slug is. s-1vcpu-1gb
.
Applications and scripts with hard-coded size slugs must be updated to take advantage of these new plans. In order to provide a transition period, 1st Generation Droplet plans will continue to be available via the API using the legacy size slugs. We will provide additional notice before their removal.
The table below shows the new 2nd Generation Standard Droplet plans along with their corresponding size slug. For always up-to-date information on available plans and pricing, see our pricing page.
Class | Slug | vCPUs | RAM | Disk | Transfer | Monthly Price |
---|---|---|---|---|---|---|
Standard | s-1vcpu-1gb | 1 | 1 GB | 25 GB | 1 TB | $5 |
Standard | s-1vcpu-2gb | 1 | 2 GB | 50 GB | 2 TB | $10 |
Standard | s-1vcpu-3gb | 1 | 3 GB | 60 GB | 3 TB | $15 |
Standard | s-2vcpu-2gb | 2 | 2 GB | 60 GB | 3 TB | $15 |
Standard | s-3vcpu-1gb | 3 | 1 GB | 60 GB | 3 TB | $15 |
Standard | s-2vcpu-4gb | 2 | 4 GB | 80 GB | 4 TB | $20 |
Standard | s-4vcpu-8gb | 4 | 8 GB | 160 GB | 5 TB | $40 |
Standard | s-6vcpu-16gb | 6 | 16 GB | 320 GB | 6 TB | $80 |
Standard | s-8vcpu-32gb | 8 | 32 GB | 640 GB | 7 TB | $160 |
Standard | s-12vcpu-48gb | 12 | 48 GB | 960 GB | 8 TB | $240 |
Standard | s-16vcpu-64gb | 16 | 64 GB | 1,280 GB | 9 TB | $320 |
Standard | s-20vcpu-96gb | 20 | 96 GB | 1,920 GB | 10 TB | $480 |
Standard | s-24vcpu-128gb | 24 | 128 GB | 2,560 GB | 11 TB | $640 |
Standard | s-32vcpu-192gb | 32 | 192 GB | 3,840 GB | 12 TB | $960 |
Available Droplet plans, the resources they provide, and the size slug used to identify them can be accessed programmatically by querying the /v2/sizes
endpoint.
Domain Record resources have been updated to add support for CAA records. As specified in RFC-6844, this record type can be used to specify which certificate authorities (CAs) are permitted to issue certificates for a domain.
For example, in order to restrict TLS/SSL certificate creation for example.com
to letsencrypt.org
, you would use a request like:
curl -X POST \
-d '{"type":"CAA","name":"@","data":"letsencrypt.org.","priority":null,"port":null,"ttl":1800,"flags":0,"tag":"issue"}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
https://api.digitalocean.com/v2/domains/example.com/records
For more information on how to use CAA records, see this tutorial on our community site.
Our API has been extended to support configuring the TTL value for individual domain records. This can be done when creating a new record as well as when updating an existing one via a PUT
request. See the domain record documentation for further information.
Our API currently offers the ability to “rename” a tag by sending a PUT request to /v2/tags/$TAG_NAME
. Due to low usage and operational complexities involved with its maintenance, we are deprecating this functionality. Beginning April 26th, 2017 all requests to this endpoint will respond with an HTTP status of 410 (Gone).
A tag’s name also serves as its unique identifier. We’ve found that the ability to change a tag’s name introduces unneeded complexity. If you need guidance on this transition, reach out to the team by opening a support ticket.
You may now pass tags
as an attribute when creating one or more new Droplets. This optional parameter will create and apply the specified tag(s) to the newly created Droplet(s). For more information see create Droplet documentation.
API v2 now supports volume snapshots, and exposes a unified snapshot endpoint for volume and Droplet snapshots.
Size objects now contain a size\_gigabytes
attribute which represents the physical size of the image in gigabytes. For more information see the images documentation.
API v2 now supports tagging and managing tagged droplets.
API v2 now supports creating multiple droplets simultaneously.
Account objects now contain a floating\_ip\_limit
attribute which provides the maximum number of floating IPs that may be provisioned by the account. For more information, see the account documentation.
API V2 now supports enabling backups on a Droplet.
Account objects now contain status
and status_message
attributes, describing whether an account is locked, active or has a pending warning. For more information, see the account documentation.
We’ve deprecated final (temporary) snapshots and therefore temporary
is no longer an acceptable value for type
for a snapshot.
The access token response from the OAuth API now returns a canonical UUID for an account. This should be used to canonically identify a user.
Since releasing version 2 of our API nearly a year ago and officially bringing it out of beta last month, we’ve seen a tremendous uptake of usage by our community. As the ecosystem of tools and libraries continues to grow, we’ve decided that it is time to sunset version 1 of the API.
Don’t worry! We’re not going to pull the rug out from under you. In order to give everyone time to port their tools, version 1 will not be turned off until Monday, November 9, 2015.
With its (more) RESTful interface and features like OAuth support, v2 is both powerful and easy to use. Our developer documentation should give you all the information you need to begin the transition. If you have questions, you can always ask on our Community site or on Twitter.
We are very pleased to announce that API v2 is no longer in beta. Thank you to everyone who helped report bugs and suggest features during the beta period. Read more about this release on our blog.
The Image action endpoint now responds to a convert
attribute, that allows backups and temporary snapshots to be saved permanently as snapshots. For more information, see the image actions documentation.
Images objects now return a type
attribute, describing whether they are snapshots, backups or temporary images. For more information, see the images documentation.
Size objects now expose an available
boolean attribute, which represents whether new Droplets can be created with the size.
All action objects, i.e. those returned by the /v2/actions
, /v2/droplets/$ID/actions
and /v2/images/$ID/actions
endpoint now return a region_slug
attribute, in addition to a region
attribute. At 00:01 March 20, 2015 UTC, API v2 will start returning an embedded region object at the region
attribute, not a slug.
For example, the API request:
curl -X GET -H 'Content-Type: application/json' \
-H 'Authorization: Bearer $DIGITALOCEAN_TOKEN' \
"https://api.digitalocean.com/v2/actions?page=1&per_page=1"
would return:
{
"actions": [
{
"id": 36804636,
"status": "completed",
"type": "create",
"started_at": "2014-11-14T16:29:21Z",
"completed_at": "2014-11-14T16:30:06Z",
"resource_id": 3164444,
"resource_type": "droplet",
"region": {
"name": "New York 3",
"slug": "nyc3",
"sizes": [
"32gb",
"16gb",
"2gb",
"1gb",
"4gb",
"8gb",
"512mb",
"64gb",
"48gb"
],
"features": [
"virtio",
"private_networking",
"backups",
"ipv6",
"metadata"
],
"available": true
},
"region_slug": "nyc3"
}
],
"links": {
"pages": {
"last": "https://api.digitalocean.com/v2/actions?page=159&per_page=1",
"next": "https://api.digitalocean.com/v2/actions?page=2&per_page=1"
}
},
"meta": {
"total": 159
}
}
Two new endpoints in API v2 report if droplets are running on the same physical hardware. They exist for an individual droplet or for an entire account.
The maximum allowed rate limit per O-Auth token has been increased to 5,000 requests/hour.
The images now supports a private
filter which will allow you
to retrieve all images that are specific to your account (IE: backups and snapshots).
For more information, you can view the documentation for this endpoint here.
API V2 now validates SSH key IDs and identifiers passed into the Droplet create call. In addition, API V2 now validates that requested features are available for a Droplet (backups, private networking, IPv6 and user data).
The API v2 now supports retrieving images by type, to retrieve an image by type, simply append:
GET /v2/images?type={distribution,application}
Change type to what you would like to retrieve and voilĂ !
DropletKit (The Ruby API Client) also supports this functionality as well in Version 1.1.0
You can view the documentation for this feature here.
The JSON object for a droplet no longer contains a nested Size object, but rather a slug called size_slug
that references a Size object. See the droplet docs for the updated structure.
The Image JSON object now includes a min_disk_size
attribute that contains the slug of the minimum size droplet required for that image. For example a snapshot of a 1 Gig droplet will have “1gb” as it’s min_disk_size
.
Remove embedded action_ids
from Droplet and Image.
Both price_monthly
and price_hourly
were previously strings. This made them harder to work with so we have turned them into floats.
We have tweaked the per_page limits to default to 20 and be a maximum of 200. We have found in our testing, so far, for this to be a good balance of requests versus results. Head on over and read up on pagination.
API V2 now supports disabling backups on a Droplet.
API V2 now supports expanding a droplet’s disk size, along with other resources.
Want to know which regions support IPv6 or Private Networking? It is now possible to check which features are enabled in each region.
It seems adding X-
to custom HTTP headers is going out of style, so we have changed our RateLimit headers to no longer include the X.
They now look like this:
RateLimit-Limit:
RateLimit-Remaining:
RateLimit-Reset: