Asynchronous event types
The structure of asynchronous responses and events is the same as for a synchronous message, but you send the event to the Alexa event gateway. You send the following events to the event gateway:- Discovery events, such as
AddOrUpdateReportandDeleteReport. - Asynchronous responses and error responses.
Alexa.ChangeReportevent. To send change reports, you configure properties that your smart home add-on proactively reports during discovery. For details, see Understand State and Change Reporting.- Events defined by a specific capability interface.
For details, see the documentation for each interface that you support in your add-on.
Gateway endpoints
When you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home add-on or video skill. The following list shows the Alexa regions and associated endpoints.- North America:
https://api.amazonalexa.com/v3/events - Europe and India:
https://api.eu.amazonalexa.com/v3/events - Far East and Australia:
https://api.fe.amazonalexa.com/v3/events
Asynchronous event definition
You communicate asynchronous responses and events to Alexa by sending anHTTP POST message to the Alexa event gateway.
API endpoint
Set the endpoint to the gateway endpoint in the region where the customer is located.Authentication
To authenticate the add-on with the Alexa gateway, use the bearer token authentication in the HTTP header. Include the stored access token for the customer. Make sure that you refresh access tokens before they expire.Request
Include the access token in the request header and in the body of the message.Request header example
Request header parameters
| Parameter | Description | Type | Required |
|---|---|---|---|
gateway-endpoint | Set to the gateway endpoint in the region where the customer is located. | String | Yes |
access-token-from-Amazon | Access token for the customer. For details about the process to obtain access tokens for a customer, see Request Access to the Alexa Event Gateway. | String | Yes |
Request body example
The following example shows an asynchronous response to aSetColorTemperature directive.
Request body parameters
For the definition of the request body, see the documentation for the specific event type. In theendpoint object include the scope property with type = BearerToken and token set to the access_token that you received from LWA.
Response
On success, Alexa sends202 Accepted to indicate that the event was accepted for further logical validation and processing. If the request isn’t accepted, Alexa sends the appropriate HTTP status code. For example, if you send a request with an expired token, Alexa sends an HTTP 401 Unauthorized response.
Response body parameters
This response has no body.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.| Status | Payload code | Description |
|---|---|---|
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 Request | INVALID_REQUEST_EXCEPTION | Message 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 Unauthorized | INVALID_ACCESS_TOKEN_EXCEPTION | Message 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 Forbidden | SKILL_DISABLED_EXCEPTION | The customer disabled your add-on. Stop sending events for the customer and delete any stored tokens in your system. |
403 Forbidden | SKILL_NEVER_ENABLED_EXCEPTION | You’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 Forbidden | INSUFFICIENT_PERMISSION_EXCEPTION | Token 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 Found | ACCOUNT_NOT_FOUND_EXCEPTION | Account 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 Found | SKILL_NOT_FOUND_EXCEPTION | Skill 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 Large | REQUEST_ENTITY_TOO_LARGE_EXCEPTION | Size 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 Requests | THROTTLING_EXCEPTION | Number 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 Error | INTERNAL_SERVICE_EXCEPTION | Error 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 Unavailable | SERVICE_UNAVAILABLE_EXCEPTION | Alexa 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. |

