Skip to content
REST API

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_key

Base URL & Errors

All endpoints use JSON. Errors return { "error": "message" } with the appropriate HTTP status code.

https://hoststack.dev/api
Rate Limit

Sensitive 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

Public
POST
/api/auth/register
POST
/api/auth/login
POST
/api/auth/logout
POST
/api/auth/forgot-password
POST
/api/auth/reset-password

Projects

Bearer
GET
/api/projects/:teamId
GET
/api/projects/:teamId/:projectId
POST
/api/projects/:teamId
PATCH
/api/projects/:teamId/:projectId
DELETE
/api/projects/:teamId/:projectId

Services

Bearer
GET
/api/services/:teamId
GET
/api/services/:teamId/:serviceId
POST
/api/services/:teamId
PATCH
/api/services/:teamId/:serviceId
DELETE
/api/services/:teamId/:serviceId
POST
/api/services/:teamId/:serviceId/suspend
POST
/api/services/:teamId/:serviceId/resume

Deploys

Bearer
GET
/api/services/:teamId/:serviceId/deploys
POST
/api/services/:teamId/:serviceId/deploys
GET
/api/services/:teamId/:serviceId/deploys/:deployId
GET
/api/services/:teamId/:serviceId/deploys/:deployId/logs
POST
/api/services/:teamId/:serviceId/deploys/:deployId/cancel
POST
/api/services/:teamId/:serviceId/deploys/:deployId/rollback
POST
/api/services/:teamId/:serviceId/deploys/:deployId/promote

Databases

Bearer
GET
/api/databases/:teamId
GET
/api/databases/:teamId/:databaseId
POST
/api/databases/:teamId
PATCH
/api/databases/:teamId/:databaseId
DELETE
/api/databases/:teamId/:databaseId
GET
/api/databases/:teamId/:databaseId/credentials
POST
/api/databases/:teamId/:databaseId/reset-password

Domains

Bearer
GET
/api/domains/:teamId
POST
/api/domains/:teamId
PATCH
/api/domains/:teamId/:domainId
DELETE
/api/domains/:teamId/:domainId
POST
/api/domains/:teamId/:domainId/verify

Env Vars

Bearer
GET
/api/services/:teamId/:serviceId/env
POST
/api/services/:teamId/:serviceId/env
PATCH
/api/services/:teamId/:serviceId/env/:envVarId
DELETE
/api/services/:teamId/:serviceId/env/:envVarId
PUT
/api/services/:teamId/:serviceId/env/bulk

Volumes

Bearer
GET
/api/services/:teamId/:serviceId/volumes
POST
/api/services/:teamId/:serviceId/volumes
PATCH
/api/services/:teamId/:serviceId/volumes/:volumeId
DELETE
/api/services/:teamId/:serviceId/volumes/:volumeId

Environments

Bearer
GET
/api/projects/:teamId/:projectId/environments
POST
/api/projects/:teamId/:projectId/environments
PATCH
/api/environments/:teamId/:environmentId
DELETE
/api/environments/:teamId/:environmentId

Cron

Bearer
GET
/api/services/:teamId/:serviceId/cron-executions
GET
/api/services/:teamId/:serviceId/cron-executions/:executionId
POST
/api/services/:teamId/:serviceId/cron-executions/trigger

Workflows

Bearer
GET
/api/projects/:teamId/:projectId/workflows
POST
/api/projects/:teamId/:projectId/workflows
GET
/api/teams/:teamId/workflows/:workflowId
PATCH
/api/teams/:teamId/workflows/:workflowId
DELETE
/api/teams/:teamId/workflows/:workflowId
POST
/api/teams/:teamId/workflows/:workflowId/trigger
GET
/api/teams/:teamId/workflows/:workflowId/runs
GET
/api/teams/:teamId/workflows/runs/:runId
GET
/api/teams/:teamId/workflows/runs/:runId/logs
POST
/api/teams/:teamId/workflows/runs/:runId/cancel
POST
/api/teams/:teamId/workflows/runs/:runId/retry

Notifications

Bearer
GET
/api/notifications/:teamId/channels
POST
/api/notifications/:teamId/channels
PATCH
/api/notifications/:teamId/channels/:channelId
DELETE
/api/notifications/:teamId/channels/:channelId
POST
/api/notifications/:teamId/channels/:channelId/test

Alerts

Bearer
GET
/api/alerts/:teamId

DNS

Bearer
GET
/api/dns-zones/:teamId
POST
/api/dns-zones/:teamId
GET
/api/dns-zones/:teamId/:publicId
DELETE
/api/dns-zones/:teamId/:publicId
GET
/api/dns-zones/:teamId/:publicId/records
POST
/api/dns-zones/:teamId/:publicId/records
PATCH
/api/dns-zones/:teamId/:publicId/records/:recordPublicId
DELETE
/api/dns-zones/:teamId/:publicId/records/:recordPublicId

Activity Log

Bearer
GET
/api/activity-log/:teamId

Billing

Session
GET
/api/billing/:teamId/subscription
GET
/api/billing/:teamId/usage
POST
/api/billing/:teamId/checkout
POST
/api/billing/:teamId/portal

Example request

bash
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"}'
Response (201 Created)
{
  "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.

Essential cookies only — for login sessions. No tracking. Details