Home Assistant Core endpoints
Supervisor API endpoints to control Home Assistant Core, and the proxy your app uses to reach the Core REST and WebSocket API.
There are two kinds of endpoints under /core. The first kind controls the Home Assistant Core container: start, stop, update, and its settings. The second kind is a proxy to the API of Home Assistant itself, so your app can read states and call actions without knowing a password or port.
Most of these endpoints are also available under /homeassistant instead of /core, the older name. The proxy there has no DELETE. Use /core.
| Method | Path | Description |
|---|---|---|
GET |
/core/info |
Information about Home Assistant Core |
POST |
/core/options |
Change the Core settings |
POST |
/core/update |
Update Home Assistant Core |
POST |
/core/start |
Start Home Assistant Core |
POST |
/core/stop |
Stop Home Assistant Core |
POST |
/core/restart |
Restart Home Assistant Core |
POST |
/core/rebuild |
Rebuild the Core container |
POST |
/core/check |
Check the configuration |
GET |
/core/stats |
Resource usage of Core |
GET |
/core/logs |
Logs of Core, and the other log endpoints |
GET, POST, DELETE |
/core/api/<path> |
Proxy to the Home Assistant REST API |
GET |
/core/api/stream |
Proxy to the event stream |
GET |
/core/websocket |
Proxy to the Home Assistant WebSocket API |
To use these, your app needs hassio_api: true and the homeassistant, manager, or admin role. GET /core/info works with any role.
| Key | Type | Description |
|---|---|---|
version |
string | Installed version |
version_latest |
string | Latest available version |
update_available |
boolean | true if an update is available |
machine |
string | Machine type, like generic-x86-64 or raspberrypi5-64 |
ip_address |
string | IP address of Core on the internal network |
arch |
string | Architecture |
image |
string | Container image |
boot |
boolean | true if Core starts at boot |
port |
integer | Port of the Home Assistant web server |
ssl |
boolean | true if the web server uses SSL |
watchdog |
boolean | true if the watchdog is on |
audio_input |
string or null | Selected audio input device |
audio_output |
string or null | Selected audio output device |
backups_exclude_database |
boolean | true if backups leave the database out by default |
duplicate_log_file |
boolean | true if Core also writes its log to a file |
{
"version": "2026.10.1",
"version_latest": "2026.10.1",
"update_available": false,
"machine": "generic-x86-64",
"ip_address": "172.30.32.1",
"arch": "amd64",
"image": "ghcr.io/home-assistant/generic-x86-64-homeassistant",
"boot": true,
"port": 8123,
"ssl": false,
"watchdog": true,
"audio_input": null,
"audio_output": null,
"backups_exclude_database": false,
"duplicate_log_file": false
}Send only the keys you want to change.
| Key | Type | Required | Description |
|---|---|---|---|
boot |
boolean | No | Start Core at boot |
image |
string or null | No | Use another container image. null goes back to the default |
port |
integer | No | Port of the Home Assistant web server |
ssl |
boolean | No | The web server uses SSL |
watchdog |
boolean | No | Turn the watchdog on or off |
refresh_token |
string or null | No | Refresh token the Supervisor uses for Core |
audio_input |
string or null | No | Audio input device |
audio_output |
string or null | No | Audio output device |
backups_exclude_database |
boolean | No | Leave the database out of backups by default |
duplicate_log_file |
boolean | No | Also write the Core log to a file |
Updates Home Assistant Core. Fails while the Supervisor is still starting up or restoring a backup, and while Core runs a database migration.
| Key | Type | Required | Description |
|---|---|---|---|
version |
string | No | Version to install. Default is the latest version |
backup |
boolean | No | Make a backup before the update. Default false |
background |
boolean | No | Return a job_id right away instead of waiting. Default false |
Starts Home Assistant Core. Like restart and rebuild, it fails while the Supervisor is still starting up or restoring a backup.
Stops Home Assistant Core.
| Key | Type | Required | Description |
|---|---|---|---|
force |
boolean | No | Stop even while Core runs a database migration. Default false |
Restarts Home Assistant Core.
| Key | Type | Required | Description |
|---|---|---|---|
safe_mode |
boolean | No | Start in safe mode, with custom integrations turned off. Default false |
force |
boolean | No | Restart even while Core runs a database migration. Default false |
Removes the Core container and creates it again from the same image. Takes the same keys as POST /core/restart.
Checks the Home Assistant configuration. Returns success when it is valid, and an error with the output of the check when it is not.
Returns the resource usage of Home Assistant Core as a stats model. Add the one_shot query parameter to get a single quick sample.
The proxy forwards your requests to the REST API and WebSocket API of Home Assistant Core, using your app's token. Your app needs homeassistant_api: true in its configuration. It does not need hassio_api or a role. See talk to Home Assistant for how to use it.
Paths that start with hassio are blocked through the proxy.
Also POST and DELETE. Forwards the request to /api/<path> on Home Assistant Core, and returns the response of Core as it is. The proxy does not wrap it in the Supervisor envelope.
curl -sSL \
-H "Authorization: Bearer ${SUPERVISOR_TOKEN}" \
http://supervisor/core/api/states/sun.sunForwards the server-sent event stream of Home Assistant Core.
Opens a WebSocket connection to Home Assistant Core. /core/api/websocket works too. The handshake is the normal Home Assistant handshake, with your app's token as the access token:
{
"type": "auth",
"access_token": "<your SUPERVISOR_TOKEN>"
}After auth_ok, you use the WebSocket API as usual. Commands that start with supervisor/ or hassio/ are refused.