Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
Category SDK
MCP toolkit
Certify
Resources
アクセスいただきありがとうございます。こちらのページは現在英語のみのご用意となっております。順次日本語化を進めてまいりますので、ご理解のほどよろしくお願いいたします。

Local Booking SPI

This document outlines the Service Provider Interface (SPI) for Local Booking within the Category SDK framework. The SPI defines the contract you implement to integrate local service booking with Alexa+. Supported businesses include salons, spas, fitness centers, and other appointment-based services.

Namespace

The namespace for the Local Booking SPI is com.amazon.alexa.localbooking.v1.

Interaction pattern

The Local Booking SPI lets Alexa+ customers search for a local business, browse its service catalog, and manage appointments by voice. The flow begins after the customer selects a business through a local search. Alexa+ then calls your SPI with the resolved businessId to complete the booking task.

A typical booking flow:

  1. Alexa+ calls GetServices to match the requested service against your catalog.
  2. Alexa+ calls GetAvailability to find open time slots for the selected service.
  3. Alexa+ calls GetBusiness to retrieve the cancellation policy for the business before confirmation.
  4. After the customer confirms, Alexa+ calls CreateAppointment to book the appointment.

Post-booking flows for reschedule, cancel, rebook, and status check resolve the target appointment from the Alexa appointment datastore. Alexa+ then calls the relevant SPI operation.

Operations

The Local Booking SPI supports the following operations. Alexa+ performs permission checks at runtime before running each SPI operation.

Operation Path HTTP method Type Requires permissions

CancelAppointment

/v1/localbooking/businesses/{businessId}/appointments/{appointmentId}

DELETE

Idempotent

CreateAppointment

/v1/localbooking/businesses/{businessId}/appointments

POST

Non-idempotent

READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME

GetAppointment

/v1/localbooking/businesses/{businessId}/appointments/{appointmentId}

GET

Read-only

GetAvailability

/v1/localbooking/businesses/{businessId}/services/{serviceId}/availability

GET

Read-only

GetBusiness

/v1/localbooking/businesses/{businessId}

GET

Read-only

GetReviews

/v1/localbooking/businesses/{businessId}/reviews

POST

Read-only

GetServices

/v1/localbooking/businesses/{businessId}/services

POST

Read-only

GetUserInfo

/v1/localbooking/userinfo

POST

Read-only

READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME

UpdateAppointment

/v1/localbooking/businesses/{businessId}/appointments/{appointmentId}

PUT

Idempotent

Correlation token

Some booking systems maintain correlated state across multiple API calls during a single booking flow. For example, a reservation hold carries from service selection through availability and booking confirmation. The SPI supports an optional opaque correlationToken that lets you carry such state.

Your response to GetServices, GetAvailability, and CreateAppointment can include a correlationToken. Alexa+ stores the most recent token and forwards it to subsequent operations in the same flow. This includes post-booking operations like UpdateAppointment, CancelAppointment, and GetAppointment. Alexa+ treats the token as opaque and doesn't inspect or modify it.

If your backend is stateless, omit the correlationToken field. There's no behavioral impact.

Common request headers

Every operation in the Local Booking SPI includes the following HTTP headers. These are sent by Alexa+ and available in the request context.

Header Type Description Required

requestId

String

Unique identifier for the request to help with tracking and debugging

No

timestamp

Timestamp

Indicates when the request was initiated. Format: RFC 3339 date-time.

No

locale

String

The preferred language for the response content following RFC 5646 format, for example, en-US

No

applicationId

String

Identifier of the Alexa application making the request

No

userId

String

Unique identifier of the end user making the request. This field is sensitive and must not be exposed in exception messages or log output.

No

userAccessToken

String

Authentication token for the user's session. Provided if the user has successfully linked their account. This field is sensitive and must not be exposed in exception messages or log output.

No

CancelAppointment

Path: /v1/localbooking/businesses/{businessId}/appointments/{appointmentId}
Method: DELETE
Type: Idempotent

Cancels an existing appointment at the specified business. This operation is idempotent: cancelling an already-cancelled appointment should succeed without error. If a cancellation fee applies (based on business policy), return it in the cancellationFee field. If the cancellation is not allowed (window expired, venue policy, or any other restriction), return CancellationNotAllowedError with a descriptive message.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

appointmentId

String

Unique identifier for the appointment

Yes

correlationToken

String

Opaque correlation token persisted from the booking flow

No

Response

A successful CancelAppointmentOutput returns the canceled appointment ID, its final status, and any cancellation fee.

Parameter Type Description Required

appointmentId

String

Unique identifier for the canceled appointment

Yes

status

AppointmentStatus

Appointment status. Always CANCELLED on success.

Yes

message

String

Human-readable message from you

No

cancellationFee

MonetaryValue

Cancellation fee charged. Omit this field if no fee applies.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 404 AppointmentNotFoundError
  • 408 RequestTimeoutError
  • 409 CancellationNotAllowedError
  • 429 RequestThrottlingError
  • 500 InternalServerError

CreateAppointment

Path: /v1/localbooking/businesses/{businessId}/appointments
Method: POST
Type: Non-idempotent
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME

Books a new appointment at the specified business for the selected service and time slot. The optional userDetails (name, email, phone) identifies the customer. If the selected slot is no longer available, return SlotNotAvailableError. The correlationToken from GetAvailability may be passed to maintain booking flow state.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

serviceId

String

Unique identifier for the service to book

Yes

teamMemberId

String

Unique identifier for the team member. If omitted, assign any available team member.

No

appointmentDateTime

String

Appointment date and time in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

userDetails

UserDetails

Details of the person the appointment is being booked for

No

correlationToken

String

Opaque correlation token from the response of the prior operation

No

Response

A successful CreateAppointmentOutput returns the created appointment and its status.

Parameter Type Description Required

appointmentId

String

Unique identifier for the created appointment

Yes

status

AppointmentStatus

Booking status

Yes

message

String

Human-readable message from you

No

appointment

Appointment

Full appointment details

Yes

correlationToken

String

Opaque correlation token for stateful booking systems. See Correlation token.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 404 ServiceNotFoundError
  • 408 RequestTimeoutError
  • 409 SlotNotAvailableError
  • 409 TeamMemberNotAvailableError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetAppointment

Path: /v1/localbooking/businesses/{businessId}/appointments/{appointmentId}
Method: GET
Type: Read-only

Retrieves the current details of a specific appointment. Returns the full appointment record including status, service, team member, date/time, duration, and cost. Alexa+ calls this operation to fetch fresh appointment status from your service for appointments booked through Alexa.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

appointmentId

String

Unique identifier for the appointment

Yes

correlationToken

String

Opaque correlation token persisted from the booking flow

No

Response

A successful GetAppointmentOutput returns the full appointment details.

Parameter Type Description Required

appointment

Appointment

Full appointment details

Yes

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 404 AppointmentNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetAvailability

Path: /v1/localbooking/businesses/{businessId}/services/{serviceId}/availability
Method: GET
Type: Read-only

Returns available appointment time slots for a specific service within a date range. Each slot includes the start time, duration, and cost. The teamMemberId filter is optional — if omitted, return slots for all available team members. Supports pagination via maxResults and nextToken. Order the results by time, earliest first.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

serviceId

String

Unique identifier for the service

Yes

startDateTime

String

Start of availability window in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

endDateTime

String

End of availability window in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

teamMemberId

String

Filter slots by a specific team member

No

correlationToken

String

Opaque correlation token from the response of the prior operation

No

maxResults

Integer

Maximum number of slots to return. Valid range: 1–100.

No

nextToken

String

Pagination cursor for fetching the next page of results

No

Response

A successful GetAvailabilityOutput returns a list of available slots and an optional correlation token.

Parameter Type Description Required

availableSlots

List(AvailableSlot)

Available appointment slots (maximum 100 items)

Yes

correlationToken

String

Opaque correlation token for stateful booking systems. See Correlation token.

No

nextToken

String

Pagination cursor for the next page of results. Absent when there are no more results.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 404 ServiceNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetBusiness

Path: /v1/localbooking/businesses/{businessId}
Method: GET
Type: Read-only

Retrieves business profile information for a given location. Returns business metadata including the business name, physical address, timezone (IANA format), operating hours, and cancellation policy. This information is used to display business details to the customer and validate booking constraints.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

Response

A successful GetBusinessOutput returns the business metadata.

Parameter Type Description Required

business

BusinessDetails

Business metadata

Yes

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetReviews

Path: /v1/localbooking/businesses/{businessId}/reviews
Method: POST
Type: Read-only

Retrieves customer reviews and aggregate ratings for a business. Returns the overall rating, total review count, and a list of individual reviews (up to 50). If reviews are not available via your API, return the rating and review count with an empty reviews list. An optional reviewSummary field can provide a pre-generated summary of customer sentiment. Supports pagination via maxResults and nextToken.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

maxResults

Integer

Maximum number of reviews to return. Valid range: 1–50.

No

nextToken

String

Pagination cursor for fetching the next page of results

No

Response

A successful GetReviewsOutput returns the rating, review count, summary, and up to 50 reviews for the business.

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

rating

Double

Average rating from 0 to 5

No

reviewCount

Integer

Total number of reviews

No

reviewSummary

String

Summary of reviews

No

reviews

List(Review)

List of individual reviews (maximum 50 items)

No

nextToken

String

Pagination cursor for the next page of results. Absent when there are no more results.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetServices

Path: /v1/localbooking/businesses/{businessId}/services
Method: POST
Type: Read-only

Returns the service catalog for a business, with optional filtering by service name or type. Results can be filtered using serviceQuery (free-text name match) or serviceType (free-form category string). If no filter is provided, return all active services. Supports pagination via maxResults and nextToken. The response may include a correlationToken to maintain state across the booking flow.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

serviceQuery

String

Free-text service name search, for example, "Swedish massage" or "haircut and color"

No

serviceType

String

Free-form service category string for filtering. Recommended values include: HAIR_SALON, BARBER, SPA, MASSAGE, NAIL_SALON, MAKEUP, TATTOO, PIERCING, WAXING, BEAUTY_AND_SPA, ACUPUNCTURE, CHIROPRACTOR, TRAINER, TEETH_WHITENING, or any provider-specific category.

No

maxResults

Integer

Maximum number of services to return. Valid range: 1–100.

No

nextToken

String

Pagination cursor for fetching the next page of results

No

Response

A successful GetServicesOutput returns a ranked list of matching services and an optional correlation token.

Parameter Type Description Required

services

List(Service)

Ranked list of matching services (maximum 100 items)

Yes

correlationToken

String

Opaque correlation token for stateful booking systems. See Correlation token.

No

nextToken

String

Pagination cursor for the next page of results. Absent when there are no more results.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

GetUserInfo

Path: /v1/localbooking/userinfo
Method: POST
Type: Read-only
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME

Resolves or retrieves user identity at the provider system. Looks up the customer using the provided userDetails (name, email, phone) and returns the resolved user information. The optional businessId is needed for providers with per-business user isolation. If the user does not exist, either create a new user record and return their details, or return UserNotFoundError if user creation is not supported.

Request

Parameter Type Description Required

businessId

String

Business identifier — needed for providers with per-business user isolation

No

userDetails

UserDetails

Details of the user to look up

No

correlationToken

String

Opaque correlation token from the response of the prior operation

No

Response

A successful GetUserInfoOutput returns the matched user profile details.

Parameter Type Description Required

userDetails

UserDetails

Matched user details

Yes

correlationToken

String

Opaque correlation token for stateful booking systems. See Correlation token.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 UserNotFoundError
  • 408 RequestTimeoutError
  • 429 RequestThrottlingError
  • 500 InternalServerError

UpdateAppointment

Path: /v1/localbooking/businesses/{businessId}/appointments/{appointmentId}
Method: PUT
Type: Idempotent

Reschedules an existing appointment to a new date and time. The serviceId and teamMemberId are optional — if omitted, the original service and team member are retained. This operation is idempotent. If the business policy blocks rescheduling (for example, too close to the appointment time or venue restriction), return CancellationNotAllowedError.

Request

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

appointmentId

String

Unique identifier for the appointment

Yes

serviceId

String

Unique identifier for the service. If omitted, retains the original service.

No

teamMemberId

String

Unique identifier for the team member. If omitted, retains the original team member.

No

appointmentDateTime

String

New appointment date and time in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

correlationToken

String

Opaque correlation token from the response of the prior operation

No

Response

A successful UpdateAppointmentOutput returns the updated appointment and its status.

Parameter Type Description Required

appointmentId

String

Unique identifier for the updated appointment

Yes

status

AppointmentStatus

Appointment status

Yes

message

String

Human-readable message from you

No

appointment

Appointment

Full updated appointment details

Yes

correlationToken

String

Opaque correlation token for stateful booking systems. See Correlation token.

No

On error, the response returns one of the following error codes:

  • 400 ValidationException
  • 404 BusinessNotFoundError
  • 404 ServiceNotFoundError
  • 404 AppointmentNotFoundError
  • 408 RequestTimeoutError
  • 409 SlotNotAvailableError
  • 409 TeamMemberNotAvailableError
  • 409 CancellationNotAllowedError
  • 429 RequestThrottlingError
  • 500 InternalServerError

Components

Address

Physical address structure with required fields for business location.

Parameter Type Description Required

addressLine1

String

Primary street address line. This field is sensitive.

Yes

addressLine2

String

Secondary address line (apt, suite, unit, etc.). This field is sensitive.

No

addressLine3

String

Additional address line. This field is sensitive.

No

city

String

City or locality name

Yes

stateOrRegion

String

State, region, or province

Yes

districtOrCounty

String

District or county

No

countryCode

String

ISO 3166-1 alpha-2 country code, for example, US. Exactly 2 characters.

Yes

postalCode

String

Postal or ZIP code

Yes

Appointment

Full appointment record.

Parameter Type Description Required

appointmentId

String

Unique identifier for the appointment

Yes

business

BusinessInfo

Business info (nested in Appointment)

Yes

service

ServiceInfo

Service info (nested in Appointment)

Yes

teamMember

TeamMember

Team member/staff. Optional if not yet assigned.

No

appointmentDateTime

String

Appointment date and time in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

durationInMinutes

Integer

Duration in minutes

Yes

cost

MonetaryValue

Price before tax

Yes

costWithTax

MonetaryValue

Price with tax. Omit if not available.

No

status

AppointmentStatus

Current appointment status

Yes

AppointmentStatus

Lifecycle status of an appointment.

enum AppointmentStatus {
    PENDING
    CONFIRMED
    CANCELLED
    COMPLETED
    NO_SHOW
}
Value Description
PENDING Booking request awaits your confirmation
CONFIRMED Confirmed and scheduled
CANCELLED Canceled
COMPLETED Appointment has been completed
NO_SHOW Customer did not show up

AvailableSlot

An available time slot returned by GetAvailability.

Parameter Type Description Required

dateTime

String

Slot start time in RFC 3339 format. Must match ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$. Maximum length: 35 characters.

Yes

teamMember

TeamMember

Team member for this slot. Optional — some providers assign team member at reservation time.

No

durationInMinutes

Integer

Duration in minutes

Yes

cost

MonetaryValue

Price before tax

Yes

costWithTax

MonetaryValue

Price with tax. Omit if not available.

No

BusinessDetails

Business metadata returned by GetBusiness.

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

businessName

String

Display name of the business

Yes

description

String

Business description

No

address

Address

Physical address

Yes

phoneNumber

PhoneNumber

Business contact phone number. This field is sensitive.

No

websiteUrl

String

Business website URL. Must match ^https://.+$. Minimum length: 1 character.

No

timezone

String

Internet Assigned Numbers Authority (IANA) timezone identifier, for example, America/Los_Angeles. Maximum length: 64 characters.

No

operatingHours

List(OperatingHours)

Weekly operating hours

No

cancellationPolicy

CancellationPolicy

Cancellation policy for bookings at this business

No

BusinessInfo

Business identification nested inside an Appointment.

Parameter Type Description Required

businessId

String

Unique identifier for the business

Yes

businessName

String

Display name of the business

Yes

CancellationPolicy

Details of the cancellation policy that applies to bookings at a business.

Parameter Type Description Required

policyText

String

Human-readable policy text

Yes

cancellationWindowHours

Integer

Number of hours before the appointment by which the customer must cancel

No

hasCancellationFee

Boolean

Whether a cancellation fee applies

Yes

cancellationFeeAmount

MonetaryValue

Cancellation fee amount. Present when hasCancellationFee is true.

No

DayOfWeek

Day of the week.

enum DayOfWeek {
    MONDAY
    TUESDAY
    WEDNESDAY
    THURSDAY
    FRIDAY
    SATURDAY
    SUNDAY
}

MonetaryValue

A monetary amount with currency. The value field uses a decimal string representation to avoid floating-point precision issues. Negative values are permitted (for example, discounts, refunds).

Parameter Type Description Required

currencyCode

String

ISO 4217 three-letter currency code, for example, USD. Exactly 3 characters.

Yes

value

String

Decimal string representation of the amount, for example, 45.00. Must match ^[+-]?[0-9]+(\.[0-9]+)?$. Maximum length: 128 characters.

Yes

OperatingHours

Operating hours for a specific day of the week. Only include days the business is open. Absence from the list means closed.

Parameter Type Description Required

dayOfWeek

DayOfWeek

Day of the week

Yes

openTime

String

Opening time in HH:mm:ss format, for example, 09:00:00. Exactly 8 characters. Must match ^\d{2}:\d{2}:\d{2}$.

Yes

closeTime

String

Closing time in HH:mm:ss format, for example, 17:30:00. Exactly 8 characters. Must match ^\d{2}:\d{2}:\d{2}$.

Yes

PhoneNumber

Phone number with country code separation. This structure is sensitive and must not be exposed in exception messages or log output.

Parameter Type Description Required

countryCallingCode

String

Country calling code, for example, 1 for US, 91 for India. Must match ^[1-9]\d{0,2}$. Maximum length: 3 characters.

Yes

number

String

Subscriber number without country code. Must match ^\d{4,14}$. Length: 4–14 characters. This field is sensitive.

Yes

Review

An individual customer review of a business.

Parameter Type Description Required

reviewId

String

Unique identifier for the review

Yes

authorName

String

Display name of the review author

No

rating

Double

Rating from 0 to 5

Yes

text

String

Review text

No

date

String

Review date in ISO 8601 format (YYYY-MM-DD). Exactly 10 characters. Must match ^\d{4}-\d{2}-\d{2}$.

No

Service

A bookable service offered by a business. The serviceType field is a free-form string to accommodate diverse provider category systems.

Parameter Type Description Required

serviceId

String

Unique identifier for the service

Yes

serviceName

String

Display name of the service

Yes

serviceDescription

String

Service description

No

serviceType

String

Free-form service category string. Recommended values include: HAIR_SALON, BARBER, SPA, MASSAGE, NAIL_SALON, MAKEUP, TATTOO, PIERCING, WAXING, BEAUTY_AND_SPA, ACUPUNCTURE, CHIROPRACTOR, TRAINER, TEETH_WHITENING, or any provider-specific category.

No

minCost

MonetaryValue

Minimum price for the service

Yes

maxCost

MonetaryValue

Maximum price. Omit if the service has a fixed price.

No

minDurationInMinutes

Integer

Minimum duration in minutes

Yes

maxDurationInMinutes

Integer

Maximum duration in minutes. Omit if the service has a fixed duration.

No

ServiceInfo

Service identification nested inside an Appointment.

Parameter Type Description Required

serviceId

String

Unique identifier for the service

Yes

serviceName

String

Display name of the service

Yes

TeamMember

A team member or staff member at a business.

Parameter Type Description Required

teamMemberId

String

Unique identifier for the team member

Yes

teamMemberName

String

Full name as a single string, for example, "Jane Doe". Length: 1–100 characters. This field is sensitive.

Yes

UserDetails

Identity details for the customer receiving the appointment. All fields in this structure are sensitive and must not be exposed in log output.

Parameter Type Description Required

name

String

Full name of the customer. Length: 1–100 characters. This field is sensitive.

No

email

String

Email address of the customer. Must match ^[^@\s]+@[^@\s]+\.[^@\s]+$. Length: 5–254 characters. This field is sensitive.

No

phoneNumber

PhoneNumber

Phone number of the customer with country code. This field is sensitive.

No

Errors

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

Error response example

{
  "errorType": "CLIENT_ERROR",
  "errorCode": "SLOT_NOT_AVAILABLE_ERROR",
  "message": "The requested time slot is no longer available"
}

Error codes

HTTP status Error When
400 ValidationException The request contains malformed or missing required fields
404 BusinessNotFoundError The business ID doesn't exist
404 ServiceNotFoundError The service ID doesn't exist
404 AppointmentNotFoundError The appointment ID doesn't exist
404 UserNotFoundError The user cannot be identified or created at the provider
408 RequestTimeoutError You didn't respond within the required time limit
409 SlotNotAvailableError The requested time slot is no longer available
409 TeamMemberNotAvailableError The requested team member is unavailable
409 CancellationNotAllowedError Cancellation or rescheduling is not allowed for this appointment (window expired, venue policy, or other restriction)
429 RequestThrottlingError Rate limit exceeded
500 InternalServerError Unexpected error on your side

Date and time format

All date and time values use ISO 8601 / RFC 3339 with an explicit timezone offset. Don't use Z for local times.

2026-02-15T14:30:00-08:00

Use IANA identifiers for the timezone field on BusinessDetails, for example, America/Los_Angeles. Use HH:mm:ss format for time-only values on OperatingHours, for example, 09:00:00.


Was this page helpful?

Last updated: Jul 21, 2026