Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Get started
Connect with Matter
Alexa Connect Kit
Add-ons
Certify
Resources
Skip to main content
Implement the Alexa.SimpleEventSource interface to model stateless events, such as a button press on a remote or an occupant entering a room. Users can connect the events to Alexa routines. For example, after the user presses a button on their remote switch or smart button, Alexa triggers a routine to dim their smart bulbs to 25 percent and close the blinds. The Alexa.SimpleEventSource interface is a generic controller interface. For the list of languages that the Alexa.SimpleEventSource interface supports, see List of Alexa Interfaces and Supported Languages. For the definitions of the Alexa message properties, see Alexa Interface Message and Property Reference.

Utterances

The Alexa.SimpleEventSource interface doesn’t have any user utterances. The customer interacts with your device, and the associated event triggers an Alexa routine.

Reportable properties

The Alexa.SimpleEventSource interface doesn’t define any reportable properties.

Discovery

You describe endpoints that support Alexa.SimpleEventSource by using the standard discovery mechanism described in Alexa.Discovery. Set the display category to the one most appropriate for your device, such as REMOTE. For the full list of display categories, see display categories. To let Alexa know the health of your device, also implement the Alexa.EndpointHealth interface.

Capabilities array

An endpoint can support multiple instances of Alexa.SimpleEventSource, so you must always include the instance ID in your events and responses. Define an instance for each interface and schema that the same endpoint supports in the capabilities object. In addition to the usual discovery response fields, for each Alexa.SimpleEventSource entry in the capabilities array, include the following fields.
PropertyDescriptionTypeRequired
instanceUnique ID for the instance, preferably a version 4 UUID.
The ID must be unique across instances and endpoints.
StringYes
capabilityResourcesFriendly names that users can use to refer to the button or gestures supported by your device. Alexa displays these names in the Alexa app and customers can use the friendly name to identify entities on your device that can trigger events.
You can use assets from the global Alexa catalog or define your own friendly names and localized text.
For REMOTE devices, use the instance assets friendly names.
CapabilityResources objectYes
configuration.supportedEventsA list of events that this device supports. You must define at least one event.Array of objectsYes
configuration.supportedEvents[*].idUnique identifier used to refer to this event.StringYes
configuration.supportedEvents[*].friendlyNamesFriendly names for the event. Alexa displays these names in the Alexa app and customers can use the friendly name to trigger an Alexa routine.
The first friendly name in the array must be unique per instance of the capability. You can use assets from the global Alexa catalog or define your own friendly names as text.
For REMOTE devices, use the event assets friendly names.
Array of Label objectsYes

Assets for the REMOTE display category

Alexa defines instance and event friendly name assets for the REMOTE display category in the global Alexa catalog. If you use another display category, define friendly names that best describe the instance and events for your device.

Instance friendly name assets

For REMOTE devices, you can use the following localized, friendly name assets to identify entities on your device that can trigger events, such as the buttons on a remote or an occupant entering a room. Or, you can define your own friendly names.
Asset identifierSupported friendly names
Alexa.Button.OffButtonOff button
Alexa.Button.OnButtonOn button
Alexa.Button.BrightenButtonBrighten button
Alexa.Button.DimButtonDim button
Alexa.Button.MainButtonMain button
Alexa.Button.TopButtonTop button
Alexa.Button.BottomButtonBottom button
Alexa.Button.CenterButtonCenter button
Alexa.Button.MiddleButtonMiddle button
Alexa.Button.UpButtonUp button
Alexa.Button.DownButtonDown button
Alexa.Button.LeftButtonLeft button
Alexa.Button.RightButtonRight button
Alexa.Button.FirstButtonFirst button
Alexa.Button.SecondButtonSecond button
Alexa.Button.ThirdButtonThird button
Alexa.Button.FourthButtonFourth button
Alexa.Button.FifthButtonFifth button
Alexa.Button.SixthButtonSixth button
Alexa.Button.SeventhButtonSeventh button
Alexa.Button.EighthButtonEighth button

Event friendly name assets

For REMOTE devices, you can use the following localized, friendly name assets to identify actions that trigger an event. For example, a button might support both a single push or a double push. Or, you can define your own friendly names.
Asset identifierSupported friendly names
Alexa.Button.DoublePressDouble press
Alexa.Button.DoublePushDouble push
Alexa.Button.LongPressLong press
Alexa.Button.LongPushLong push
Alexa.Button.SinglePressSingle press
Alexa.Button.SinglePushSingle push
Alexa.Gesture.DoubleClickDouble click
Alexa.Gestures.DoubleTapDouble tap
Alexa.Gesture.SingleClickSingle click
Alexa.Gesture.SwipeDownSwipe down
Alexa.Gesture.SwipeLeftSwipe left
Alexa.Gesture.SwipeRightSwipe right
Alexa.Gesture.SwipeUpSwipe up
Alexa.Gesture.TapTap

Discovery response example

The following example shows a Discover.Response message for a remote switch that supports the Alexa.SimpleEventSource interface. The switch has four buttons with one event per button.

Directives and events

The Alexa.SimpleEventSource interface doesn’t define any directives, but does define an event.

SimpleEvent event

Send a SimpleEvent message to the Alexa event gateway to notify Alexa proactively that the user triggered the specified event on the specified event source. For details, see Send Events to the Event Gateway.

SimpleEvent example

The following example shows a SimpleEvent to notify Alexa that an event, identified as Button.SinglePush fired on the specified instance.

SimpleEvent payload

The following table shows the payload details for the SimpleEvent event.
PropertyDescriptionTypeRequired
idIdentifies the event that fired. You defined the event id in your discovery response.StringNo
timestampTime the endpoint detected the event.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DDThh:mm:ss.SSSZ
StringYes

SimpleEvent response

If Alexa handles the event successfully, your add-on receives HTTP status code 202 Success from the Alexa event gateway. On error, Alexa sends the appropriate HTTP status code.

HTTP status codes

The following table shows the HTTP status code values that your add-on might receive from the Alexa event gateway. If you receive an error, the response body contains the error code and description. Use these fields for logging only.
StatusPayload codeDescription
202 Accepted—Request is authorized and the message is a syntactically valid event. The gateway accepted the event for further logical validation and processing.
400 Bad RequestINVALID_REQUEST_EXCEPTIONMessage is not valid due to missing fields, incorrect values, or malformed JSON. Check your messages against the documentation to verify that your message contains all the required fields.
401 UnauthorizedINVALID_ACCESS_TOKEN_EXCEPTIONMessage didn’t include the authorization token or the token is expired, malformed, or not valid. Refresh your token and retry the request. If a user disables your add-on, that also invalidates the access token.
403 ForbiddenSKILL_DISABLED_EXCEPTIONThe customer disabled your add-on. Stop sending events for the customer and delete any stored tokens in your system.
403 ForbiddenSKILL_NEVER_ENABLED_EXCEPTIONYou’re not allowed access to the event gateway. Make sure that you’re sending the events to the correct regional endpoint. For example, send events in North America to the North American endpoint. Otherwise, the customer never enabled your add-on.
403 ForbiddenINSUFFICIENT_PERMISSION_EXCEPTIONToken doesn’t have the required permissions. Make sure that the add-on has permission to send Alexa events. For details, see Request Access to the Alexa Event Gateway.
404 Not FoundACCOUNT_NOT_FOUND_EXCEPTIONAccount record associated with this directed identifier doesn’t exist or has expired. This error can occur if the event was sent too late or with directed identifier that’s not valid. Verify that the directed identifier and authorization code are correct.
404 Not FoundSKILL_NOT_FOUND_EXCEPTIONSkill ID associated with this token wasn’t found. This error occurs when user’s access token was generated when the add-on was in different stage, such as certification. Try disabling and re-enabling the add-on for this user.
413 Payload Too LargeREQUEST_ENTITY_TOO_LARGE_EXCEPTIONSize of the event payload is too large. The maximum number of endpoints allowed in a request is 300. Send your message with smaller payloads.
429 Too Many RequestsTHROTTLING_EXCEPTIONNumber of requests is too high. Resend the message up to three times, with at least a one-second interval between each send attempt.
500 Internal Server ErrorINTERNAL_SERVICE_EXCEPTIONError occurred with Alexa, and the message wasn’t processed. Resend the message up to three times, with at least a one-second interval between each send attempt. If problems persist, contact Amazon Support.
503 Service UnavailableSERVICE_UNAVAILABLE_EXCEPTIONAlexa couldn’t accept the message. Resend the message up to three times, with at least a one-second interval between each attempt. If the problem persists, contact Amazon Support.
Example error response body
The following example shows an error response.

Change reporting

You send a ChangeReport event to report changes proactively in the state of an endpoint. You identify the properties that you proactively report in your discovery response. For details about change reports, see Understand State and Change Reporting.
Last modified on September 30, 2026