Digital Ocean Apps API

App Platform is a Platform-as-a-Service (PaaS) offering from DigitalOcean that allows developers to publish code directly to DigitalOcean servers without worrying about the underlying infrastructure. Most API operations are centered around a few core object types. Following are the definitions of these types. These definitions will be omitted from the operation-specific documentation. For documentation on app specifications (`AppSpec` objects), please refer to the [product documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/)).

Operations 38

GET /v2/apps Get apps #
POST /v2/apps Create apps #
DELETE /v2/apps/{id} Delete apps by id #
GET /v2/apps/{id} Get apps by id #
PUT /v2/apps/{id} Replace apps by id #
POST /v2/apps/{app_id}/restart Create apps by app id restart #
GET /v2/apps/{app_id}/components/{component_name}/logs Get apps by app id components by component name logs #
GET /v2/apps/{app_id}/components/{component_name}/exec Get apps by app id components by component name exec #
GET /v2/apps/{app_id}/instances Get apps by app id instances #
GET /v2/apps/{app_id}/deployments Get apps by app id deployments #
POST /v2/apps/{app_id}/deployments Create apps by app id deployments #
GET /v2/apps/{app_id}/deployments/{deployment_id} Get apps by app id deployments by deployment id #
POST /v2/apps/{app_id}/deployments/{deployment_id}/cancel Create apps by app id deployments by deployment id cancel #
GET /v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs Get apps by app id deployments by deployment id components by component name… #
GET /v2/apps/{app_id}/deployments/{deployment_id}/logs Get apps by app id deployments by deployment id logs #
GET /v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/exec Get apps by app id deployments by deployment id components by component name… #
GET /v2/apps/{app_id}/logs Get apps by app id logs #
GET /v2/apps/{app_id}/job-invocations Get apps by app id job invocations #
GET /v2/apps/{app_id}/job-invocations/{job_invocation_id} Get apps by app id job invocations by job invocation id #
POST /v2/apps/{app_id}/job-invocations/{job_invocation_id}/cancel Create apps by app id job invocations by job invocation id cancel #
GET /v2/apps/{app_id}/jobs/{job_name}/invocations/{job_invocation_id}/logs Get apps by app id jobs by job name invocations by job invocation id logs #
GET /v2/apps/{app_id}/events Get apps by app id events #
GET /v2/apps/{app_id}/events/{event_id} Get apps by app id events by event id #
POST /v2/apps/{app_id}/events/{event_id}/cancel Create apps by app id events by event id cancel #
GET /v2/apps/{app_id}/events/{event_id}/logs Get apps by app id events by event id logs #
GET /v2/apps/tiers/instance_sizes Get apps tiers instance sizes #
GET /v2/apps/tiers/instance_sizes/{slug} Get apps tiers instance sizes by slug #
GET /v2/apps/regions Get apps regions #
POST /v2/apps/propose Create apps propose #
GET /v2/apps/{app_id}/alerts Get apps by app id alerts #
POST /v2/apps/{app_id}/alerts/{alert_id}/destinations Create apps by app id alerts by alert id destinations #
POST /v2/apps/{app_id}/rollback Create apps by app id rollback #
POST /v2/apps/{app_id}/rollback/validate Create apps by app id rollback validate #
POST /v2/apps/{app_id}/rollback/commit Create apps by app id rollback commit #
POST /v2/apps/{app_id}/rollback/revert Create apps by app id rollback revert #
GET /v2/apps/{app_id}/metrics/bandwidth_daily Get apps by app id metrics bandwidth daily #
POST /v2/apps/metrics/bandwidth_daily Create apps metrics bandwidth daily #
GET /v2/apps/{app_id}/health Get apps by app id health #

Work with this as data

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-apps-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 Specification

digital-ocean-apps-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DigitalOcean Apps API
  version: '2.0'
  description: 'App Platform is a Platform-as-a-Service (PaaS) offering from DigitalOcean that allows

    developers to publish code directly to DigitalOcean servers without worrying about the

    underlying infrastructure.


    Most API operations are centered around a few core object types. Following are the

    definitions of these types. These definitions will be omitted from the operation-specific

    documentation.


    For documentation on app specifications (`AppSpec` objects), please refer to the

    product documentation).'
  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: Apps
  description: 'App Platform is a Platform-as-a-Service (PaaS) offering from DigitalOcean that allows

    developers to publish code directly to DigitalOcean servers without worrying about the

    underlying infrastructure.


    Most API operations are centered around a few core object types. Following are the

    definitions of these types. These definitions will be omitted from the operation-specific

    documentation.


    For documentation on app specifications (`AppSpec` objects), please refer to the

    product documentation).'
paths:
  /v2/apps:
    get:
      $ref: resources/apps/apps_list.yml
      tags:
      - Apps
      summary: Get apps
      x-summary-source: derived
      operationId: getV2Apps
      x-operation-id-source: derived
    post:
      $ref: resources/apps/apps_create.yml
      tags:
      - Apps
      summary: Create apps
      x-summary-source: derived
      operationId: postV2Apps
      x-operation-id-source: derived
  /v2/apps/{id}:
    delete:
      $ref: resources/apps/apps_delete.yml
      tags:
      - Apps
      summary: Delete apps by id
      x-summary-source: derived
      operationId: deleteV2AppsById
      x-operation-id-source: derived
    get:
      $ref: resources/apps/apps_get.yml
      tags:
      - Apps
      summary: Get apps by id
      x-summary-source: derived
      operationId: getV2AppsById
      x-operation-id-source: derived
    put:
      $ref: resources/apps/apps_update.yml
      tags:
      - Apps
      summary: Replace apps by id
      x-summary-source: derived
      operationId: putV2AppsById
      x-operation-id-source: derived
  /v2/apps/{app_id}/restart:
    post:
      $ref: resources/apps/apps_restart.yml
      tags:
      - Apps
      summary: Create apps by app id restart
      x-summary-source: derived
      operationId: postV2AppsByAppIdRestart
      x-operation-id-source: derived
  /v2/apps/{app_id}/components/{component_name}/logs:
    get:
      $ref: resources/apps/apps_get_logs_active_deployment.yml
      tags:
      - Apps
      summary: Get apps by app id components by component name logs
      x-summary-source: derived
      operationId: getV2AppsByAppIdComponentsByComponentNameLogs
      x-operation-id-source: derived
  /v2/apps/{app_id}/components/{component_name}/exec:
    get:
      $ref: resources/apps/apps_get_exec_active_deployment.yml
      tags:
      - Apps
      summary: Get apps by app id components by component name exec
      x-summary-source: derived
      operationId: getV2AppsByAppIdComponentsByComponentNameExec
      x-operation-id-source: derived
  /v2/apps/{app_id}/instances:
    get:
      $ref: resources/apps/apps_get_instances.yml
      tags:
      - Apps
      summary: Get apps by app id instances
      x-summary-source: derived
      operationId: getV2AppsByAppIdInstances
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments:
    get:
      $ref: resources/apps/apps_list_deployments.yml
      tags:
      - Apps
      summary: Get apps by app id deployments
      x-summary-source: derived
      operationId: getV2AppsByAppIdDeployments
      x-operation-id-source: derived
    post:
      $ref: resources/apps/apps_create_deployment.yml
      tags:
      - Apps
      summary: Create apps by app id deployments
      x-summary-source: derived
      operationId: postV2AppsByAppIdDeployments
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments/{deployment_id}:
    get:
      $ref: resources/apps/apps_get_deployment.yml
      tags:
      - Apps
      summary: Get apps by app id deployments by deployment id
      x-summary-source: derived
      operationId: getV2AppsByAppIdDeploymentsByDeploymentId
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments/{deployment_id}/cancel:
    post:
      $ref: resources/apps/apps_cancel_deployment.yml
      tags:
      - Apps
      summary: Create apps by app id deployments by deployment id cancel
      x-summary-source: derived
      operationId: postV2AppsByAppIdDeploymentsByDeploymentIdCancel
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs:
    get:
      $ref: resources/apps/apps_get_logs.yml
      tags:
      - Apps
      summary: Get apps by app id deployments by deployment id components by component name…
      x-summary-source: derived
      operationId: getV2AppsByAppIdDeploymentsByDeploymentIdComponentsByComponentNameLogs
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments/{deployment_id}/logs:
    get:
      $ref: resources/apps/apps_get_logs_aggregate.yml
      tags:
      - Apps
      summary: Get apps by app id deployments by deployment id logs
      x-summary-source: derived
      operationId: getV2AppsByAppIdDeploymentsByDeploymentIdLogs
      x-operation-id-source: derived
  /v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/exec:
    get:
      $ref: resources/apps/apps_get_exec.yml
      tags:
      - Apps
      summary: Get apps by app id deployments by deployment id components by component name…
      x-summary-source: derived
      operationId: getV2AppsByAppIdDeploymentsByDeploymentIdComponentsByComponentNameExec
      x-operation-id-source: derived
  /v2/apps/{app_id}/logs:
    get:
      $ref: resources/apps/apps_get_logs_active_deployment_aggregate.yml
      tags:
      - Apps
      summary: Get apps by app id logs
      x-summary-source: derived
      operationId: getV2AppsByAppIdLogs
      x-operation-id-source: derived
  /v2/apps/{app_id}/job-invocations:
    get:
      $ref: resources/apps/apps_list_job_invocations.yml
      tags:
      - Apps
      summary: Get apps by app id job invocations
      x-summary-source: derived
      operationId: getV2AppsByAppIdJobInvocations
      x-operation-id-source: derived
  /v2/apps/{app_id}/job-invocations/{job_invocation_id}:
    get:
      $ref: resources/apps/apps_get_job_invocation.yml
      tags:
      - Apps
      summary: Get apps by app id job invocations by job invocation id
      x-summary-source: derived
      operationId: getV2AppsByAppIdJobInvocationsByJobInvocationId
      x-operation-id-source: derived
  /v2/apps/{app_id}/job-invocations/{job_invocation_id}/cancel:
    post:
      $ref: resources/apps/apps_cancel_job_invocation.yml
      tags:
      - Apps
      summary: Create apps by app id job invocations by job invocation id cancel
      x-summary-source: derived
      operationId: postV2AppsByAppIdJobInvocationsByJobInvocationIdCancel
      x-operation-id-source: derived
  /v2/apps/{app_id}/jobs/{job_name}/invocations/{job_invocation_id}/logs:
    get:
      $ref: resources/apps/apps_get_job_invocation_logs.yml
      tags:
      - Apps
      summary: Get apps by app id jobs by job name invocations by job invocation id logs
      x-summary-source: derived
      operationId: getV2AppsByAppIdJobsByJobNameInvocationsByJobInvocationIdLogs
      x-operation-id-source: derived
  /v2/apps/{app_id}/events:
    get:
      $ref: resources/apps/apps_list_events.yml
      tags:
      - Apps
      summary: Get apps by app id events
      x-summary-source: derived
      operationId: getV2AppsByAppIdEvents
      x-operation-id-source: derived
  /v2/apps/{app_id}/events/{event_id}:
    get:
      $ref: resources/apps/apps_get_event.yml
      tags:
      - Apps
      summary: Get apps by app id events by event id
      x-summary-source: derived
      operationId: getV2AppsByAppIdEventsByEventId
      x-operation-id-source: derived
  /v2/apps/{app_id}/events/{event_id}/cancel:
    post:
      $ref: resources/apps/apps_cancel_event.yml
      tags:
      - Apps
      summary: Create apps by app id events by event id cancel
      x-summary-source: derived
      operationId: postV2AppsByAppIdEventsByEventIdCancel
      x-operation-id-source: derived
  /v2/apps/{app_id}/events/{event_id}/logs:
    get:
      $ref: resources/apps/apps_get_event_logs.yml
      tags:
      - Apps
      summary: Get apps by app id events by event id logs
      x-summary-source: derived
      operationId: getV2AppsByAppIdEventsByEventIdLogs
      x-operation-id-source: derived
  /v2/apps/tiers/instance_sizes:
    get:
      $ref: resources/apps/apps_list_instanceSizes.yml
      tags:
      - Apps
      summary: Get apps tiers instance sizes
      x-summary-source: derived
      operationId: getV2AppsTiersInstanceSizes
      x-operation-id-source: derived
  /v2/apps/tiers/instance_sizes/{slug}:
    get:
      $ref: resources/apps/apps_get_instanceSize.yml
      tags:
      - Apps
      summary: Get apps tiers instance sizes by slug
      x-summary-source: derived
      operationId: getV2AppsTiersInstanceSizesBySlug
      x-operation-id-source: derived
  /v2/apps/regions:
    get:
      $ref: resources/apps/apps_list_regions.yml
      tags:
      - Apps
      summary: Get apps regions
      x-summary-source: derived
      operationId: getV2AppsRegions
      x-operation-id-source: derived
  /v2/apps/propose:
    post:
      $ref: resources/apps/apps_validate_appSpec.yml
      tags:
      - Apps
      summary: Create apps propose
      x-summary-source: derived
      operationId: postV2AppsPropose
      x-operation-id-source: derived
  /v2/apps/{app_id}/alerts:
    get:
      $ref: resources/apps/apps_list_alerts.yml
      tags:
      - Apps
      summary: Get apps by app id alerts
      x-summary-source: derived
      operationId: getV2AppsByAppIdAlerts
      x-operation-id-source: derived
  /v2/apps/{app_id}/alerts/{alert_id}/destinations:
    post:
      $ref: resources/apps/apps_assign_alertDestinations.yml
      tags:
      - Apps
      summary: Create apps by app id alerts by alert id destinations
      x-summary-source: derived
      operationId: postV2AppsByAppIdAlertsByAlertIdDestinations
      x-operation-id-source: derived
  /v2/apps/{app_id}/rollback:
    post:
      $ref: resources/apps/apps_create_rollback.yml
      tags:
      - Apps
      summary: Create apps by app id rollback
      x-summary-source: derived
      operationId: postV2AppsByAppIdRollback
      x-operation-id-source: derived
  /v2/apps/{app_id}/rollback/validate:
    post:
      $ref: resources/apps/apps_validate_rollback.yml
      tags:
      - Apps
      summary: Create apps by app id rollback validate
      x-summary-source: derived
      operationId: postV2AppsByAppIdRollbackValidate
      x-operation-id-source: derived
  /v2/apps/{app_id}/rollback/commit:
    post:
      $ref: resources/apps/apps_commit_rollback.yml
      tags:
      - Apps
      summary: Create apps by app id rollback commit
      x-summary-source: derived
      operationId: postV2AppsByAppIdRollbackCommit
      x-operation-id-source: derived
  /v2/apps/{app_id}/rollback/revert:
    post:
      $ref: resources/apps/apps_revert_rollback.yml
      tags:
      - Apps
      summary: Create apps by app id rollback revert
      x-summary-source: derived
      operationId: postV2AppsByAppIdRollbackRevert
      x-operation-id-source: derived
  /v2/apps/{app_id}/metrics/bandwidth_daily:
    get:
      $ref: resources/apps/apps_get_metrics_bandwidth_usage.yml
      tags:
      - Apps
      summary: Get apps by app id metrics bandwidth daily
      x-summary-source: derived
      operationId: getV2AppsByAppIdMetricsBandwidthDaily
      x-operation-id-source: derived
  /v2/apps/metrics/bandwidth_daily:
    post:
      $ref: resources/apps/apps_list_metrics_bandwidth_usage.yml
      tags:
      - Apps
      summary: Create apps metrics bandwidth daily
      x-summary-source: derived
      operationId: postV2AppsMetricsBandwidthDaily
      x-operation-id-source: derived
  /v2/apps/{app_id}/health:
    get:
      $ref: resources/apps/apps_get_health.yml
      tags:
      - Apps
      summary: Get apps by app id health
      x-summary-source: derived
      operationId: getV2AppsByAppIdHealth
      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