> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Alexa Integration for AI Agents & Workflows

> Simulate and test Alexa skills via the Alexa Skills Management API (SMAPI).

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/amazon-alexa.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=df7286827cbc634388ce1a2084132c96" alt="Amazon Alexa logo" width="72" height="72" data-path="logos/amazon-alexa.svg" />

## Overview

Add **Amazon Alexa** to any ModuleX agent or workflow. Simulate and test Alexa skills via the Alexa Skills Management API (`api.amazonalexa.com/v2`).

<Info>
  **Categories**: AI & Machine Learning · Voice Assistants · IoT · Smart Home · **Auth**: OAuth2 · **Actions**: 2
</Info>

## Authentication

### OAuth2 Authentication

Connect using Amazon OAuth (recommended)

#### Required Credentials

| Field         | Description                                                  | Required | Format                                                             |
| ------------- | ------------------------------------------------------------ | -------- | ------------------------------------------------------------------ |
| Client ID     | Amazon OAuth App Client ID from the Amazon Developer Console | Yes      | `amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`    |
| Client Secret | Amazon OAuth App Client Secret                               | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |

#### OAuth Configuration

* **Authorization URL**: `https://www.amazon.com/ap/oa`
* **Token URL**: `https://api.amazon.com/auth/o2/token`
* **Scopes**: `alexa::ask:skills:readwrite`, `alexa::ask:skills:test`

## Available Actions

<AccordionGroup>
  <Accordion title="simulate_skill — Simulate a dialog from an Alexa-enabled device and receive the skill response for the specified utterance.">
    ### Parameters

    <ResponseField name="skill_id" type="string" required>
      The unique identifier for the Alexa skill.
    </ResponseField>

    <ResponseField name="stage" type="string" required>
      The stage of the skill: development or live.
    </ResponseField>

    <ResponseField name="content" type="string" required>
      Utterance text from a user to Alexa.
    </ResponseField>

    <ResponseField name="locale" type="string">
      Locale for the virtual device used in the simulation (e.g. en-US, en-GB, de-DE, fr-FR, ja-JP). (Default: `en-US`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "simulation_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Simulation Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        }
      },
      "required": [
        "success"
      ],
      "title": "SimulateSkillOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_simulation_results — Get the results of a specified simulation for an Alexa skill.">
    ### Parameters

    <ResponseField name="skill_id" type="string" required>
      The unique identifier for the Alexa skill.
    </ResponseField>

    <ResponseField name="stage" type="string" required>
      The stage of the skill: development or live.
    </ResponseField>

    <ResponseField name="simulation_id" type="string" required>
      The identifier for the simulation.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "simulation_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Simulation Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "result": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Simulation result data from the Alexa API",
          "title": "Result"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetSimulationResultsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* The Alexa SMAPI is rate-limited per developer account; exact limits are not publicly documented but throttling may occur at high request volumes.
* Simulation requests are asynchronous: `simulate_skill` returns a simulation ID immediately; poll with `get_simulation_results` to retrieve outcomes.
* Error model: non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Browser Use" href="/integrations/tools/browser-use" />

  <Card title="ElevenLabs" href="/integrations/tools/elevenlabs" />

  <Card title="fal.ai" href="/integrations/tools/fal-ai" />
</CardGroup>

## Links

* [Amazon Alexa](https://developer.amazon.com/alexa)
