All Halite API endpoints live under theDocumentation Index
Fetch the complete documentation index at: https://www.halite-app.com/llms.txt
Use this file to discover all available pages before exploring further.
/api path. Authentication uses a signed session cookie — there are no API keys or tokens. You log in once, receive a cookie, and include it with every subsequent request.
For background on how sessions are managed, see Authentication & Sessions. For the permission model that governs which endpoints you can call, see RBAC & Permissions.
Authenticate
Log in and store the cookie
Send your credentials as JSON. The response sets a signed A successful response returns a If the credentials are wrong, Halite returns
halite_session cookie, which you must save and send with every subsequent request.UserOut object:401 Unauthorized.Confirm the session
Verify the cookie is valid by calling
GET /api/auth/me. This returns the same UserOut shape.The interactive “Try it” playground in the sidebar is disabled because Halite is self-hosted — there is no public server for Mintlify to call. Use the curl examples above against your own instance instead.
Errors
The API uses a small set of status codes with consistent semantics.401 Unauthorized
The request is missing a session cookie, the cookie signature is invalid, or the session has expired. Returned by thecurrent_user dependency in deps.py in three distinct cases:
- No cookie present in the request.
- Cookie present but the signature does not verify (
codec.unsign()returnsNone). - Cookie valid but the session is not found in the database or has expired.
POST /api/auth/login to obtain a fresh cookie.
403 Forbidden
You are authenticated, but your roles do not grant theverb:resource permission required by this endpoint. Returned by the require_perm dependency in deps.py.
See RBAC & Permissions for the built-in roles, how permission globs are matched, and how to create custom roles.
503 Service Unavailable
Salt-API is either not configured (missingSALT_API_URL, SALT_API_USERNAME, or SALT_API_PASSWORD environment variables) or was unreachable when Halite tried to connect (SaltAPIUnavailable). Returned by salt_client_or_503 and wrap_salt_errors in salt/deps.py.
Despite the wording of this message, the Salt-API connection is configured on the in-app Settings page, not via environment variables.
502 Bad Gateway
Salt-API responded but returned an error status. Halite extracts the error message from the Salt/CherryPy response body (JSONdetail/message/error fields, or the first <p> in a CherryPy HTML error page) and includes it in the response. Returned by wrap_salt_errors in salt/deps.py on SaltAPIError.
Endpoint reference
The full endpoint reference is in the sidebar under the API Reference tab, grouped by area:auth
Login, logout, session check, change password
minions
List minions, fetch grains
keys
Accept, reject, and delete minion keys
jobs
Browse jobs, inspect results, kill running jobs
run
Dispatch Salt execution module functions
inventory
Drill into installed packages across the fleet
fleet
Fleet-level aggregations and targeting
templates
Saved run configurations
salt-docs
Salt module documentation lookup
users
Create and manage user accounts
roles
Create and manage RBAC roles
audit
Query the authorization audit log
settings
Runtime configuration (Salt-API connection, etc.)