Digital Ocean Images API
A DigitalOcean [image](https://docs.digitalocean.com/products/images/) can be used to create a Droplet and may come in a number of flavors. Currently, there are five types of images: snapshots, backups, applications, distributions, and custom images. * [Snapshots](https://docs.digitalocean.com/products/snapshots/) provide a full copy of an existing Droplet instance taken on demand. * [Backups](https://docs.digitalocean.com/products/backups/) are similar to snapshots but are created automatically at regular intervals when enabled for a Droplet. * [Custom images](https://docs.digitalocean.com/products/custom-images/) are Linux-based virtual machine images (raw, qcow2, vhdx, vdi, and vmdk formats are supported) that you may upload for use on DigitalOcean. * Distributions are the public Linux distributions that are available to be used as a base to create Droplets. * Applications, or [1-Click Apps](https://docs.digitalocean.com/products/marketplace/), are distributions pre-configured with additional software. To interact with images, you will generally send requests to the images endpoint at /v2/images.
GET
/v2/images
Get images
#
POST
/v2/images
Create images
#
GET
/v2/images/{image_id}
Get images by image id
#
PUT
/v2/images/{image_id}
Replace images by image id
#
DELETE
/v2/images/{image_id}
Delete images by image id
#
POST
/v2/images/{image_id}/account_transfer
Create images by image id account transfer
#
POST
/v2/images/{image_id}/account_transfer/accept
Create images by image id account transfer accept
#
POST
/v2/images/{image_id}/account_transfer/cancel
Create images by image id account transfer cancel
#
POST
/v2/images/{image_id}/account_transfer/decline
Create images by image id account transfer decline
#
GET
/v2/images/{image_id}/actions
Get images by image id actions
#
POST
/v2/images/{image_id}/actions
Create images by image id actions
#
GET
/v2/images/{image_id}/actions/{action_id}
Get images by image id actions by action id
#
POST
/v1/images/generations
Create images generations
#
Documentation
Specifications
Other Resources
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/digital-ocean:digital-ocean-images-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: DigitalOcean Images API
version: '2.0'
description: 'A DigitalOcean image can be
used to create a Droplet and may come in a number of flavors. Currently,
there are five types of images: snapshots, backups, applications,
distributions, and custom images.
* Snapshots provide
a full copy of an existing Droplet instance taken on demand.
* Backups are similar
to snapshots but are created automatically at regular intervals when
enabled for a Droplet.
* Custom images
are Linux-based virtual machine images (raw, qcow2, vhdx, vdi, and vmdk
formats are supported) that you may upload for use on DigitalOcean.
* Distributions are the public Linux distributions that are available to
be used as a base to create Droplets.
* Applications, or 1-Click Apps,
are distributions pre-configured with additional software.
To interact with images, you will generally send requests to the images
endpoint at /v2/images.'
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
contact:
name: DigitalOcean API Team
email: api-engineering@digitalocean.com
termsOfService: https://www.digitalocean.com/legal/terms-of-service-agreement/
servers:
- url: https://api.digitalocean.com
description: production
security:
- bearer_auth: []
tags:
- name: Images
description: 'A DigitalOcean image can be
used to create a Droplet and may come in a number of flavors. Currently,
there are five types of images: snapshots, backups, applications,
distributions, and custom images.
* Snapshots provide
a full copy of an existing Droplet instance taken on demand.
* Backups are similar
to snapshots but are created automatically at regular intervals when
enabled for a Droplet.
* Custom images
are Linux-based virtual machine images (raw, qcow2, vhdx, vdi, and vmdk
formats are supported) that you may upload for use on DigitalOcean.
* Distributions are the public Linux distributions that are available to
be used as a base to create Droplets.
* Applications, or 1-Click Apps,
are distributions pre-configured with additional software.
To interact with images, you will generally send requests to the images
endpoint at /v2/images.'
paths:
/v2/images:
get:
$ref: resources/images/images_list.yml
tags:
- Images
summary: Get images
x-summary-source: derived
operationId: getV2Images
x-operation-id-source: derived
post:
$ref: resources/images/images_create_custom.yml
tags:
- Images
summary: Create images
x-summary-source: derived
operationId: postV2Images
x-operation-id-source: derived
/v2/images/{image_id}:
get:
$ref: resources/images/images_get.yml
tags:
- Images
summary: Get images by image id
x-summary-source: derived
operationId: getV2ImagesByImageId
x-operation-id-source: derived
put:
$ref: resources/images/images_update.yml
tags:
- Images
summary: Replace images by image id
x-summary-source: derived
operationId: putV2ImagesByImageId
x-operation-id-source: derived
delete:
$ref: resources/images/images_delete.yml
tags:
- Images
summary: Delete images by image id
x-summary-source: derived
operationId: deleteV2ImagesByImageId
x-operation-id-source: derived
/v2/images/{image_id}/account_transfer:
post:
$ref: resources/images/images_post_account_transfer_create.yml
tags:
- Images
summary: Create images by image id account transfer
x-summary-source: derived
operationId: postV2ImagesByImageIdAccountTransfer
x-operation-id-source: derived
/v2/images/{image_id}/account_transfer/accept:
post:
$ref: resources/images/images_post_account_transfer_accept.yml
tags:
- Images
summary: Create images by image id account transfer accept
x-summary-source: derived
operationId: postV2ImagesByImageIdAccountTransferAccept
x-operation-id-source: derived
/v2/images/{image_id}/account_transfer/cancel:
post:
$ref: resources/images/images_post_account_transfer_cancel.yml
tags:
- Images
summary: Create images by image id account transfer cancel
x-summary-source: derived
operationId: postV2ImagesByImageIdAccountTransferCancel
x-operation-id-source: derived
/v2/images/{image_id}/account_transfer/decline:
post:
$ref: resources/images/images_post_account_transfer_decline.yml
tags:
- Images
summary: Create images by image id account transfer decline
x-summary-source: derived
operationId: postV2ImagesByImageIdAccountTransferDecline
x-operation-id-source: derived
/v2/images/{image_id}/actions:
get:
$ref: resources/images/imageActions_list.yml
tags:
- Images
summary: Get images by image id actions
x-summary-source: derived
operationId: getV2ImagesByImageIdActions
x-operation-id-source: derived
post:
$ref: resources/images/imageActions_post.yml
tags:
- Images
summary: Create images by image id actions
x-summary-source: derived
operationId: postV2ImagesByImageIdActions
x-operation-id-source: derived
/v2/images/{image_id}/actions/{action_id}:
get:
$ref: resources/images/imageActions_get.yml
tags:
- Images
summary: Get images by image id actions by action id
x-summary-source: derived
operationId: getV2ImagesByImageIdActionsByActionId
x-operation-id-source: derived
/v1/images/generations:
post:
$ref: resources/inference/inference_create_image.yml
tags:
- Images
summary: Create images generations
x-summary-source: derived
operationId: postV1ImagesGenerations
x-operation-id-source: derived
components:
securitySchemes:
bearer_auth:
type: http
scheme: bearer
description: '## OAuth Authentication
In order to interact with the DigitalOcean API, you or your application must
authenticate.
The DigitalOcean API handles this through OAuth, an open standard for
authorization. OAuth allows you to delegate access to your account.
Scopes can be used to grant full access, read-only access, or access to
a specific set of endpoints.
You can generate an OAuth token by visiting the [Apps & API](https://cloud.digitalocean.com/account/api/tokens)
section of the DigitalOcean control panel for your account.
An OAuth token functions as a complete authentication request. In effect, it
acts as a substitute for a username and password pair.
Because of this, it is absolutely **essential** that you keep your OAuth
tokens secure. In fact, upon generation, the web interface will only display
each token a single time in order to prevent the token from being compromised.
DigitalOcean access tokens begin with an identifiable prefix in order to
distinguish them from other similar tokens.
- `dop_v1_` for personal access tokens generated in the control panel
- `doo_v1_` for tokens generated by applications using [the OAuth flow](https://docs.digitalocean.com/reference/api/oauth-api/)
- `dor_v1_` for OAuth refresh tokens
### Scopes
Scopes act like permissions assigned to an API token. These permissions
determine what actions the token can perform. You can create API
tokens that grant read-only access, full access, or limited access to
specific endpoints by using custom scopes.
Generally, scopes are designed to match HTTP verbs and common CRUD
operations (Create, Read, Update, Delete).
| HTTP Verb | CRUD Operation | Scope |
|---|---|---|
| GET | Read | `<resource>:read` |
| POST | Create | `<resource>:create` |
| PUT/PATCH | Update | `<resource>:update` |
| DELETE | Delete | `<resource>:delete` |
For example, creating a new Droplet by making a `POST` request to the
`/v2/droplets` endpoint requires the `droplet:create` scope while
listing Droplets by making a `GET` request to the `/v2/droplets`
endpoint requires the `droplet:read` scope.
Each endpoint below specifies which scope is required to access it when
using custom scopes.
### How to Authenticate with OAuth
In order to make an authenticated request, include a bearer-type
`Authorization` header containing your OAuth token. All requests must be
made over HTTPS.
### Authenticate with a Bearer Authorization Header
```
curl -X $HTTP_METHOD -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" "https://api.digitalocean.com/v2/$OBJECT"
```
'
inference_bearer_auth:
type: http
scheme: bearer
description: '## OAuth Authentication
In order to interact with the DigitalOcean API, you or your application must
authenticate.
The DigitalOcean API handles this through OAuth, an open standard for
authorization. OAuth allows you to delegate access to your account.
Scopes can be used to grant full access, read-only access, or access to
a specific set of endpoints.
You can generate an OAuth token by visiting the [Apps & API](https://cloud.digitalocean.com/account/api/tokens)
section of the DigitalOcean control panel for your account.
An OAuth token functions as a complete authentication request. In effect, it
acts as a substitute for a username and password pair.
Because of this, it is absolutely **essential** that you keep your OAuth
tokens secure. In fact, upon generation, the web interface will only display
each token a single time in order to prevent the token from being compromised.
DigitalOcean access tokens begin with an identifiable prefix in order to
distinguish them from other similar tokens.
- `dop_v1_` for personal access tokens generated in the control panel
- `doo_v1_` for tokens generated by applications using [the OAuth flow](https://docs.digitalocean.com/reference/api/oauth-api/)
- `dor_v1_` for OAuth refresh tokens
### Authenticate with a Bearer Authorization Header
**Serverless Inference:**
```
curl -X POST -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" "https://inference.do-ai.run/v1/chat/completions"
```
**Agent Inference:**
```
curl -X POST -H "Authorization: Bearer $AGENT_ACCESS_KEY" "https://{your-agent-url}.agents.do-ai.run/v1/chat/completions?agent=true"
```
**Note:** Agent Inference APIs use an `agent_access_key` (endpoint access
key) instead of a DigitalOcean OAuth token. The `agent_access_key` is
provided when you provision an agent endpoint and is scoped to that
specific agent. It is not interchangeable with DigitalOcean OAuth tokens
(`dop_v1_*`, `doo_v1_*`, `dor_v1_*`), which are used with Serverless
Inference and the control-plane API at `https://api.digitalocean.com`.
'
x-tagGroups:
- name: Public APIs
tags:
- Public APIs Introduction
- 1-Click Applications
- Account
- Actions
- Add-Ons
- Action Gateway
- Action Gateway Data Plane
- Agent Platform API
- Apps
- Billing
- Block Storage
- Block Storage Actions
- BYOIP Prefixes
- CDN Endpoints
- Certificates
- Container Registry
- Container Registries
- Databases
- Dedicated Inference
- Domain Records
- Domains
- Droplet Actions
- Droplets
- Droplet Autoscale Pools
- Firewalls
- Floating IP Actions
- Floating IPs
- Functions
- Harness Runtime
- Image Actions
- Images
- Insights
- Kubernetes
- Load Balancers
- MicroVMs [Public Preview]
- Monitoring
- NFS
- NFS Actions
- Organizations
- Partner Network Connect
- Project Resources
- Projects
- Regions
- Reserved IP Actions
- Reserved IPs
- Reserved IPv6
- Reserved IPv6 Actions
- Security
- Signals
- Sizes
- Snapshots
- Spaces Keys
- SSH Keys
- Tags
- Uptime
- Vector Databases
- VPC NAT Gateways
- VPC Peerings
- VPC Routes [Public Preview]
- VPC Subnets [Public Preview]
- VPCs
- name: Inference APIs
tags:
- Inference Introduction
- Agent Inference
- Batch Inference
- Embeddings
- Serverless Inference