The HostStack REST API
Every button in the dashboard is a single HTTP call. Authenticate with a Bearer token, hit the endpoints below in any language, or use the typed TypeScript SDK when you prefer autocompletion over curl.
Authentication
Authenticate API requests with a Bearer token. Generate keys in Settings > API Keys.
Authorization: Bearer hs_live_your_api_keyBase URL & Errors
All endpoints use JSON. Errors return { "error": "message" } with the appropriate HTTP status code.
https://hoststack.dev/apiSensitive endpoints (auth, deploy triggers, credential rotations, deploy hooks) are individually rate-limited. Limited responses return HTTP 429 with X-RateLimit-Limit, X-RateLimit-Remaining, and Retry-After headers.
Endpoints
Auth
/api/auth/register/api/auth/login/api/auth/logout/api/auth/forgot-password/api/auth/reset-passwordProjects
/api/projects/:teamId/api/projects/:teamId/:projectId/api/projects/:teamId/api/projects/:teamId/:projectId/api/projects/:teamId/:projectIdServices
/api/services/:teamId/api/services/:teamId/:serviceId/api/services/:teamId/api/services/:teamId/:serviceId/api/services/:teamId/:serviceId/api/services/:teamId/:serviceId/suspend/api/services/:teamId/:serviceId/resumeDeploys
/api/services/:teamId/:serviceId/deploys/api/services/:teamId/:serviceId/deploys/api/services/:teamId/:serviceId/deploys/:deployId/api/services/:teamId/:serviceId/deploys/:deployId/logs/api/services/:teamId/:serviceId/deploys/:deployId/cancel/api/services/:teamId/:serviceId/deploys/:deployId/rollback/api/services/:teamId/:serviceId/deploys/:deployId/promoteDatabases
/api/databases/:teamId/api/databases/:teamId/:databaseId/api/databases/:teamId/api/databases/:teamId/:databaseId/api/databases/:teamId/:databaseId/api/databases/:teamId/:databaseId/credentials/api/databases/:teamId/:databaseId/reset-passwordDomains
/api/domains/:teamId/api/domains/:teamId/api/domains/:teamId/:domainId/api/domains/:teamId/:domainId/api/domains/:teamId/:domainId/verifyEnv Vars
/api/services/:teamId/:serviceId/env/api/services/:teamId/:serviceId/env/api/services/:teamId/:serviceId/env/:envVarId/api/services/:teamId/:serviceId/env/:envVarId/api/services/:teamId/:serviceId/env/bulkVolumes
/api/services/:teamId/:serviceId/volumes/api/services/:teamId/:serviceId/volumes/api/services/:teamId/:serviceId/volumes/:volumeId/api/services/:teamId/:serviceId/volumes/:volumeIdEnvironments
/api/projects/:teamId/:projectId/environments/api/projects/:teamId/:projectId/environments/api/environments/:teamId/:environmentId/api/environments/:teamId/:environmentIdCron
/api/services/:teamId/:serviceId/cron-executions/api/services/:teamId/:serviceId/cron-executions/:executionId/api/services/:teamId/:serviceId/cron-executions/triggerWorkflows
/api/projects/:teamId/:projectId/workflows/api/projects/:teamId/:projectId/workflows/api/teams/:teamId/workflows/:workflowId/api/teams/:teamId/workflows/:workflowId/api/teams/:teamId/workflows/:workflowId/api/teams/:teamId/workflows/:workflowId/trigger/api/teams/:teamId/workflows/:workflowId/runs/api/teams/:teamId/workflows/runs/:runId/api/teams/:teamId/workflows/runs/:runId/logs/api/teams/:teamId/workflows/runs/:runId/cancel/api/teams/:teamId/workflows/runs/:runId/retryNotifications
/api/notifications/:teamId/channels/api/notifications/:teamId/channels/api/notifications/:teamId/channels/:channelId/api/notifications/:teamId/channels/:channelId/api/notifications/:teamId/channels/:channelId/testAlerts
/api/alerts/:teamIdDNS
/api/dns-zones/:teamId/api/dns-zones/:teamId/api/dns-zones/:teamId/:publicId/api/dns-zones/:teamId/:publicId/api/dns-zones/:teamId/:publicId/records/api/dns-zones/:teamId/:publicId/records/api/dns-zones/:teamId/:publicId/records/:recordPublicId/api/dns-zones/:teamId/:publicId/records/:recordPublicIdActivity Log
/api/activity-log/:teamIdBilling
/api/billing/:teamId/subscription/api/billing/:teamId/usage/api/billing/:teamId/checkout/api/billing/:teamId/portalExample request
curl -X POST https://hoststack.dev/api/services/:teamId/:serviceId/deploys \
-H "Authorization: Bearer hs_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"branch": "main"}'{
"deploy": {
"id": 42,
"publicId": "dpl_abc123",
"status": "building",
"trigger": "api",
"createdAt": "2026-04-07T12:00:00.000Z"
}
}Prefer a typed client? Use the TypeScript SDK for full autocompletion and error handling.