Apps
Manage app deployments, networking, domains, and monitoring on DigitalOcean App Platform.
Manage app deployments on DigitalOcean App Platform.
List Apps
GET /v1/projects/:projectId/appsReturns all apps in the project, ordered by creation date (newest first).
Auth: Required (member)
Get App
GET /v1/projects/:projectId/apps/:appIdReturns app details. Performs lazy status sync from DigitalOcean if the app is still deploying.
Auth: Required (member, scope: apps:read)
Preview Cost
GET /v1/projects/:projectId/apps/preview?size=<slug>Returns a prorated cost preview for creating an app with the given size, including the subtotal, estimated tax, any applied credit, and the total due today.
Auth: Required (member, scope: apps:read)
Save Draft
POST /v1/projects/:projectId/apps/draftSaves app wizard configuration as a draft. Drafts expire after 24 hours.
Auth: Required (member, write access, scope: apps:write)
Create App
POST /v1/projects/:projectId/appsDeploys an app from a saved draft. The prorated amount is charged to the project's payment method off-session and the response is { deployed: true, appId }. If the project has no card, the request returns 402 — see Billing → Deploy Payment Errors.
Auth: Required (member, write access, scope: apps:write)
Request Body:
{
"draftId": "draft_..."
}Update App
PATCH /v1/projects/:projectId/apps/:appIdUpdates app settings (name, env vars, build settings, scaling). Triggers a redeploy on DigitalOcean.
Auth: Required (member, write access, scope: apps:write)
Delete App
DELETE /v1/projects/:projectId/apps/:appIdRemoves the app from DigitalOcean, deprovisions routing, and deletes from the database.
Auth: Required (member, write access, scope: apps:write)
Check Subdomain Availability
GET /v1/apps/check-subdomain?slug=<slug>Checks if a Cosmoner subdomain is globally available.
Auth: Required
Logs
GET /v1/projects/:projectId/apps/:appId/logs?type=BUILD|RUNReturns build or runtime logs from DigitalOcean.
Auth: Required (member, scope: apps:read)
Metrics
GET /v1/projects/:projectId/apps/:appId/metrics?range=1h|6h|24hReturns CPU%, memory%, and restart count time series.
Auth: Required (member, scope: apps:read)
Console (Exec)
GET /v1/projects/:projectId/apps/:appId/execReturns a WebSocket URL for an interactive console session. The connection is proxied through the backend.
Auth: Required (member, scope: apps:read)
Activity
GET /v1/projects/:projectId/apps/:appId/activityReturns the last 10 deployments.
Auth: Required (member, scope: apps:read)
Networking
Get Network Config
GET /v1/projects/:projectId/apps/:appId/networkReturns region, VPC, egress IPs, advanced settings, and routing rules.
Auth: Required (member, scope: apps:read)
Update VPC
PATCH /v1/projects/:projectId/apps/:appId/network/vpcConnects or disconnects VPC. Mutually exclusive with dedicated egress IPs.
Auth: Required (member, scope: apps:write)
Toggle Dedicated Egress IPs
PATCH /v1/projects/:projectId/apps/:appId/network/egressEnables/disables dedicated egress IPs ($25/mo added to subscription).
Auth: Required (member, scope: apps:write)
Update Redirect Rules
PUT /v1/projects/:projectId/apps/:appId/network/redirect-rulesReplaces ingress redirect rules.
Auth: Required (member, scope: apps:write)
Update Routing Rules
PUT /v1/projects/:projectId/apps/:appId/network/routing-rulesReplaces component routing rules.
Auth: Required (member, scope: apps:write)
Update Advanced Settings
PATCH /v1/projects/:projectId/apps/:appId/network/advancedUpdates edge caching, email obfuscation, and threat protection settings.
Auth: Required (member, scope: apps:write)
Domain / Routing
Change App Domain
PATCH /v1/projects/:projectId/apps/:appId/domainChanges the app's public URL (Cosmoner subdomain or custom domain). Tears down old routing and provisions new.
Auth: Required (member, write access, scope: apps:write)
Setup Routing
POST /v1/projects/:projectId/apps/:appId/setup-routingManually triggers routing provisioning for a PENDING app. Returns CNAME + DCV instructions for external domains.
Auth: Required (member, write access, scope: apps:write)
Verify Hostname
POST /v1/projects/:projectId/apps/:appId/verify-hostnameRe-checks DCV/SSL for an external custom hostname.
Auth: Required (member, write access, scope: apps:write)