Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Category SDK
MCP toolkit
Certify
Resources
Skip to main content
The Alexa+ Add-on API (AAPI) is the representational state transfer (REST) API that backs the Alexa AI CLI. You can call AAPI directly to integrate add-on lifecycle management into your own tools and your continuous integration/continuous deployment (CI/CD) pipelines.

AAPI endpoints

The AAPI root endpoint is https://api.amazonalexa.com. Each operation path includes its own version prefix. Refer to the individual operation sections for the full path.

Authentication

All requests must include a Login with Amazon (LWA) OAuth 2.0 Bearer token in the Authorization header. You can obtain a token by running alexa-ai configure. Pass tokens in the Authorization header. For details, see Access Token Retrieval REST API Reference.

CLI-to-API mapping

The following table maps each Alexa AI CLI command to the AAPI operations it calls.

Request headers

Response headers

For the error response format and a full list of error codes, see Error responses.

CreateAddOnUpload

Returns a pre-signed S3 URL for uploading the addon-package ZIP. Operation ID: createAddOnUpload POST /v1/addons/uploads

Request body

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

CreateAddOnPackageWithoutAddOnId

Triggers the asynchronous build pipeline for a new add-on (no existing add-on ID). Operation ID: createAddOnPackageWithoutAddOnId POST /v1/addons/packages

Request body

Success response

202 Accepted Response header: Location: /v1/addons/{addOnId}/packages/{packageId}

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 409 CONFLICT, 412 PRECONDITION_FAILED, 413 PAYLOAD_TOO_LARGE, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

CreateAddOnPackage

Triggers the asynchronous build pipeline for an existing add-on. Operation ID: createAddOnPackage POST /v1/addons/{addOnId}/packages

Path parameters

Request body

Success response

202 Accepted Response header: Location: /v1/addons/{addOnId}/packages/{packageId}

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 409 CONFLICT, 412 PRECONDITION_FAILED, 413 PAYLOAD_TOO_LARGE, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

GetAddOnPackageStatus

Polls the build status of a package. Operation ID: getAddOnPackageStatus GET /v1/addons/{addOnId}/packages/{packageId}

Path parameters

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 PACKAGE_NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

DeployAddOnVersionToStage

Deploys a built package to the development stage. Operation ID: deployAddOnVersionToStage POST /v1/addons/{addOnId}/deployments

Path parameters

Request body

Success response

202 Accepted Response header: Location: /v1/addons/{addOnId}/deployments/{deploymentId} Response body is empty.

Error responses

400 INVALID_REQUEST, 400 INVALID_STAGE, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 404 PACKAGE_NOT_FOUND, 409 INVALID_LIFECYCLE_STATE, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

GetAddOnDeploymentStatus

Polls deployment progress. Operation ID: getAddOnDeploymentStatus GET /v1/addons/{addOnId}/deployments/{deploymentId}

Path parameters

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 404 DEPLOYMENT_NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

SubmitAddOnForCertification

Submits the current development version for certification. Operation ID: submitAddOnForCertification POST /v1/addons/{addOnId}/submit

Path parameters

Request body

None.

Success response

202 Accepted

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 409 CONFLICT, 409 INVALID_LIFECYCLE_STATE, 412 PRECONDITION_FAILED, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

ListAddOns

Lists all add-ons for a vendor. Operation ID: listAddOns GET /v1/addons

Query parameters

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

ExecuteAddOnTests

Submits a test suite for execution against a deployed add-on. Operation ID: executeAddOnTests POST /v1/addons/{addOnId}/stages/{stage}/tests

Path parameters

Success response

202 Accepted

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 409 INVALID_LIFECYCLE_STATE, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

GetAddOnTestResults

Polls for test execution results. Operation ID: getAddOnTestResults GET /v1/addons/{addOnId}/tests/{testExecutionId}

Path parameters

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 404 TEST_EXECUTION_NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

CreateCatalog

Creates a new catalog for a vendor. Operation ID: createCatalog POST /v0/catalogs

Request body

Success response

201 Created

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

CreateContentUpload

Creates a content upload and returns pre-signed S3 URLs for multipart upload. Operation ID: createContentUpload POST /v0/catalogs/{catalogId}/uploads

Path parameters

Request body

Success response

201 Created

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

CompleteContentUpload

Completes a multipart upload by providing the ETags returned from each part upload. Operation ID: completeContentUpload POST /v0/catalogs/{catalogId}/uploads/{uploadId}

Path parameters

Request body

Success response

202 Accepted Response body is empty.

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

GetContentUpload

Gets the processing status of a catalog content upload. Operation ID: getContentUpload GET /v1/catalogs/{catalogId}/uploads/{uploadId}

Path parameters

Request body

None.

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

AssociateCatalogWithAddOn

Associates a catalog with an add-on. Required after creating and uploading catalog data so the add-on can access it. Operation ID: associateCatalogWithAddOn PUT /v1/addons/{addOnId}/catalogs/{catalogId}

Path parameters

Request body

None.

Success response

204 No Content Response body is empty.

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 ADDON_NOT_FOUND, 404 CATALOG_NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

ListAddOnMetrics

Discovers available metrics for an add-on, scoped by metric family. Use this to find metric names, supported stats, dimensions, and aggregation periods before querying data. Operation ID: listAddOnMetrics GET /v1/addons/{addOnId}/stages/{stage}/metrics

Path parameters

Query parameters

Success response

200 OK

Error responses

400 INVALID_REQUEST, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

GetAddOnMetrics

Queries up to five metrics for an add-on within a time range. Returns time series data with timestamps and values. Operation ID: getAddOnMetrics POST /v1/addons/{addOnId}/stages/{stage}/metrics/queries

Path parameters

Request body

Success response

200 OK

Error responses

400 INVALID_REQUEST, 400 TOO_MANY_QUERIES, 400 CATEGORY_REQUIRED, 400 STAT_MISMATCH, 400 UNSUPPORTED_AGGREGATION_PERIOD, 400 TIME_RANGE_EXCEEDED, 400 DIMENSION_NOT_APPLICABLE, 401 NOT_AUTHENTICATED, 403 NOT_AUTHORIZED, 404 NOT_FOUND, 429 TOO_MANY_REQUESTS, 500 INTERNAL_SERVER_ERROR, 503 SERVICE_UNAVAILABLE

Error responses

All AAPI endpoints return errors in the following format:

Common error codes


Last modified on August 18, 2026