Alexa.EndpointHealth interface in your Alexa add-on so that you can report the detected health of devices to Alexa. When a device encounters an issue, you report the reason so that Alexa can inform the customer of device degradation, such as connectivity failure due to Wi-Fi password change.
You implement the Alexa.EndpointHealth interface with other interfaces that provide functionality for your device. For example, if your device is a thermostat, you implement Alexa.ThermostatController so the user can control the thermostat, Alexa.TemperatureSensor so the thermostat can sense and report temperature, and Alexa.EndpointHealth so that you can report the connectivity status of the thermostat.
Although Alexa.EndpointHealth is optional for most device types, Amazon recommends that you always implement the interface to provide the best experience for customers. For sensor devices, such as motion sensors and temperature sensors, Alexa.EndpointHealth is a required capability.
For the list of languages that the Alexa.EndpointHealth interface supports, see List of Alexa Interfaces and Supported Languages. For the definitions of the message properties, see Alexa Interface Message and Property Reference.
Utterances
TheAlexa.EndpointHealth interface doesn’t have any user utterances. Instead, when the user tries to control their device, Alexa responds with information about the health of the device. For example, when an add-on reports that a plug is unreachable and the user tries to turn on the plug, Alexa responds with
Reportable properties
TheAlexa.EndpointHealth interface includes the following reportable property.
Connectivity property
Theconnectivity property represents the connectivity status of a device. connectivity is a required property.
When you report UNREACHABLE, Alexa responds to a request to control the device with a response similar to the following examples. The connectivity failure reason isn’t given in the response.
- Arabic
- Dutch
- English (All)
- French (All)
- German
- Hindi
- Italian
- Japanese
- Portuguese
- Spanish (All)
connectivity property is an object that contains the following fields.
| Field | Description | Type |
|---|---|---|
value | The connectivity status of the device. Valid values: OK, UNREACHABLE. | String |
reason | (Optional) When the device is unreachable, this property gives the failure reason. For valid values, see connectivity reasons. | String |
Connectivity reason values
The following table shows the valid values, descriptions, and possible resolutions for each connectivity failurereason.
| Value | Description |
|---|---|
WIFI_BAD_PASSWORD | The device failed to connect to Wi-Fi due to a bad password. |
WIFI_AP_NOT_FOUND | The device can’t find the Wi-Fi access point. The device might be too far from the router or near another device that causes interference, such as a baby monitor, microwave, or other electronic device. |
WIFI_ROUTER_UNREACHABLE | The device can’t send data to the router, or receive data from the router. The internet might be down or the router might need a reboot. |
WIFI_AP_CHANNEL_QUALITY_LOW | The device can connect to the access point, but the channel quality is low. |
INTERNET_UNREACHABLE | The device can connect to the access point, but doesn’t have internet access. The router or device might need a reboot, or the internet might be down. |
CAPTIVE_PORTAL_CHECK_FAILED | The device is trying to connect to a captive portal. The interface doesn’t support captive portals. Airports and hotels commonly use captive portal networks. These networks ask the user to agree to specific terms before connecting to the network. The customer must select a different network. |
UNKNOWN | The reason for connectivity failure isn’t known. |
Discovery
You describe endpoints that support theAlexa.EndpointHealth interface by using the standard discovery mechanism described in Alexa.Discovery.
Set retrievable to true for all the properties that you report when Alexa sends your add-on a state report request. Set proactivelyReported to true for properties that you proactively report to Alexa in a change report. When you implement Alexa.EndpointHealth, set retrievable to true and proactivelyReported to true for the properties that you support.
Discover response example
The following example shows aDiscover.Response message for an endpoint that supports the Alexa.EndpointHealth and Alexa.LockController interfaces.
Directives
TheAlexa.EndpointHealth interface doesn’t define any directives itself. When you implement Alexa.EndpointHealth, you must include the connectivity property when you respond to directives defined by other interfaces.
Directive response event example
In the following examples, a device supports theAlexa.PowerController and Alexa.EndpointHealth interfaces, and is sending an Alexa.Response to the Alexa.PowerController.TurnOn directive.
Endpoint healthy example
Endpoint healthy example
Endpoint unreachable example
Endpoint unreachable example
State reporting
Alexa sends anAlexa.ReportState directive to request information about the state of an endpoint. When Alexa sends an Alexa.ReportState directive, you send an Alexa.StateReport event in response. The response contains the current state of all retrievable properties in the context object. You identify your retrievable properties in your discovery response. For details about state reports, see Understand State and Change Reporting.
When you implement Alexa.EndpointHealth, include the connectivity property in your Alexa.StateReport.
StateReport response example
The following example shows anAlexa.StateReport for an endpoint that supports the Alexa.EndpointHealth, Alexa.ThermostatController, and Alexa.TemperatureSensor interfaces.
State reporting example
State reporting example
Change reporting
To report changes proactively in the state of an endpoint, you send anAlexa.ChangeReport event. You identify the properties that you report proactively in your discovery response. For details about change reports, see Understand State and Change Reporting.
When you implement Alexa.EndpointHealth, include the connectivity property in your Alexa.ChangeReport. If the value of the connectivity property has changed, put it in the payload field. If the value of the connectivity property hasn’t changed, put it in the context field.
Report unchanged device health
The following example shows anAlexa.ChangeReport for an endpoint that supports the Alexa.EndpointHealth and Alexa.LockController interfaces. In this change report, only the lockState property value changed.
Endpoint unchanged example
Endpoint unchanged example
Report changed device health
The following example shows anAlexa.ChangeReport for an endpoint that supports the Alexa.EndpointHealth and Alexa.LockController interfaces. In this change report, the value of the connectivity property changed.
Endpoint changed example
Endpoint changed example

