Everything except /health, /webhook/{slug} and a shareable /runs/{id}
needs a session cookie (UI) or Authorization: Bearer <token> (CLI). Get a
token by posting JSON to /api/v1/login.
Routes below match the registrations in internal/api/server.go. Form-POST
aliases that mirror PATCH / DELETE for the HTML UI are omitted.
| Method |
Path |
Purpose |
POST |
/api/v1/setup |
First-run wizard |
POST |
/api/v1/login |
Returns { token } |
POST |
/api/v1/logout |
End session |
| Method |
Path |
Purpose |
GET |
/api/v1/settings |
Read settings row |
PATCH |
/api/v1/settings |
Update settings |
POST |
/api/v1/password |
Change admin password |
| Method |
Path |
Purpose |
GET |
/api/v1/coolify |
List Coolify instances |
POST |
/api/v1/coolify |
Create ({ name, base_url, api_token }) |
PATCH |
/api/v1/coolify/{id} |
Update instance |
POST |
/api/v1/coolify/{id}/test |
Probe teams/current + servers |
GET |
/api/v1/coolify/{id}/servers |
Server inventory |
GET |
/api/v1/coolify/{id}/github-apps |
Coolify’s deploy connectors |
GET |
/api/v1/coolify/{id}/repos |
Connector repositories (picker source) |
POST |
/api/v1/coolify/{id}/install-worker |
Compose app (instant_deploy: false) |
DELETE |
/api/v1/coolify/{id} |
Remove instance |
| Method |
Path |
Purpose |
GET |
/api/v1/github-apps |
List Apps |
POST |
/api/v1/github-apps |
Create ({ name, slug, app_id, pem, webhook_secret }) |
PATCH |
/api/v1/github-apps/{id} |
Update App |
POST |
/api/v1/github-apps/{id}/test |
App JWT + installations |
GET |
/api/v1/github-apps/{id}/repos |
Installations + repositories |
DELETE |
/api/v1/github-apps/{id} |
Remove App |
| Method |
Path |
Purpose |
GET |
/api/v1/bindings |
List bindings |
PUT |
/api/v1/bindings |
Upsert one repo binding |
POST |
/api/v1/bindings/bulk |
Picker checkboxes |
POST |
/api/v1/bindings/{id}/toggle |
Enable / disable |
DELETE |
/api/v1/bindings/{id} |
Remove binding |
| Method |
Path |
Purpose |
GET |
/api/v1/jobs |
List jobs |
GET |
/api/v1/jobs/{id} |
Job detail |
GET |
/api/v1/jobs/{id}/logs |
Full log (session, or shareable opt-in) |
POST |
/api/v1/jobs/{id}/rerun |
New job, new Check Run |
POST |
/api/v1/jobs/{id}/cancel |
Cancel a running job |
| Method |
Path |
Purpose |
POST |
/webhook/{slug} |
GitHub (HMAC verified) |
GET |
/runs/{id} |
Log page (session, or shareable opt-in) |
GET |
/health |
Liveness; 503 if SQLite is unreadable |
Session cookies are HttpOnly, Secure behind HTTPS, and browser writes require
a CSRF token. Bearer callers carry no ambient cookie and so skip CSRF. See
Security model.