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
Use the Smart Home Evaluation REST API to start evaluations and get evaluation results. Smart home evaluations verify that you implemented the Alexa smart home interfaces in your add-on correctly. If you want to run the Smart Home tests in the Alexa developer console, see Use the Smart Home Test Tool.

API endpoint

The endpoint of the Smart Home Evaluation API is https://api.amazonalexa.com.

Authentication

Each API request must have an authorization header whose value is the access token retrieved from Login with Amazon (LWA). For details, see Get an Access Token for SMAPI.

Operations

The Smart Home Evaluation API includes the following operations.
OperationHTTP method and URI
Create smart home capability evaluationPOST /v1/skills/{skillId}/smartHome/testing/capabilityEvaluations
Get smart home capability evaluation statusGET /v1/skills/{skillId}/smartHome/testing/capabilityEvaluations/{evaluationId}
Get smart home capability evaluation resultsGET /v1/skills/{skillId}/smartHome/testing/capabilityEvaluations/{evaluationId}/results?maxResults={maxResults}&offset={offset}
List smart home capability evaluationsGET /v1/skills/{skillId}/smartHome/testing/capabilityEvaluations?stage={stage}&startTimestampFrom={startTimestampFrom}&startTimestampTo={startTimestampTo}&maxResults={maxResults}&nextToken={nextToken}
List smart home capability test plansGET /v1/skills/{skillId}/smartHome/testing/capabilityTestPlans?maxResults={maxResults}&nextToken={nextToken}

Create smart home capability evaluation

Create and start a capability evaluation against the specified smart home add-on. Before you create an evaluation, make sure that you do the following test setup:
  • Enable your add-on in the Alexa app.
  • Your add-on configures account linking and you link your device account with your Alexa account successfully.
  • Alexa discovered your test device successfully and you can view your device in the Alexa app.

Request

To create an evaluation, you make a POST request to the smartHome/testing/capabilityEvaluations resource.

Request path and header example

Request path and header parameters

ParameterLocated inDescriptionTypeRequired
skillIdPathIdentifies the add-on.
Valid values: 1–255 characters.
StringYes
access tokenHeaderLWA token.StringYes
request IDHeaderUnique identifier for the request, preferably a version 4 UUID.StringYes

Request body example

Request body properties

PropertyDescriptionTypeRequired
endpointRepresents a connected device or component associated with a user’s device cloud account.ObjectYes
endpoint.endpointIdUnique identifier for the endpoint.
Valid value: Up to 256 characters. Can include letters, numbers, spaces, and the following special characters: _ - = # ; : ? @ &
StringYes
capabilityTestPlanRepresents the test plan to evaluate the add-on against.ObjectYes
capabilityTestPlan.idIdentifies the test plan.StringYes
stageIndicates the stage of the add-on.
Valid values: development, live.
StringYes

Response

A successful response returns HTTP 200 OK, along with the identifier of the evaluation to indicate that the evaluation started successfully. On error, the response returns the appropriate HTTP status code and includes a response body with an error code and human readable message.

Response body example

Response body properties

PropertyDescriptionTypeRequired
idIdentifies the evaluation.StringYes
endpointRepresents a connected device or component associated with a user’s device cloud account.ObjectYes
endpoint.endpointIdUnique identifier for the endpoint.
Valid value: Up to 256 characters. Can include letters, numbers, spaces, and the following special characters: _ - = # ; : ? @ &
StringYes
capabilityTestPlanRepresents the test plan to evaluate the add-on against.ObjectYes
capabilityTestPlan.idIdentifies the test plan.StringYes
stageIndicates the stage of the add-on.
Valid values: development, live.
StringYes

HTTP status codes

StatusDescription
200 OKResponse body contains the evaluation identifier indicating that the evaluation started.
400 Bad RequestIndicates that one or more properties in the request body aren’t valid.
The following example shows the response body with the error code and message.
401 UnauthorizedRequest didn’t include the authorization token, or the included token expired or isn’t valid. Or, you don’t have access to the resource.
403 ForbiddenIndicates that the authorization token is valid, but the requested operation isn’t allowed.
404 Not FoundRequested resource not found.
429 Too Many RequestsPermitted rate limit, specified as number of requests per unit of time, exceeded. Retry the request by using exponential back-off.
500 Server ErrorError occurred on the server. Retry the request by using exponential back-off.
503 Service UnavailableServer is down for maintenance, overloaded, or otherwise unavailable to handle the incoming request.

Get smart home capability evaluation status

Get the status of an evaluation.

Request

To get the evaluation status, you make a GET request to the smartHome/testing/capabilityEvaluations resource.

Request path and header example

Request path and header parameters

ParameterLocated inDescriptionTypeRequired
skillIdPathIdentifies the add-on.
Valid values: 1–255 characters.
StringYes
evaluationIdPathIdentifies the evaluation.
Use the ID returned from Create smart home capability evaluation.
StringYes
access tokenHeaderLWA token.StringYes
request IDHeaderUnique identifier for the request, preferably a version 4 UUID.StringYes

Request body example

The request has no body.

Request body properties

The request has no body.

Response

A successful response returns HTTP 200 OK, along with the evaluation status and metrics. On error, the response returns the appropriate HTTP status code and includes a response body with an error code and human readable message.

Response body example

The following example shows a response.

Response body properties

PropertyDescriptionType
startTimestampStart time of the evaluation.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
String
endTimestampEnd time of the evaluation.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
String
statusStatus of the evaluation.
Valid values: PASSED, FAILED, IN_PROGRESS, ERROR.
String
error(Optional) Included when an error occurs retrieving the evaluation status.Object
error.codeError code.
Valid values: CAPABILITY_NOT_SUPPORTED, DISCOVERY_FAILED, MULTIPLE_MATCHED_ENDPOINTS, MULTIPLE_MATCHED_TEST_PLANS, TEST_CASE_TIME_OUT, NO_SUCH_ENDPOINT, NO_SUCH_SKILL_STAGE, NO_SUCH_TEST_PLAN.
String
error.messageHuman-readable description of the error.String
metricsDescribes the number of test cases in the evaluation.Object
metrics.<name>Name of the test plan.Object
metrics.<name>.totalTestCasesTotal number of test cases in the test plan.Integer
metrics.<name>.passedTestCasesNumber of test cases that passed.Integer
metrics.<name>.failedTestCasesNumber of test cases that failed.Integer
metrics.<name>.errorTestCasesNumber of test cases that didn’t complete due to an error condition, such as unplugged device.Integer
inputEvaluation details given in Create smart home capability evaluation.Type
input.endpointRepresents a connected device or component associated with a user’s device cloud account.Object
input.endpoint.endpointIdUnique identifier for the endpoint.String
input.capabilityTestPlanRepresents the test plan to evaluate the add-on against.Object
input.capabilityTestPlan.idIdentifies the test plan.String
input.stageIndicates the stage of the add-on.String

HTTP status codes

StatusDescription
200 OKResponse body contains an array of the customer lists. Default lists appear first in the array.
400 Bad RequestIndicates that one or more properties in the request body aren’t valid.
The following example shows the response body with the error code and message.
401 UnauthorizedRequest didn’t include the authorization token, or the included token expired or isn’t valid. Or, you don’t have access to the resource.
403 ForbiddenIndicates that the authorization token is valid, but the requested operation isn’t allowed.
404 Not FoundRequested resource not found.
429 Too Many RequestsPermitted rate limit, specified as number of requests per unit of time, exceeded. Retry the request by using exponential back-off.
500 Server ErrorError occurred on the server. Retry the request by using exponential back-off.
503 Service UnavailableServer is down for maintenance, overloaded, or otherwise unavailable to handle the incoming request.

Get smart home capability evaluation results

Get the results of the specified evaluation.

Request

To get the results of an evaluation, you make a GET request to the smartHome/testing/capabilityEvaluations resource.

Request path and header example

Request path and header parameters

ParameterLocated inDescriptionTypeRequired
skillIdPathIdentifies the add-on.
Valid values: 1–255 characters.
StringYes
evaluationIdPathIdentifies the evaluation.
Use the ID returned from Create smart home capability evaluation.
StringYes
maxResultsQueryMaximum number of items to return in the response. The response might contain fewer items than the value you specify, but never contains more. Default: 20
Valid values: 1–1000.
IntegerNo
offsetQueryOffset of the result page to return.IntegerNo
access tokenHeaderLWA token.StringYes

Request body example

The request has no body.

Request body properties

The request has no body.

Response

A successful response returns HTTP 200 OK, along with the evaluation results. On error, the response returns the appropriate HTTP status code and includes a response body with an error code and human readable message.

Response body example

The following example shows a response.

Response body properties

PropertyDescriptionType
paginationContextIncluded when there are more items that match the request.Object
paginationContext.offsetOffset in the result page.Integer
paginationContext.totalCountTotal number of items that satisfy the request. This number might be higher than the number of items returned in this response.Integer
testCaseResultsList of test plans that satisfy the request.Array of objects
testCaseResults.nameHuman-readable test case name.String
testCaseResults.statusStatus of the test case.
Valid values: PASSED, FAILED, ERROR.
String
testCaseResults.expectedCapabilityStatesSmart Home API interfaces and expected property values.Array of objects
testCaseResults.expectedCapabilityStates.namespaceInterface name, such as Alexa.PowerController.String
testCaseResults.expectedCapabilityStates.nameProperty name, such as brightness.String
testCaseResults.expectedCapabilityStates.comparisonOperation used to compare the expected property value with the actual property value.
Valid values: EQUAL_TO, GREATER_THAN, LESS_THAN.
String
testCaseResults.expectedCapabilityStates.valueExpected property value results.String
testCaseResults.directiveDirective sent to the add-on.Object
testCaseResults.directive.headerHeader information.Object
testCaseResults.directive.header.namespaceName of the interface.String
testCaseResults.directive.header.nameName of the directive.String
testCaseResults.directive.payloadJSON payload included in the directive.Object
testCaseResults.actualCapabilityStatesActual property value results returned from the add-on.Array of objects
testCaseResults.actualCapabilityStates.namespaceInterface name, such as Alexa.PowerController.String
testCaseResults.actualCapabilityStates.nameProperty name, such as brightness.String
testCaseResults.actualCapabilityStates.comparisonOperation used to compare the expected property value with the actual property value.
Valid values: EQUAL_TO, GREATER_THAN, LESS_THAN.
String
testCaseResults.actualCapabilityStates.valueExpected property value.String
testCaseResults.expectedResponseExpected response to the directive.String
testCaseResults.actualResponseActual response to the directive.String
error(Optional) Included when an error occurs.Object
error.codeError code.
Valid values: CAPABILITY_NOT_SUPPORTED, DISCOVERY_FAILED, MULTIPLE_MATCHED_ENDPOINTS, MULTIPLE_MATCHED_TEST_PLANS, TEST_CASE_TIME_OUT, NO_SUCH_ENDPOINT, NO_SUCH_SKILL_STAGE, NO_SUCH_TEST_PLAN.
String
error.messageHuman-readable description of the error.String

HTTP status codes

StatusDescription
200 OKResponse body contains an array of the customer lists. Default lists appear first in the array.
400 Bad RequestIndicates that one or more properties in the request body aren’t valid.
The following example shows the response body with the error code and message.
401 UnauthorizedRequest didn’t include the authorization token, or the included token expired or isn’t valid. Or, you don’t have access to the resource.
403 ForbiddenIndicates that the authorization token is valid, but the requested operation isn’t allowed.
404 Not FoundRequested resource not found.
429 Too Many RequestsPermitted rate limit, specified as number of requests per unit of time, exceeded. Retry the request by using exponential back-off.
500 Server ErrorError occurred on the server. Retry the request by using exponential back-off.
503 Service UnavailableServer is down for maintenance, overloaded, or otherwise unavailable to handle the incoming request.

List smart home capability evaluations

List the evaluations for a specified add-on.

Request

To list the evaluations for an add-on, you make a GET request to the smartHome/testing/capabilityEvaluations resource.

Request path and header example

Request path and header parameters

ParameterLocated inDescriptionTypeRequired
skillIdPathIdentifies the add-on.
Valid values: 1–255 characters
StringYes
stageQueryFilter based on the stage of the add-on.
Valid values: development, live.
StringYes
startTimestampFromQueryBeginning of the start time to query evaluation results.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
StringNo
startTimestampToQueryEnd of the start time to query evaluation results.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
StringNo
maxResultsQueryMaximum number of items to return in the response. The response might contain fewer items than the value you specify, but never contains more. Default: 20
Valid values: 1–1000.
IntegerNo
nextTokenQueryResults might paginate. Include the value of nextToken from a previous List smart home capability evaluations response to get the next page of results. If not included, the response returns the first page of matching results.StringNo
access tokenHeaderLWA token.StringYes

Request body example

The request has no body.

Request body properties

The request has no body.

Response

A successful response returns HTTP 200 OK, along with a list of XYZ. On error, the response returns the appropriate HTTP status code and includes a response body with an error code and human readable message.

Response body example

The following example shows a response.

Response body properties

PropertyDescriptionType
paginationContextIncluded when there are more items that match the request.Object
paginationContext.nextTokenUse the nextToken value in your next List smart home capability test plans request to retrieve the remaining test plans.String
evaluationsList of evaluations that match the query parameters.Array of objects
evaluations.idIdentifies the evaluation.
Use the ID returned from Create smart home capability evaluation.
String
evaluations.startTimestampStart time of the evaluation.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
String
evaluations.endTimestampEnd time of the evaluation.
Defined in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.
String
evaluations.statusStatus of the evaluation.
Valid values: PASSED, FAILED, IN_PROGRESS, ERROR.
String
evaluations.endpointIdUnique identifier for the endpoint.String
evaluations.testPlanIdIdentifies the test plan.String
evaluations.sourceTestPlanIdsList of all test plan identifiers included in the evaluation.Array of strings

HTTP status codes

StatusDescription
200 OKResponse body contains an array of the customer lists. Default lists appear first in the array.
400 Bad RequestIndicates that one or more properties in the request body aren’t valid.
The following example shows the response body with the error code and message.
401 UnauthorizedRequest didn’t include the authorization token, or the included token expired or isn’t valid. Or, you don’t have access to the resource.
403 ForbiddenIndicates that the authorization token is valid, but the requested operation isn’t allowed.
404 Not FoundRequested resource not found.
429 Too Many RequestsPermitted rate limit, specified as number of requests per unit of time, exceeded. Retry the request by using exponential back-off.
500 Server ErrorError occurred on the server. Retry the request by using exponential back-off.
503 Service UnavailableServer is down for maintenance, overloaded, or otherwise unavailable to handle the incoming request.

List smart home capability test plans

Request available smart home capability test plans. You can view available test plans on the Alexa Certification Console under Resources > Test Plans.

Request

To list available test plans, you make a GET request to the smartHome/testing/capabilityEvaluations resource.

Request path and header example

Request path and header parameters

ParameterLocated inDescriptionTypeRequired
skillIdPathIdentifies the add-on.
Valid values: 1–255 characters.
StringYes
maxResultsQueryMaximum number of items to return in the response. The response might contain fewer items than the value you specify, but never contains more. Default: 20
Valid values: 1–1000.
IntegerNo
nextTokenQueryResults might paginate. Include the value of nextToken from a previous List smart home capability test plans response to get the next page of results. If not included, the response returns the first page of matching results.StringNo
access tokenHeaderLWA token.StringYes
request IDHeaderUnique identifier for the request, preferably a version 4 UUID.StringYes

Request body example

The request has no body.

Request body properties

The request has no body.

Response

A successful response returns HTTP 200 OK, along with a list of test plans. On error, the response returns the appropriate HTTP status code and includes a response body with an error code and human readable message.

Response body example

The following example shows a response.

Response body properties

PropertyDescriptionType
paginationContextIncluded when there are more items that match the request.Object
paginationContext.nextTokenUse the nextToken value in your next List smart home capability test plans request to retrieve the remaining test plans.String
paginationContext.totalCountTotal number of items that satisfy the request. This number might be higher than the number of items returned in this response.Integer
testPlansList of test plans that satisfy the request.Array of objects
testPlans[].idIdentifies the test plan.String
testPlans[].nameHuman-readable test plan name.String

HTTP status codes

StatusDescription
200 OKResponse body contains an array of test plans.
400 Bad RequestIndicates that one or more properties in the request body aren’t valid.
The following example shows the response body with the error code and message.
401 UnauthorizedRequest didn’t include the authorization token, or the included token expired or isn’t valid. Or, you don’t have access to the resource.
403 ForbiddenIndicates that the authorization token is valid, but the requested operation isn’t allowed.
404 Not FoundRequested resource not found.
429 Too Many RequestsPermitted rate limit, specified as number of requests per unit of time, exceeded. Retry the request by using exponential back-off.
500 Server ErrorError occurred on the server. Retry the request by using exponential back-off.
503 Service UnavailableServer is down for maintenance, overloaded, or otherwise unavailable to handle the incoming request.
Last modified on May 12, 2026