Skip to main content
DigitalOcean logo

Overview

Add DigitalOcean to any ModuleX agent or workflow. Cloud infrastructure management via the DigitalOcean REST API (api.digitalocean.com/v2). Create and manage Droplets, domains, SSH keys, and snapshots.
Categories: Developer Tools & Infrastructure · Cloud Infrastructure · Devops · Auth: OAuth2 · Actions: 6

Authentication

OAuth2 Authentication

Connect using DigitalOcean OAuth (recommended)

Required Credentials

FieldDescriptionRequiredFormat
Client IDDigitalOcean OAuth App Client IDYes-
Client SecretDigitalOcean OAuth App Client SecretYes-

OAuth Configuration

  • Authorization URL: https://cloud.digitalocean.com/v1/oauth/authorize
  • Token URL: https://cloud.digitalocean.com/v1/oauth/token
  • Scopes: read, write

Available Actions

Parameters

name
string
required
A human-readable display name for this key, used to easily identify the SSH keys when they are displayed
public_key
string
required
The entire public key string that will be embedded into the root user’s authorized_keys file

Response

{
  "$defs": {
    "SshKeyResource": {
      "additionalProperties": false,
      "description": "An SSH key on the DigitalOcean account.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "fingerprint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fingerprint"
        },
        "public_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Public Key"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        }
      },
      "title": "SshKeyResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "ssh_key": {
      "anyOf": [
        {
          "$ref": "#/$defs/SshKeyResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "AddSshKeyOutput",
  "type": "object"
}

Parameters

name
string
required
The domain name in standard domain.TLD format (e.g. example.com)
ip_address
string
required
An IP address to automatically create an A record pointing to the apex domain

Response

{
  "$defs": {
    "DomainResource": {
      "additionalProperties": false,
      "description": "A domain registered in DigitalOcean DNS.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ttl"
        },
        "zone_file": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Zone File"
        }
      },
      "title": "DomainResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "domain": {
      "anyOf": [
        {
          "$ref": "#/$defs/DomainResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateDomainOutput",
  "type": "object"
}

Parameters

name
string
required
Human-readable string used as the Droplet display name
region
string
required
Region slug where the Droplet will be deployed (e.g. nyc1, sfo1, ams3)
image
string
required
Image ID or slug for the base image (e.g. ubuntu-22-04-x64)
size
string
required
Size slug for the Droplet (e.g. s-1vcpu-1gb)
volumes
array
List of Block Storage volume IDs to attach to the Droplet
ssh_keys
array
List of SSH key IDs or fingerprints to embed in the Droplet’s root account
backups
boolean
Whether automated backups should be enabled
ipv6
boolean
Whether IPv6 is enabled on the Droplet
user_data
string
Cloud-init user data or Bash script for first-boot configuration (max 64 KiB)
private_networking
boolean
Whether private networking is enabled for the Droplet
monitoring
boolean
Whether to install the DigitalOcean monitoring agent
tags
array
List of tag names to apply to the Droplet after creation

Response

{
  "$defs": {
    "DropletResource": {
      "additionalProperties": false,
      "description": "A DigitalOcean Droplet summary.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "memory": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Memory"
        },
        "vcpus": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Vcpus"
        },
        "disk": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Disk"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "region": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Region"
        },
        "image": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image"
        },
        "size_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Size Slug"
        }
      },
      "title": "DropletResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "droplet": {
      "anyOf": [
        {
          "$ref": "#/$defs/DropletResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateDropletOutput",
  "type": "object"
}

Parameters

droplet_id
string
required
The unique identifier of the Droplet to snapshot
snapshot_name
string
The name to give the new snapshot

Response

{
  "$defs": {
    "DropletActionResource": {
      "additionalProperties": false,
      "description": "A DigitalOcean Droplet action.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "started_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Started At"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Completed At"
        },
        "resource_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Resource Id"
        },
        "resource_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Resource Type"
        },
        "region_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Region Slug"
        }
      },
      "title": "DropletActionResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "action": {
      "anyOf": [
        {
          "$ref": "#/$defs/DropletActionResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateSnapshotOutput",
  "type": "object"
}

Parameters

tag_name
string
Filter Droplets by a specific tag name
page
integer
Which page of paginated results to return (Default: 1)
per_page
integer
Number of items returned per page (Default: 50)

Response

{
  "$defs": {
    "DropletResource": {
      "additionalProperties": false,
      "description": "A DigitalOcean Droplet summary.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "memory": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Memory"
        },
        "vcpus": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Vcpus"
        },
        "disk": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Disk"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "region": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Region"
        },
        "image": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image"
        },
        "size_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Size Slug"
        }
      },
      "title": "DropletResource",
      "type": "object"
    },
    "MetaResource": {
      "additionalProperties": false,
      "description": "Pagination meta from DigitalOcean list responses.",
      "properties": {
        "total": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total"
        }
      },
      "title": "MetaResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "droplets": {
      "items": {
        "$ref": "#/$defs/DropletResource"
      },
      "title": "Droplets",
      "type": "array"
    },
    "meta": {
      "anyOf": [
        {
          "$ref": "#/$defs/MetaResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "ListAllDropletsOutput",
  "type": "object"
}

Parameters

turn_on_off
string
required
Power action to perform: power_on or power_off
droplet_id
string
required
The unique identifier of the Droplet to power on/off

Response

{
  "$defs": {
    "DropletActionResource": {
      "additionalProperties": false,
      "description": "A DigitalOcean Droplet action.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "started_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Started At"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Completed At"
        },
        "resource_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Resource Id"
        },
        "resource_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Resource Type"
        },
        "region_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Region Slug"
        }
      },
      "title": "DropletActionResource",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "action": {
      "anyOf": [
        {
          "$ref": "#/$defs/DropletActionResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "TurnonoffDropletOutput",
  "type": "object"
}

Limits & Quotas

  • Rate limit: 5,000 requests per hour per OAuth token (returns HTTP 429 when exceeded).
  • Droplet creation: subject to account-level Droplet limits (default 25; request increase via support).
  • Error model: non-2xx responses and timeouts are caught and returned as success=False + error rather than raising.

Heroku

Algolia

Amazon Web Services