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
This document outlines the Service Provider Interface (SPI) for Home Services within the Category SDK framework. The SPI defines the contract that you can implement to integrate with Alexa+.

Namespace

The namespace for the Home Services SPI is com.amazon.alexa.homeservices.v1.

Interaction patterns

The Home Services SPI supports a number of customer-experience patterns. They fall into three categories — discovery (how the customer finds a professional), account management (how the customer’s identity is connected to your platform), and booking (how the project is handed off after matching). Discovery and account-management patterns can be combined. For example, a partner can support both BROWSE_AND_CHOOSE for some services and AUTO_MATCH for others, and either Account Linking or Automatic Account Matching as the account-management story.

Discovery Patterns

The discovery patterns describe how a customer finds the professional who will perform the project. Partners declare per-service which discovery patterns they support via the matchingStrategies field on the GetServices response.

Browse and Choose (Customer-led)

The customer describes a project, reviews matching professionals, picks one, and sends them a project request. This is the default discovery pattern (BROWSE_AND_CHOOSE). For this pattern, you must implement the following operations: GetServices, GetServiceSpecification, ListProfessionals, MessageProfessional, and GetUserInfo.
  1. Project Definition: The customer describes the project. Alexa+ calls GetServices to identify matching service categories, then GetServiceSpecification to retrieve the per-service form. Alexa+ conducts dynamic Q&A to collect the required details.
  2. Search Professionals: Alexa+ calls ListProfessionals with the customer’s zip code and project context. You return a ranked, paginated list with ratings, reviews, cost estimates, and response times.
  3. Review Results: The customer reviews the professionals. Alexa+ supports voice-driven sorting and filtering by rating, response time, and cost.
  4. Reach Out: The customer selects a professional. Alexa+ optionally calls GetUserInfo to retrieve customer details from your account, and then calls MessageProfessional to deliver the project request to the selected professional.
Category SDK home services customer-led booking workflow

Auto-Match (Platform-led)

The customer does not browse or select a professional. Instead, your platform automatically matches a professional on the customer’s behalf. This is the AUTO_MATCH discovery pattern. Browsing operations like ListProfessionals and MessageProfessional are not used in this pattern. For this pattern, you must implement these operations: GetServices, GetServiceSpecification, CreateBooking, GetUserInfo.
  1. Project Definition: Same as Browse and Choose — Alexa+ calls GetServices and GetServiceSpecification to identify matching services and collect project details through dynamic Q&A.
  2. Time Selection: The customer picks a preferred appointment date and time.
  3. Account Management: If needed, Alexa+ initiates account linking or automatic account matching.
  4. Booking Estimate: Alexa+ calls CreateBooking with stage=ESTIMATE. You return estimated charges, policies (cancellation, rescheduling), and the customer’s available payment instruments. You also return your own partnerBookingId.
  5. Pre-Submit Confirmation: Alexa+ presents the estimate, taxes/fees, and cancellation policy. The customer selects a payment method and confirms.
  6. Booking Confirmation: Alexa+ calls CreateBooking again with stage=CONFIRMATION, sending the same alexaBookingId along with your partnerBookingId and the chosen payment instrument.
The booking is tentative until a professional is matched. Alexa+ informs the customer and uses GetBooking to poll status until a professional is assigned.

Account-Management Patterns

The SPI supports two account-management patterns. Partners can support either or both.

Account Linking

The traditional OAuth-based linking flow. When the customer needs to be linked to the partner, Alexa+ initiates account linking via the Alexa permissions framework. The customer sees a QR code on screened devices and a notification on the Alexa mobile app, completes the OAuth flow on a second screen, and returns to the conversation. After linking, Alexa+ can call partner endpoints with the user’s access token and retrieve partner-side profile data via GetUserInfo.

Automatic Account Matching

For partners that support it, Alexa+ shares the customer’s consented contact information directly with the partner via the userInfo field on MessageProfessional and the booking operations. The partner uses this information to match the customer to an existing account — or to auto-create one server-side — without requiring the customer to go through OAuth. The customer experience differs from traditional Account Linking in that there is no QR code, no OAuth round-trip, and no second-screen step.

Booking Patterns

Booking patterns describe how the customer’s project is handed off after the customer has selected (or been matched with) a professional.

Messaging

Messaging is the default lead-generation pattern, used by the majority of partners. After Alexa+ collects the project details and the customer selects a professional, Alexa+ sends a message to the chosen professional via MessageProfessional. The professional then reaches out to the customer through their own channels to schedule and complete the work. This is the pattern that pairs naturally with the Browse and Choose discovery pattern. There is no booking-lifecycle state to track on the Alexa side — once the MessageProfessional call succeeds, the partner-side workflow takes over.

Operations

The Home Services SPI supports the following operations. Alexa+ performs permission checks and account linking checks at runtime before running the SPIs.

GetServices

Path: /v1/homeservices/services
Method: GET
Type: Read-only
Account Linking: Not applicable
Applicable interaction patterns: Auto-Match and Browse and Choose
Retrieves an optionally ranked list of supported services such as plumbing, house cleaning, appliance repair, based on a natural language description of a customer’s project. Amazon offers two service selection patterns:

A: Partner-driven selection

You define your service categories and select which category applies to each customer request. This option gives you the flexibility to define service categories that most closely align with your business and your existing service offerings. You influence Alexa’s decision by providing a short list, or a single service, with a confidence score greater than 0 and up to 1. If you provide a single service, Alexa+ uses this service. If you return multiple services, Alexa+ attempts to select the service that best matches the request taking into consideration the confidence scores.

B: Alexa+-driven selection

You define your service categories and Alexa+ selects which categories apply to each customer request, based on a natural language description of your customer’s project. You can return a list of all services you support, regardless of the project description, and set the confidence score to 0 for each service. Alexa+ then selects one of the services you return, using a best effort to match the project description to the description of each service you offer. The confidence scores are defined in Service. The GetServices operation takes input GetServicesRequest and generates output GetServicesResponse.

Request

ParameterTypeDescriptionRequired
projectDescriptionStringA short natural language summary of a customer’s projectYes
zipCodeStringCustomer’s zip code for location-based provider filteringYes
maxResultsIntegerMaximum number of services to returnNo
nextTokenStringPagination token for fetching subsequent pagesNo

Response

A successful GetServicesResponse returns a ranked list of supported services available to service the customer’s project. If the response includes no services, Alexa+ interprets this response to indicate your services don’t support the customer’s project. If the response includes more than one service, Alexa+ selects the best matching service from the list. It considers the description of each service and the confidence values you provide. If the response includes a single service with a confidence score greater than 0.0, Alexa+ interprets this response to indicate that you can support the customer’s project and that the service included in the response is the best match for the request.
ParameterTypeDescriptionRequired
servicesArray of Service objectsList of services matching the project description, ranked by confidenceYes
paginationContextPaginationContextPagination context for result setsNo
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

GetServiceSpecification

Path: /v1/homeservices/services/{serviceId}/specification
Method: GET
Type: Read-only
Account Linking: Not applicable
Applicable interaction patterns: Auto-Match and Browse and Choose
Retrieves the specification for a given service. You can define a set of parameters associated with each service you support. Alexa+ uses this specification to ask the customer related questions needed to provide the required information to create a booking, or message a professional. This operation takes input GetServiceSpecificationRequest and generates output GetServiceSpecificationResponse.

Request

ParameterTypeDescriptionRequired
serviceIdStringThe service ID corresponding to the one selected to handle the customer’s request, based on the response to the GetServices operationYes

Response

A successful GetServiceSpecificationResponse returns a set of parameters that are required when creating a booking, or messaging a professional related to the selected service ID.
ParameterTypeDescriptionRequired
serviceSpecificationServiceSpecificationA set of questions and answers that are required for creating a booking or messaging a professionalYes
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

CreateBooking

Path: /v1/homeservices/bookings
Method: POST
Type: Non-idempotent
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME, READ_DEVICE_ADDRESS
Applicable interaction patterns: Auto-Match
Creates a new service booking. This operation takes input CreateBookingRequest and generates output CreateBookingResponse.

Request

Represents a booking that may be in one of two stages: "ESTIMATE", or "CONFIRMATION". Alexa+ first sends a request to start a booking process and generates an estimate. You must return the estimated charges and any service charges associated with the request. Also include a list of payment instruments for the customer to pick from. Alexa+ shares the estimate and the service policies with the customer and allows the customer to select the payment instrument to use to complete the booking. After the customer has selected a payment instrument and confirmed the request, Alexa+ calls CreateBooking again, sets the BookingStage parameter to CONFIRMATION.
ParameterTypeDescriptionRequired
projectProjectDetails about the projectYes
alexaBookingIdStringAlexa-generated stable identifier for this booking request. Generated on ESTIMATE, reused on CONFIRMATION. Serves as idempotency key.No
partnerBookingIdStringPartner-generated booking identifier. Absent on ESTIMATE requests. Present on CONFIRMATION requests — Alexa passes back the value you returned on the ESTIMATE response.No
appointmentDateTimeStringAppointment date and time in RFC 3339 format with timezone, for example, ‘2023-12-25T14:30:00Z’ or ‘2023-12-25T14:30:00-08:00’Yes
paymentInstrumentsList (PaymentInstrument)List of payment instrumentsYes
stageBookingStageAlexa sets this parameter to either ESTIMATE or CONFIRMATION depending on the stage of the requestYes
userInfoUserInfoUser contact information for the bookingYes

Response

A successful CreateBookingResponse returns purchase details, booking stage, and booking details.
ParameterTypeDescriptionRequired
purchaseDetailsPurchasePurchase-related information including charges, policies, and payment methodsNo
stageBookingStageAlexa sets the parameter to ESTIMATE or CONFIRMATION depending on the stage of the requestYes
bookingBookingAll booking information and related dataYes
taskProgressStringOptional task progress notification for WebAction implementations. Values: GETTING_READY, GATHERING_INFO, HANG_TIGHT, FINALIZING, ALMOST_DONE.No
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

ListProfessionals

Path: /v1/homeservices/professionals
Method: POST
Type: Read-only
Applicable interaction patterns: Browse and Choose
Lists professionals who offer services for the specified project request.

Request

ParameterTypeDescriptionRequired
zipCodeStringZip code where the project needs to be completedYes
maxResultsIntegerMaximum number of professionals to returnNo
nextTokenStringPagination token for fetching subsequent pagesNo
projectDescriptionStringDescription of the projectYes
projectDetailsList(ProjectDetail)Project information containing details about the service requestNo
serviceServiceService context for the requestNo

Response

A successful ListProfessionalsResponse returns a list of professional matching the search criteria, along with service information and pagination metadata.
ParameterTypeDescriptionRequired
serviceServiceThe matched serviceYes
professionalsArray of Professional objectsList of professionals available to provide the requested project in the specified areaYes
paginationContextPaginationContextPagination context for result setsNo
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

MessageProfessional

Path: /v1/homeservices/professionals/{professionalId}/message
Method: POST
Type: Non-idempotent
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME, READ_DEVICE_ADDRESS
Applicable interaction patterns: Browse and Choose
Sends a contact request message to a professional with project information.

Request

ParameterTypeDescriptionRequired
professionalIdStringUnique identifier of the professional to contactYes
nameStringProfessional’s full nameYes
businessUrlStringURL to the professional’s business websiteNo
projectDescriptionStringDescription of the projectYes
projectDetailsList(ProjectDetail)Detailed information about project requirements and preferencesYes
userInfoUserInfoUser contact information for the professional to reach the userYes
serviceServiceService context for provider to re-derive search context at message timeYes
zipCodeStringCustomer zip code for geographic contextYes

Response

A successful MessageProfessionalResponse returns HTTP 204 with no response body. On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

GetUserInfo

Path: /v1/homeservices/users/current
Method: GET
Type: Read-only Applicable interaction patterns: Auto-Match and Browse and Choose
Retrieves profile information for the currently authenticated user. This operation returns personal information from your system that the user has consented to share. This operation takes input GetUserInfoRequest and generates output GetUserInfoResponse.

Request

There is no request body.

Response

A successful GetUserInfoResponse returns the current user’s profile information.
ParameterTypeDescriptionRequired
nameStringUser’s full name in their profileNo
addressAddressPhysical address of the userNo
emailStringThe user’s email addressNo
phoneStringThe user’s primary phone number in E.164 format, for example, +1234567890No
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

GetBooking

Path: /v1/homeservices/bookings/{partnerBookingId}
Method: GET
Type: Read-only
Retrieves an existing booking by the partner’s booking identifier, including current status and the professional assigned to it. This operation takes input GetBookingRequest and generates output GetBookingResponse.

Request

ParameterTypeDescriptionRequired
partnerBookingIdStringThe partner-generated booking identifier returned in the CreateBooking ESTIMATE responseYes

Response

A successful GetBookingResponse returns booking details including current status and professional assignment.
ParameterTypeDescriptionRequired
bookingBookingComplete booking informationYes
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

CancelBooking

Path: /v1/homeservices/bookings/{partnerBookingId}/cancel
Method: POST
Type: Non-idempotent Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME, READ_DEVICE_ADDRESS
Cancels an existing booking using its unique identifier. The booking must be in a cancellable status including PENDING, CONFIRMED, ASSIGNED, or RESCHEDULED. Upon successful cancellation, the system updates the booking status to CANCELLED and releases any associated resources according to the cancellation policy. This operation takes input CancelBookingRequest and generates output CancelBookingResponse.

Request

ParameterTypeDescriptionRequired
partnerBookingIdStringThe partner-generated booking identifier returned in the CreateBooking ESTIMATE responseYes
cancellationReasonStringJustification for the booking cancellation. Required for customer service, professional feedback, and partner business intelligence purposes.Yes
userInfoUserInfoUser contact information for the cancelling customer, used to validate ownership and notify the customerYes

Response

A successful CancelBookingResponse returns booking ID and the latest status of the booking.
ParameterTypeDescriptionRequired
partnerBookingIdStringPartner-generated booking identifier (echoed from request)Yes
statusBookingStatusUpdated booking status after the cancellation operation is completed. It should be CANCELLED upon successful cancellation.Yes
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

ModifyBooking

Path: /v1/homeservices/bookings/{partnerBookingId}/modify
Method: POST
Type: Non-idempotent Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME, READ_DEVICE_ADDRESS
Modifies an existing booking’s appointment date and time. The booking must be in a modifiable status including PENDING, CONFIRMED, ASSIGNED, or RESCHEDULED. Upon successful modification, the booking status might remain the same or be updated based on your requirements. This operation takes input ModifyBookingRequest and generates output ModifyBookingResponse.

Request

ParameterTypeDescriptionRequired
partnerBookingIdStringThe partner-generated booking identifier returned in the CreateBooking ESTIMATE responseYes
newAppointmentDateTimeStringNew appointment date and time in RFC 3339 format with timezone, for example, ‘2023-12-25T14:30:00Z’ or ‘2023-12-25T14:30:00-08:00’. It must be in the future and within your acceptable scheduling window.Yes
userInfoUserInfoUser contact information for the modifying customer, used to validate ownership and notify the customerYes

Response

A successful ModifyBookingResponse returns partnerBookingId and the updated status of the booking.
ParameterTypeDescriptionRequired
partnerBookingIdStringPartner-generated booking identifier (echoed from request)Yes
statusBookingStatusUpdated booking status after the modification operation is complete. It might remain unchanged or updated to reflect the modification, such as CONFIRMED, PENDING.Yes
On error, the response returns one of the following error codes:
  • 400 ValidationExceptionResponse
  • 400 ClientErrorResponse
  • 408 RequestTimeoutErrorResponse
  • 429 RequestThrottlingErrorResponse
  • 500 InternalServerErrorResponse

Components

Address

Physical address information for the service location.
ParameterTypeDescriptionRequired
addressLine1StringPrimary address lineNo
addressLine2StringSecondary address lineNo
addressLine3StringTertiary address lineNo
cityStringCityNo
stateOrRegionStringState or regionNo
districtOrCountyStringDistrict or countyNo
countryCodeStringCountry codeNo
postalCodeStringPostal codeNo

Badge

Details of a badge (display element) that may be shown together with professional detail cards on Alexa devices with a screen.
ParameterTypeDescriptionRequired
nameStringName or title of the badge, for example, Top Rated Pro, Licensed ContractorYes

Booking

Complete booking entity containing all booking and related data.
ParameterTypeDescriptionRequired
alexaBookingIdStringAlexa-generated unique identifier for every booking requestYes
partnerBookingIdStringPartner-generated unique identifier for the booking request. It may be set to the same value as the alexaBookingId.Yes
statusBookingStatusCurrent booking statusYes
projectProjectAlexa provides details about the project associated with this booking requestNo
appointmentDateTimeStringScheduled date and time for the service appointment in RFC 3339 format with timezone, for example, ‘2023-12-25T14:30:00Z’ or ‘2023-12-25T14:30:00-08:00’Yes
cancellationPolicyPolicyYour booking cancellation policyNo
additionalPoliciesList (Policy)List of additional policies that apply to this bookingNo
assignedProfessionalProfessionalStubAssigned professional, present only when a professional has been assigned to the bookingNo

BookingStage

Stage of a booking request. A request starts as ESTIMATE — you must respond with estimated costs, policies, and payment instruments. Alexa+ presents these to the customer. After the customer confirms, the request transitions to CONFIRMATION.

BookingStatus

Current booking status.

Charge

Specific charge or fee associated with a service booking.
ParameterTypeDescriptionRequired
chargeDescriptionStringDescription of what this charge coversYes
chargeCategoryChargeCategory EnumCategory of the charge. Values: SERVICE, MATERIAL, LABOR, TAX, FEE, OTHER.Yes
amountMonetaryValueMonetary value representationYes

Constraint

Defines constraints for a form field, such as a regular expression defining the acceptable format, or an enumeration of allowable values.
ParameterTypeDescriptionRequired
dataTypeStringData type enum. Accepted values:
  • STRING: Free-form text value
  • INTEGER: Whole number value
  • FLOAT: Decimal floating-point value
  • BOOLEAN: True/false value
  • DATE: Calendar date value
  • CURRENCY: Monetary/currency value (exact decimal)
  • TIME: Time-of-day value
  • URI: URI/URL value
Yes
selectionTypeStringSelection type enum. Accepted values:
  • RADIO: Single selection from a list (radio buttons)
  • CHECKBOX: Multiple selection from a list (checkboxes)
  • TEXT: Free-form text input
  • DROPDOWN: Single selection from a dropdown menu
Yes
regexPatternStringA regular expression constraint that describes allowed format for a form fieldNo
minLengthIntegerMinimum length allowed for a form fieldNo
maxLengthIntegerMaximum length allowed for a form fieldNo
optionsList(ValueConstraint)List of available options for selection fieldsNo

Condition

Conditional display logic for form fields.
ParameterTypeDescriptionRequired
fieldNameStringField name to check condition againstYes
equalsValueStringValue that must match for condition to be trueYes

CostEstimate

Cost estimation information for the requested project, including pricing range and unit type.
ParameterTypeDescriptionRequired
minMonetaryValueMinimum costYes
maxMonetaryValueMaximum cost (only for RANGE type)No
costUnitCostUnitHow cost estimate is interpreted and what unit it representsYes

CostUnit

Defines how the cost estimate should be interpreted and what unit it represents.
ParameterTypeDescriptionRequired
typeEnum of stringsEnumeration of different cost unit types for project pricing (MIN, HOURLY, FLAT, RANGE, OTHER)Yes
descriptionStringCustom description of the cost unit. It is only used when type is OTHER.No

CreditCardDetails

Detailed information about a credit card, containing sensitive payment data.
ParameterTypeDescriptionRequired
last4StringLast 4 digits of the payment instrument numberYes
networkStringPayment network of the payment instrument, for example, Visa, Mastercard, Amex.Yes
expirationYearIntegerExpiration year, for example, 2026.No
expirationMonthIntegerExpiration month from 1-12.No

FormField

Defines one form field for collecting a parameter for a ServiceSpecification associated with a service. Each FormField enables you to define one unique question applicable to your service that needs to be answered by the customer. For example, for house cleaning services, you can define a FormField to collect information about number of bathrooms. You can have another FormField to define the cleaning type that accepts one of the following possible values: “Standard”, “Deep Cleaning”, “Move-out Cleaning”.
ParameterTypeDescriptionRequired
nameStringName of the field. Must be unique on the form. Used to reference this field in Condition logic.Yes
idStringYour stable identifier for this form field. If your system assigns persistent IDs to form questions, set this value so that Alexa+ can map customer answers back to your internal question without relying on name.Yes
errorMessageStringError message to display for validation failuresNo
textStringDisplay text for the parameter, for example “Cleaning Type”Yes
isRequiredBooleanIndicates whether Alexa must provide a value for this parameterYes
defaultValueStringDefault value for the parameterNo
groupNameStringGroup name for related parameters, for example, “Service details questions”No
conditionConditionCondition for conditional field displayNo
constraintsList(Constraint)List of constraints, such as min/max value, or allowable values for the parameterNo

MonetaryValue

Monetary value representation.
ParameterTypeDescriptionRequired
currencyCodeString3-letter currency code as specified by ISO-4217, for example, ‘USD’.Yes
valueStringString containing a decimal representing the major unit, for example, ‘1.23’ represents 1 dollar & 23 cents. Max length is 128 characters.Yes

PaymentInstrument

Payment instrument information including type, identifier, and detailed payment data.
ParameterTypeDescriptionRequired
paymentInstrumentTypeEnumeration of stringsType of payment instrument. Values: CARD (credit or debit card), AMAZONPAY (Amazon Pay).Yes
paymentInstrumentIdStringHuman-readable identifier for the payment instruments, for example, Visa **** 1234.Yes
walletStringWallet identifier or name associated with this payment instrument.Yes
paymentInstrumentDetailsPaymentInstrumentDetailsDetailed payment instrument information. Optional because some partners surface limited card data.No

PaymentInstrumentDetails

Detailed payment instrument information.
ParameterTypeDescriptionRequired
creditCardCreditCardDetailsCredit card detailsNo

Policy

Business policy defining terms and conditions for service bookings.
ParameterTypeDescriptionRequired
policyDescriptionStringHuman-readable description of policy terms and conditionsYes
policyTypeEnumeration of stringsEnumeration of the following strings: CANCELLATION, RESCHEDULINGYes
policyUrlStringURL to detailed policy page with full terms and conditionsNo

Professional

Represents a service professional with their business information, ratings, and service details.
ParameterTypeDescriptionRequired
nameStringThe professional’s full nameYes
idStringUnique identifier for the professional in the systemYes
ratingNumberProfessional’s average rating from customer reviews (0.0 to 5.0). If there’s no review, set the value to 0.Yes
numReviewsIntegerTotal number of customer reviews received for this professionalYes
descriptionStringProfessional’s description or bioNo
businessUrlStringURL to the professional’s business websiteNo
photoUrlStringURL to the professional’s profile photo or business logoNo
numProjectsIntegerTotal number of completed projects by this professionalNo
badgesList(Badge)Professional certifications and achievement badgesNo
costEstimateCostEstimateCost estimate for the projectNo
responseTimeHoursIntegerTypical response time in hoursNo
reviewsList(Review)Customer reviews for this professionalNo

ProfessionalStub

Lighter representation used inside Booking.assignedProfessional. Has the same required fields as Professional (name, id, rating, numReviews) and the optional businessUrl, photoUrl, numProjects, badges — but omits description, costEstimate, responseTimeHours, and reviews.

Project

Project information containing details about the service request.
ParameterTypeDescriptionRequired
projectIdStringUnique identifier for the projectNo
projectDescriptionStringDescription of the project and service requirementsYes
addressAddressAddress for the service requestYes
projectDetailsList(ProjectDetail)Detailed information about project requirements and preferencesYes
serviceServiceService information for describing different types of home services you offerYes

ProjectDetail

Project detail represents a specific aspect of the service request, for example, number of rooms, number of floors, appliance brand.
ParameterTypeDescriptionRequired
formFieldIdStringReferences the FormField.id from the service specification this answer corresponds toYes
descriptionStringHuman-readable description of what this project detail represents. For example, it might represent a question asked by the Home Services provider, such as number of rooms, number of floors, appliance brand.No
selectedValuesList(String)User’s selected values or preferences for the project detailYes

Purchase

Complete purchase entity containing all purchase-related information including charges, policies, and payment methods.
ParameterTypeDescriptionRequired
chargesList(Charge)List of all charges associated with this purchaseNo
policiesList(Policy)List of policies that apply to this purchaseNo
paymentInstrumentsList(PaymentInstrument)List of payment instruments available for this purchaseNo

PaginationContext

Pagination metadata returned in responses that support paginated result sets.
ParameterTypeDescriptionRequired
nextTokenStringToken for fetching the next page of results. Absent when there are no more pages.No
totalCountIntegerTotal number of items available across all pagesNo

Review

Individual customer review with rating, text, and reviewer information.
ParameterTypeDescriptionRequired
ratingNumberCustomer rating for this specific review on a scale of 1.0 to 5.0Yes
reviewerNameStringName of the customer who left the reviewYes
textStringThe review text content describing the customer’s experienceYes
timestampStringThe review submission time (ISO 8601)Yes

Service

Service information for describing different types of home services you offer.
ParameterTypeDescriptionRequired
idStringUnique identifier for the service offered by youYes
nameStringUser-friendly name of the service, for example, “House Cleaning”Yes
descriptionStringDetailed description of the service. Used for selection when multiple services are returned.Yes
confidenceFloatA value from 0.0 to 1.0 that represents how well this service matches a customer’s project. 0 means Alexa+ will automatically select best matching service based on the customer’s natural language description. For details, see B: Alexa+-driven selection. A score of 0.1-0.9 partially influences Alexa+‘s selection, with higher score having stronger influence. A score of 1 strongly suggests the service is the best match. For details, see A: Partner-driven selection.No
matchingStrategiesArray of StringService matching strategies supported for this service. Values: BROWSE_AND_CHOOSE (customer browses and selects a professional), AUTO_MATCH (system automatically matches customer with a professional). Defaults to [BROWSE_AND_CHOOSE] if omitted.No

ServiceSpecification

Defines a set of parameters that need to be collected when customers book a service, or message a professional for a given service type.
ParameterTypeDescriptionRequired
serviceServiceDetails that describe various types of home services you offerYes
fieldsList(FormField)A collection of form fields that customers need to provide when booking a service or messaging a service professional. Each form field captures one parameter for the service. Amazon requires that you provide all parameters as List in a single request for each service. For example, for the house cleaning service, you can define a list of FormFields that collect parameters, such as number of bedrooms, number of bathrooms, square footage, whether there are pets, recurring service or not.Yes

ValueConstraints

Defines a permitted value for a constrained parameter, similar to a value defined in enumerations.
ParameterTypeDescriptionRequired
valueStringInternal value passed to an API, for example, “standard” or “deep”Yes
labelStringThe display text shown on the screen or spoken through Text-to-Speech (TTS), for example, “standard cleaning”, or “deep cleaning”Yes
idStringYour stable identifier for this option. If your system assigns persistent IDs to answer choices, set this value so that Alexa+ can map the customer’s selection back to your internal option.No

UserInfo

User contact information.
ParameterTypeDescriptionRequired
nameStringUser’s full nameNo
emailStringUser’s email addressNo
phoneStringUser’s phone numberNo
addressAddressUser’s addressNo

Errors

All error responses share a common structure with errorType, errorCode, and message fields.

Error response example

Error codes

Last modified on July 10, 2026