Reference
Applications API
Applications, deployments, rollbacks and logs.
Applications
GET
/api/v1/applicationsList applications.
POST
/api/v1/applicationsCreate an application, and deploy it unless deploy is false.
GET
/api/v1/applications/{id}Application detail with current and latest deployment.
PATCH
/api/v1/applications/{id}Update settings or environment. Applies on the next deploy.
DELETE
/api/v1/applications/{id}Remove the container and the application.
Create from Git
http
POST /api/v1/applications{ "name": "web", "server_id": "c1f0…", "source": { "type": "git", "installation_id": 5512, "repo_id": 81723, "branch": "main" }, "container_port": 3000, "health_path": "/api/health", "env": [{ "key": "NODE_ENV", "value": "production" }], "auto_deploy": true}Create from an image
http
POST /api/v1/applications{ "name": "umami", "server_id": "c1f0…", "source": { "type": "image", "image": "ghcr.io/umami-software/umami:postgresql-latest" }, "container_port": 3000, "memory_limit": "512m"}Every field is described in Applications.
Deployments
POST
/api/v1/applications/{id}/deploymentsDeploy. Optional
ref: a branch, tag or commit, or an image reference.GET
/api/v1/applications/{id}/deploymentsDeployments of one application.
GET
/api/v1/deploymentsRecent deployments across all applications.
GET
/api/v1/deployments/{id}Deployment detail with spec, events and output.
POST
/api/v1/deployments/{id}/rollbackRe-release this deployment's image (or kept release, for systemd and Compose apps).
Logs
POST
/api/v1/applications/{id}/logsRequest container logs:
lines (1–1000), optional since to follow.GET
/api/v1/applications/{id}/logs/{job_id}Read the result: lines, container state, start time and restarts.
GET
/api/v1/applications/{id}/requests?range=Traffic through the app's domains:
1h, 24h or 7d.Scheduled jobs
GET
/api/v1/applications/{id}/cronThe app's scheduled jobs.
POST
/api/v1/applications/{id}/cronname, schedule (cron or @daily…), timezone, command, timeout_minutes, enabled.PATCH
/api/v1/applications/{id}/cron/{cron_id}Change any of those.
POST
/api/v1/applications/{id}/cron/{cron_id}/runRun now; returns the job.
DELETE
/api/v1/applications/{id}/cron/{cron_id}Delete it.
POST
/api/v1/applications/{id}/runA one-off command:
command, timeout_minutes. Returns the job.Usage, errors and moves
GET
/api/v1/applications/{id}/usage?range=CPU and memory over
1h, 24h or 7d.GET
/api/v1/applications/{id}/errorsErrors grouped by cause, most recent first.
POST
/api/v1/applications/{id}/errors/{group_id}/ignore?ignored=Stop (or start again) counting an error.
GET
/api/v1/applications/{id}/moveWhat a move would copy, and the latest move.
POST
/api/v1/applications/{id}/moveserver_id, include_files. Starts a move.POST
/api/v1/applications/{id}/move/finishOnce DNS points at the new server: remove the old copy.
POST
/api/v1/applications/{id}/move/cancelPut the app back on its old server.
GitHub
GET
/api/v1/github/statusWhether an app is connected, and its installations.
POST
/api/v1/github/manifestStart the app manifest flow.
POST
/api/v1/github/manifest/completeFinish it with the code GitHub returned.
POST
/api/v1/github/installationsRecord an installation after GitHub redirects back.
GET
/api/v1/github/repositoriesRepositories the app can access.
GET
/api/v1/github/repositories/{installation_id}/{repo_id}/branchesBranches of a repository.
DELETE
/api/v1/github/appDisconnect the GitHub App.