API Release Notes

April 2024

22 April

  • 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.

17 April

  • 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.

12 April

  • 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.

8 April

  • 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.

March 2024

15 March

January 2024

16 January

  • 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.

December 2023

8 December

  • 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.

October 2023

17 October

  • 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.

September 2023

27 September

  • 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.

August 2023

24 August

  • 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.

18 August

  • 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.

July 2023

10 July

  • 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.

May 2023

5 May

  • 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.

January 2023

6 January

  • 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.

December 2022

16 December

  • Released v1.91.0 of doctl, the official DigitalOcean CLI. This release adds support for creating and updating firewall rules for load balancers.

12 December

  • 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.

November 2022

22 November

  • 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.

16 November

  • 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.

15 November

  • 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.

October 2022

18 October

  • Released v1.84.0 of doctl, the official DigitalOcean CLI. This release adds a --wait flag to the doctl database create subcommand.

7 October

  • 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.

September 2022

28 September

  • 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.

20 September

  • 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.

9 September

  • The Rocky 9 (rockylinux-9-x64) base image is now available in the control panel and via the API.

August 2022

15 August

  • 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.

10 August

  • 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.

8 August

  • The Rocky 8.6 (rockylinux-8-x64) base image is now available in the control panel and via the API.

July 2022

12 July

  • 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.

June 2022

30 June

  • 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.

27 June

  • 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.

16 June

  • 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.

6 June

  • 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.

May 2022

23 May

  • 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.

10 May

  • 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.

3 May

  • 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.

March 2022

31 March

  • Released v1.73.0 of doctl, the official DigitalOcean CLI. This release updates godo to support new App Platform features.

29 March

  • 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 panel
    • doo_v1_ for tokens generated by application using the OAuth flow
    • dor_v1_ for OAuth refresh tokens

  • v2.19.0 of the DigitalOcean Terraform Provider is now available. This release adds custom region support of the digitalocean_container_registry resource.

28 March

  • 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.

17 March

  • 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.

15 March

  • 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.

8 March

  • 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.

4 March

  • 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.

February 2022

9 February

  • 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.

January 2022

27 January

  • 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.

14 January

  • 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:

    • Fetching load balancer resources by ID in a datasource.
    • Updating the name and description for default VPC networks.

    It also includes bug fixes.

December 2021

7 December

  • 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.

November 2021

10 November

  • Released v1.67.0 of doctl, the official DigitalOcean CLI. This release updates godo to support new App Platform features.

8 November

  • v2.16.0 of the DigitalOcean Terraform Provider is now available. This release adds support for:

    • Scaling load balancers using the size_unit field.
    • source_kubernetes_ids and destination_kubernetes_ids attributes for Kubernetes firewall rules.

    It also includes bug fixes.

1 November

  • 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:

    • Disabling automatic DNS record creation when using Let’s Encrypting certificates.
    • Revoking OAuth tokens when credentials are destroyed.

    It also includes bug fixes.

October 2021

12 October

  • Released v1.65.0 of doctl, the official DigitalOcean CLI. This release includes a number of new features:

    • The --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 availability
    • The kubernetes cluster sub-commands now include a “Support Features” field when displaying version options
    • The --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 balancer

7 October

  • v2.14.0 of the DigitalOcean Terraform Provider is now available. This release adds support for the high availability (ha) attribute when creating Kubernetes clusters.

5 October

  • 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.

September 2021

24 September

  • 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.

August 2021

20 August

  • Released v1.64.0 of doctl, the official DigitalOcean CLI. This release includes support for managing App Platform alerts.

9 August

  • Released v1.63.0 of doctl, the official DigitalOcean CLI. This release includes a number of new features:

    • The database firewall sub-commands now support apps as trusted sources
    • New monitoring alert sub-commands for creating and managing alert policies
    • The --droplet-agent flag was added to the compute droplet create sub-command to optionally disable installing the agent for the Droplet web console

2 August

  • When 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.

July 2021

9 July

  • Released v1.62.0 of doctl, the official DigitalOcean CLI. This release fixes a handful of bugs and introduces new flags on existing commands:

    • The apps logs command now supports tailing live logs with the --tail flag. This lets application owners select the most recent logs from their applications
    • The --wait flag was added to apps create and apps update to block these commands until an application is fully created or updated

June 2021

29 June

  • v2.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.

May 2021

27 May

  • v2.7.0 of the DigitalOcean Terraform Provider is now available. This release adds support for distributing images to multiple regions.

6 May

  • 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.

5 May

  • 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:

    • The private_networking feature is now displayed under the features field under droplet instead of the features field under region.
    • The vpc_uuid field now populates with the correct values.
    • The Droplet’s type displays base when the Droplet uses a base image (i.e. Ubuntu, CentOS).
    • The Droplet’s networks field now includes private and floating IP addresses, if applicable.

April 2021

13 April

  • 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.

March 2021

29 March

  • 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.

10 March

  • 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.

February 2021

22 February

  • 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.

10 February

  • 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.

3 February

  • 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.

January 2021

21 January

  • 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.

19 January

  • 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.

December 2020

7 December

  • 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.

4 December

  • Released v1.54.0 of doctl, the official DigitalOcean CLI. This release user confirmation before container registry garbage collection is started.

3 December

  • 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.

1 December

  • 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.

    Click here to view the complete list of deprecated plans.
    Class Slug vCPUs RAM Disk Transfer Monthly Price
    Standard 512mb 1 512 MB 20 GB 1 TB $5
    Standard 1gb 1 1 GB 30 GB 2 TB $10
    Standard 2gb 2 2 GB 40 GB 3 TB $20
    Standard 4gb 2 3 GB 60 GB 4 TB $40
    Standard 8gb 4 4 GB 80 GB 5 TB $80
    Standard 16gb 8 16 GB 160 GB 6 TB $160
    Standard 32gb 12 32 GB 320 GB 7 TB $320
    Standard 48gb 16 48 GB 480 GB 8 TB $480
    Standard 64gb 20 64 GB 640 GB 9 TB $640
    Standard 96gb 24 96 GB 960 GB 10 TB $960
    Standard s-1vcpu-3gb 1 3 GB 60 GB 3 TB $15
    Standard s-3vcpu-1gb 3 1 GB 60 GB 3 TB $15
    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 16 GB 1280 GB 9 TB $320
    Standard s-20vcpu-96gb 20 20 GB 1920 GB 10 TB $480
    Standard s-24vcpu-128gb 24 24 GB 2560 GB 11 TB $640
    Standard s-32vcpu-192gb 32 32 GB 3840 GB 12 TB $960
    High Memory m-16gb 2 16 GB 60 GB 5 TB $75
    High Memory m-32gb 4 32 GB 90 GB 5 TB $150
    High Memory m-64gb 8 64 GB 200 GB 5 TB $300
    High Memory m-128gb 16 128 GB 340 GB 5 TB $600
    High Memory m-224gb 32 224 GB 500 GB 5 TB $1100

    You can view Droplet plans, the resources they provide, and the size slug used to identify them programmatically by querying the /v2/sizes endpoint.

November 2020

24 November

  • Released v1.53.0 of doctl, the official DigitalOcean CLI. This release adds support for container registry garbage collection of untagged manifests.

12 November

  • 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.

10 November

  • Released v1.52.0 of doctl, the official DigitalOcean CLI. This release adds a --force-rebuild flag to doctl apps create-deployment.

6 November

  • 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.

3 November

  • Released v1.51.0 of doctl, the official DigitalOcean CLI. This release add support for managing DigitalOcean Container Registry subscriptions.

2 November

  • 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.

October 2020

30 October

  • Released v1.50.0 of doctl, the official DigitalOcean CLI. This release incudes 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.

28 October

  • Released v1.49.0 of doctl, the official DigitalOcean CLI. This release incudes the ability to update the default VPC for a region, the ability to set an expiration time when downloading kubeconfig files, and more.

20 October

  • 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.

19 October

  • 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.

13 October

  • 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.

6 October

  • 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",
        }
      ]
    }
    

5 October

  • Released v1.47.0 of doctl, the official DigitalOcean CLI. This release adds support for setting Kubernetes node pool taints.

1 October

July 2020

22 July

  • 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.

20 July

  • 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.

6 July

  • Load balancer health checks now support the HTTPS protocol. You can now configure load balancers to verify the health of your Droplets’ HTTPS endpoints.

June 2020

15 June

  • 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.

10 June

  • 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.

9 June

  • 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=ATo 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.

3 June

  • v1.19.0 of the DigitalOcean Terraform Provider is now available. This release includes initial support the DigitalOcean Container Registry.

2 June

  • 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.

May 2020

6 May

  • It is now possible to adjust the behavior of the OAuth authorization flow by specifying a prompt and/or max_auth_age query parameter:

    • The prompt query parameter can be used to specify how the authorizing user should be authenticated.
    • The 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.

5 May

  • 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.

April 2020

29 April

28 April

  • 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.

23 April

  • 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.

14 April

  • v1.16.0 of the DigitalOcean Terraform Provider is now available. This release includes VPC support and expanded Spaces support.

10 April

  • 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.

7 April

  • 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.

    Related Changes

    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

March 2020

18 March

  • 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.

4 March

  • 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.

February 2020

6 February

  • 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.

5 February

  • 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.

4 February

  • 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.

January 2020

27 January

  • v1.13.0 of the DigitalOcean Terraform Provider is now available. This release adds support for tagging Managed Databases clusters.

14 January

  • Released v1.37.0 of doctl, the official DigitalOcean CLI. This release adds the ability to retrieve account balances.

13 January

  • 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.

December 2019

2 December

  • 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.

November 2019

21 November

20 November

  • 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.

August 2019

22 August

  • 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.

20 August

  • 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.

19 August

June 2019

25 June

  • 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.

May 2019

30 May

  • 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.

21 May

  • 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 convienience. 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.

April 2019

16 April

  • 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.

9 April

  • 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.

March 2019

19 March

  • 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.

February 2019

26 February

  • 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.

15 February

  • 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.

14 February

  • 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.

5 February

  • 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.

January 2019

16 January

  • The deprecated 16.04 One-Click LAMP slug, lamp-16-04, was removed from the API.

December 2018

11 December

  • 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.

November 2018

26 November

  • 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.

13 November

October 2018

16 October

  • 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:

    • Create, list, retrieve, update, and delete Projects
    • Assign existing resources to a Project
    • List resources in a Project

    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:droplet: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.

September 2018

27 September

  • 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.

25 September

  • 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.

5 September

  • 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.

June 2018

22 June

  • 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.

May 2018

22 May

  • 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 filesytem 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.

8 May

  • 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.

January 2018

29 January

  • Spaces now support:

    • Version 4 of pre-signed URLs, allowing for easier use of 3rd party S3 compatible libraries.
    • Scheduled deletion of objects via bucket lifecycle methods in the Spaces API.
    • Previews of image, audio, and video files that are moused over in the control panel file browser.

16 January

  • 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.

September 2017

13 September

  • 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.

April 2017

14 April

  • 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.

March 2017

28 March

  • 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.

November 2016

10 November

  • 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.

October 2016

5 October

April 2016

13 April

  • 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.

March 2016

22 March

December 2015

14 December

November 2015

24 November

  • 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.

5 November

July 2015

20 July

  • 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.

14 July

  • We’ve deprecated final (temporary) snapshots and therefore temporary is no longer an acceptable value for type for a snapshot.

May 2015

20 May

1 May

  • 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.

April 2015

2 April

March 2015

25 March

  • 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.

11 March

  • Images objects now return a type attribute, describing whether they are snapshots, backups or temporary images. For more information, see the images documentation.

4 March

  • Size objects now expose an available boolean attribute, which represents whether new Droplets can be created with the size.

February 2015

20 February

  • 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
      }
    }
    

10 February

8 February

  • The maximum allowed rate limit per O-Auth token has been increased to 5,000 requests/hour.

January 2015

22 January

  • 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.

20 January

  • 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).

November 2014

6 November

  • 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.

October 2014

27 October

  • 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.

August 2014

20 August

  • Remove embedded action_ids from Droplet and Image.

July 2014

25 July

  • Both price_monthly and price_hourly were previously strings. This made them harder to work with so we have turned them into floats.

2 July

  • 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.

June 2014

25 June

  • 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.

24 June

  • 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: