Your Alexa Dashboards Settings

Skill Operations (Skill Management API)

This reference describes all API operations related to the skill resource. Each request must have an Authorization header whose value should be the access token retrieved from Login with Amazon.

The ASK CLI Command Reference also uses the Skill Management API, but through a command-line interface.

See: Alexa Skills Kit Command Line Interface and Alexa Skill Management API Overview

Get Skill Information

Gets the skill manifest for a specified skill.

Request

GET /v0/skills/{skill_id}
FieldDescriptionParameter TypeRequired
skill_idUnique identifier of skill.PathYes

Response

HTTP/1.1 200 OK

Body

A skillManifest object as described in Skill Manifest.

Create a skill

Creates a new skill associated with the specified vendor ID.

Request

POST /v0/skills

Body

The body includes the vendorId, and a skillManifest object as described in Skill Manifest, as shown in the following example.

{
    "vendorId": "MT25O3ZVSAXZOAX",
    "skillManifest": {
        "publishingInformation": {
            "locales": {
                "en-US": {
                    "summary": "This is a sample Alexa skill.",
                    "examplePhrases": [
                        "Alexa, open sample skill.",
                        "Alexa, turn on kitchen lights.",
                        "Alexa, blink kitchen lights."
                    ],
                    "keywords": [
                        "Smart Home",
                        "Lights",
                        "Smart Devices"
                    ],
                    "name": "Sample custom skill name.",
                    "description": "This skill has basic and advanced smart devices control features."
                }
            },
            "isAvailableWorldwide": false,
            "testingInstructions": "1) Say 'Alexa, discover my devices' 2) Say 'Alexa, turn on sample lights'",
            "category": "SMART_HOME",
            "distributionCountries": [
                "US",
                "GB"
            ]
        },
        "apis": {
            "custom": {
                "endpoint": {
                    "uri": "arn:aws:lambda:us-east-1:032174894474:function:ask-custom-custome_cert"
                }
            }
        },
        "manifestVersion": "1.0",
        "privacyAndCompliance": {
            "allowsPurchases": false,
            "locales": {
                "en-US": {
                    "termsOfUseUrl": "http://www.termsofuse.sampleskill.com",
                    "privacyPolicyUrl": "http://www.myprivacypolicy.sampleskill.com"
                }
            },
            "isExportCompliant": true,
            "isChildDirected": false,
            "usesPersonalInfo": false
        }
    }
}

Response

Content-Type: application/json
HTTP/1.1 202 Accepted

Headers

Location: <Returns a relative URL to track the status>

Body

{
  "skill_id": "{skill_id}"
}
FieldDescriptionParameter Type
skill_idUnique identifier of newly created skill.Response Header
Response Body Element
HTTP/1.1 400

Server cannot process the request due to a client error.

HTTP/1.1 401 Unauthorized
HTTP/1.1 500 Internal Server Error

Update an existing skill

Updates the skill manifest associated with the specified skill ID.

Request

PUT /v0/skills/{skill_id}

Body

skillManifest object as described in Skill Manifest

Parameter Description

FieldDescriptionParameter TypeRequired
skill_idUnique identifier of skill.PathYes

Response

HTTP/1.1 202 Accepted

Headers

Location: <Returns a relative URL to track the status>
HTTP/1.1 400 Server cannot process the request due to a client error.
HTTP/1.1 401 Unauthorized
HTTP/1.1 404 Not Found
HTTP/1.1 500 Internal Server Error

Get the status of a skill

GET /v0/skills/{skill_id}/status

Parameter Description

FieldDescriptionParameter TypeRequired
skill_idUnique identifier of skill.PathYes

Response

HTTP/1.1 200 OK

Response body for a successful build of the model. Checking the status of a skill.

{
    "manifest": {
        "lastModified": {
            "time": "2017-09-05T05:36:41.530Z",
            "status": "SUCCESSFUL"
        }
    }
}

The status values can also be FAILED and IN_PROGRESS.

HTTP/1.1 400 Server cannot process the request due to a client error.
HTTP/1.1 401 Unauthorized
HTTP/1.1 404 Not Found
HTTP/1.1 500 Internal Server Error

List skills

List the skills for the specified vendorId, which is a mandatory parameter. The optional maxResults and nextToken values provide paging for the results.

GET /v0/skills?vendorId={vendorId}&maxResults={num}&nextToken={token}

Parameter Description

FieldDescriptionParameter Type
vendorIdUnique identifier of the vendor.string
maxResultsMaximum number of results to display per page of listed skills.integer
nextTokenEncrypted value of the token.string

Response

HTTP/1.1 200 OK

Response body lists the skills.

{
  "skills": [
    {
      "lastUpdated": "2017-07-11T19:29:57.120Z",
      "nameByLocale": {
        "en-US": "example"
      },
      "skillId": "amzn1.ask.skill.6acdbdf8-8420-440e-823e-aaaaaaaabbbb"
    },
    {
      "lastUpdated": "2017-07-05T21:11:16.947Z",
      "nameByLocale": {
        "en-US": "example1"
      },
      "skillId": "amzn1.ask.skill.81ded88f-0d0a-4612-aaaaaaaabbbb"
    },
    {
      "lastUpdated": "2017-07-05T21:08:03.693Z",
      "nameByLocale": {
        "en-US": "example2"
      },
      "skillId": "amzn1.ask.skill.1e9a668a-1746-451a-b401-aaaaaaaabbbb"
    },
    {
      "lastUpdated": "2017-07-05T17:29:30.046Z",
      "nameByLocale": {
        "en-US": "example3"
      },
      "skillId": "amzn1.ask.skill.2801f509-5e8e-4944-b48d-aaaaaaaabbbb"
    }
  ]
}
HTTP/1.1 400 Server cannot process the request due to a client error.
HTTP/1.1 401 Unauthorized
HTTP/1.1 500 Internal Server Error

Delete a skill

Delete a skill.

Request

DELETE /v0//skills/{skillId}/

Parameter Description

FieldDescriptionParameter TypeRequired
skill_idUnique identifier of skill.PathYes

Response

HTTP/1.1 204 NoContent
HTTP/1.1 400 Bad Request

Body:

{
    "message": "Cannot delete the skill because it has a cert/live stage. Please follow our documentation for next steps."
    "type": "BadRequest"
}
HTTP/1.1 500 Internal Service Error
{
    "message": // error message (String)
    "type": "InternalError"
}