CalryOTA Docs
Quote

Create a quote

Creates a quote for a listing with the specified parameters

POST
/api/v1/quote

Authorization

x-calry-api-key
x-calry-api-key<token>

In: header

Query Parameters

displayCurrency?string

Currency to display pricing in (ISO 4217)

Header Parameters

x-calry-tenant-id?string

Optional tenant ID to specify which tenant to operate as. Controls access to listings and affects quote creation. If not provided, the default tenant will be used.

Request Body

application/json

Quote details including listing ID, dates, and number of guests

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/quote" \  -H "Content-Type: application/json" \  -d '{    "listingID": "123e4567-e89b-12d3-a456-426614174000",    "checkInDate": "2025-06-01",    "checkOutDate": "2025-06-05",    "guests": 2  }'
{
  "listingID": "123e4567-e89b-12d3-a456-426614174000",
  "checkInDate": "2025-12-15",
  "checkOutDate": "2025-12-20",
  "guests": 2,
  "currency": "USD",
  "totalPrice": 485,
  "priceBeforeTaxes": 400,
  "components": {
    "basePrice": {
      "amount": 393.85,
      "breakdown": [
        {
          "name": "Base rate",
          "description": "Base rate",
          "price": 393.85
        }
      ]
    },
    "fees": {
      "amount": 0,
      "breakdown": []
    },
    "taxes": {
      "amount": 90.42,
      "breakdown": [
        {
          "name": "City / Tourism tax",
          "description": "City / Tourism tax",
          "price": 10.36
        },
        {
          "name": "Hotel tax",
          "description": "Hotel tax",
          "price": 10.36
        },
        {
          "name": "Lodging tax",
          "description": "Lodging tax",
          "price": 10.36
        },
        {
          "name": "Occupancy tax",
          "description": "Occupancy tax",
          "price": 10.36
        },
        {
          "name": "Other taxes",
          "description": "Other taxes",
          "price": 10.36
        },
        {
          "name": "Room tax",
          "description": "Room tax",
          "price": 10.36
        },
        {
          "name": "Sales tax",
          "description": "Sales tax",
          "price": 9.42
        },
        {
          "name": "VAT / GST",
          "description": "VAT / GST",
          "price": 18.84
        }
      ]
    },
    "discounts": {
      "amount": 0,
      "breakdown": []
    }
  },
  "priceModifications": {
    "defaultDiscount": {
      "percentage": 10,
      "value": 50
    },
    "markup": {
      "percentage": 10,
      "value": 50
    },
    "promotionDiscount": {
      "percentage": 10,
      "value": 50,
      "promotionID": "123e4567-e89b-12d3-a456-426614174000",
      "promotionName": "Summer Special"
    }
  },
  "deposit": 200,
  "originalTotalPrice": 600,
  "originalBasePrice": {
    "amount": 500,
    "breakdown": [
      {
        "name": "Nightly Rate",
        "description": "Price per night",
        "price": 100,
        "id": "nightly-rate",
        "type": "rate"
      },
      {
        "name": "Weekend Rate",
        "description": "Weekend premium",
        "price": 50,
        "id": "weekend-rate",
        "type": "rate"
      }
    ]
  },
  "promotionID": "123e4567-e89b-12d3-a456-426614174000",
  "promotionName": "Summer Special",
  "quoteMetadata": {
    "quoteId": "675893fc754a15b1234cf325",
    "ratePlanId": "abc123def456"
  }
}
Empty
{
  "timestamp": "2025-03-05T11:45:49.631Z",
  "path": "<URL_PATH>",
  "message": "Authentication failed",
  "details": []
}
Empty