---
title: "Creates a Booking Quote."
method: POST
path: "/v1/quotes"
tags: ["Booking Quotes"]
---

# Creates a Booking Quote.

`POST /v1/quotes`

## Request

- Base URL: `https://your.domain.com`
- URL: `https://your.domain.com/v1/quotes`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/suntransfers/apis/st-spec-suntransfers-supplier-api-specification/docs/v1/quotes/post.ts> (a function with typed inputs; its response is checked against the schema)

Requests to this endpoint should reply as quickly as possible as the results are being awaited by our customers. Requests that fail may be retried after a few minutes. See more in the Responses section.

## Request body

- QuoteRequest: Encapsulates the necessary information to request a Quote for one or more Transfers.
  - `transfers` QuoteTransferRequest[], required: The list of Transfers to be priced.
    - `origin` DetailedLocation, required: Represents a Location. Differs from the Booking `Location` type in that it contains `addressParts` when `type` is `Resort` and also that you can trust the `latitude` and `longitude` values.
      - `name` string, nullable: The internationally known English name.
      - `translatedName` string, nullable: The translated name when the supplier's language is not English.
      - `type` 'Gateway' | 'Resort', required: `Gateway` denotes Airports, Ports, and Train Stations while `Resort` denotes Cities, Neighborhoods, Regions etc.
      - `id` string, nullable: The Suntransfers' internal unique identifier for the Location.
      - `countryCode` string, required: The two-letter ISO 3166-1 country code.
      - `gatewayCode` string, nullable: The gateway code when `type` is `Gateway`. This is an IATA airport code for airports, a UN/LOCODE for ports, or a locally recognized code for train stations (e.g., `ESBCNSAN` for Barcelona Sants train station).
      - `latitude` number, double, required: The approximate Latitude.
      - `longitude` number, double, required: The approximate Longitude.
      - `addressParts` string[], nullable: The distinct components of the Address when `type` is `Resort`.
    - `destination` DetailedLocation, required: Represents a Location. Differs from the Booking `Location` type in that it contains `addressParts` when `type` is `Resort` and also that you can trust the `latitude` and `longitude` values.
      - `name` string, nullable: The internationally known English name.
      - `translatedName` string, nullable: The translated name when the supplier's language is not English.
      - `type` 'Gateway' | 'Resort', required: `Gateway` denotes Airports, Ports, and Train Stations while `Resort` denotes Cities, Neighborhoods, Regions etc.
      - `id` string, nullable: The Suntransfers' internal unique identifier for the Location.
      - `countryCode` string, required: The two-letter ISO 3166-1 country code.
      - `gatewayCode` string, nullable: The gateway code when `type` is `Gateway`. This is an IATA airport code for airports, a UN/LOCODE for ports, or a locally recognized code for train stations (e.g., `ESBCNSAN` for Barcelona Sants train station).
      - `latitude` number, double, required: The approximate Latitude.
      - `longitude` number, double, required: The approximate Longitude.
      - `addressParts` string[], nullable: The distinct components of the Address when `type` is `Resort`.
    - `vehicle` QuoteVehicle, required: Details about a Vehicle required for a Transfer.
      - `code` string, required: The Suntransfers Vehicle Code.
      - `type` string, required: The type of the Vehicle.
      - `title` string, required: The title of the Vehicle.
      - `isShared` boolean, required: Indicates if the Vehicle is of shared type (e.g., shuttle) or private type (e.g., taxi).
      - `isWheelchairAccessible` boolean, required: Indicates if the Vehicle is wheelchair accessible.
      - `maxPassengers` integer, nullable: The maximum number of Passengers the Vehicle can accommodate. This property is `null` for shuttle-type Vehicles where the capacity is virtually unlimited.
    - `passengers` QuotePassengers, required: The specifics about the number of Passengers in the Transfer.
      - `total` integer, required: The total number of Passengers in the Transfer, that is, the sum of `adults`, `children`, and `infants`.
      - `adults` integer, required: The number of adults in the Transfer.
      - `children` integer, required: The number of children in the Transfer.
      - `infants` integer, required: The number of infants in the Transfer.
      - `ages` integer[], nullable: The ages, in years, of the children and infants in the Transfer.
    - `transferDateTime` string, date-time, required: An ISO 8601 date-time string in local time.
    - `extras` QuoteExtra[], nullable: Extra services for the Transfer.
      - `id` string, required: The Suntransfers Extra identifier.
      - `name` string, required: The name of the Extra.
      - `translatedName` string, required: The translated name of the Extra.
      - `quantity` integer, required: The quantity of the Extra.
      - `unitRate` number, double, required: The unit rate of the Extra.
      - `notes` string, nullable: Additional notes about the Extra.

## Response `201`

`201 Created`: The Booking Quote has been created. Signals that the Quote or Quotes returned can be used later for creating a Booking with the same settings.

- QuoteResponse: Represents the result of a Quote request.
  - `transfers` QuoteTransferResponse[], required: The list of Transfers for the requested Quotes.
    - `quotes` TransferQuote[], required: The list of available Quotes for a Transfer.
      - `id` string, required: An identifier of the Quote that can be used later to create a Booking under the same settings.
      - `vehicle` QuoteVehicle, required: Details about a Vehicle required for a Transfer.
        - `code` string, required: The Suntransfers Vehicle Code.
        - `type` string, required: The type of the Vehicle.
        - `title` string, required: The title of the Vehicle.
        - `isShared` boolean, required: Indicates if the Vehicle is of shared type (e.g., shuttle) or private type (e.g., taxi).
        - `isWheelchairAccessible` boolean, required: Indicates if the Vehicle is wheelchair accessible.
        - `maxPassengers` integer, nullable: The maximum number of Passengers the Vehicle can accommodate. This property is `null` for shuttle-type Vehicles where the capacity is virtually unlimited.
      - `validUntilUtc` string, date-time, required: An ISO 8601 date-time string in UTC.
      - `price` QuoteTransferPrice, required: The pricing details of a Transfer.
        - `baseRate` number, double, required: The base rate for the Transfer.
        - `extras` number, double, nullable: The total amount for any extra services added to the Transfer.
        - `nightSupplement` number, double, nullable: The additional charge for night Transfers.
        - `weekdaySupplement` number, double, nullable: The additional charge for weekday Transfers.
        - `totalRate` number, double, required: The total rate for the Transfer, that is, the sum of `baseRate`, `extras`, `nightSupplement`, and `weekdaySupplement`.
      - `subSupplierName` string, nullable: The name of the Sub-Supplier providing the Transfer.
      - `extras` QuoteExtra[], nullable: The list of Extra services added to the Transfer.
        - `id` string, required: The Suntransfers Extra identifier.
        - `name` string, required: The name of the Extra.
        - `translatedName` string, required: The translated name of the Extra.
        - `quantity` integer, required: The quantity of the Extra.
        - `unitRate` number, double, required: The unit rate of the Extra.
        - `notes` string, nullable: Additional notes about the Extra.

## Other responses

- `400`: `400 Bad Request`: The details of the issues found on the request are present in the `detail` property of the response.
- `401`: `401 Unauthorized`: Credentials are likely out of sync. Contact Suntransfers as soon as possible via our official email to synchronize credentials. Attention: DO NOT specify any details about username, password, or authentication method in the response.
- `500`: `500 Internal Server Error`: Suntransfers systems might retry this request later.
- `501`: `501 Not Implemented`: This operation is not supported by the API.

## Changes

- **2026-04-23** (v1) `c61c4e075ff8`: 1 warning, 1 info
  - removed the request property `transfers/items/passengers/childAges`
  - added the new optional request property `transfers/items/passengers/ages`
- **2025-10-24** (v1) `55d59ca4a825`: 1 warning, 1 info
  - removed the request property `transfers/items/passengers/ages`
  - added the new optional request property `transfers/items/passengers/childAges`

[Operation history](https://skmtc.dev/suntransfers/apis/st-spec-suntransfers-supplier-api-specification/changes/v1/quotes/post.md)

---

[API](https://skmtc.dev/suntransfers/apis/st-spec-suntransfers-supplier-api-specification.md) - [All operations](https://skmtc.dev/suntransfers/apis/st-spec-suntransfers-supplier-api-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/suntransfers/apis/st-spec-suntransfers-supplier-api-specification/revisions/ba6e6a567dd2?raw)
