Request a binding price quote
const url = 'https://demo.yourapp.com/api/v1/quotes';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"assetGroupId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","pickupDatetime":"2026-04-15T12:00:00Z","dropoffDatetime":"2026-04-15T12:00:00Z","extras":[{"extraId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","quantity":1}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://demo.yourapp.com/api/v1/quotes \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "assetGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "pickupDatetime": "2026-04-15T12:00:00Z", "dropoffDatetime": "2026-04-15T12:00:00Z", "extras": [ { "extraId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1 } ] }'Prices the request with the tenant’s pricing engine and returns a
binding offer valid for 30 minutes. Browser-channel requests must
include X-Session-Token. Requires the quotes:create scope.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Required when the request carries an Origin header (browser channel)
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Examplegenerated
{ "assetGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "pickupDatetime": "2026-04-15T12:00:00Z", "dropoffDatetime": "2026-04-15T12:00:00Z", "extras": [ { "extraId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1 } ]}Responses
Section titled “Responses”Quote created
object
object
Decimal string — the bookable price
Line-item pricing (days, rate, extras, tax)
object
Examplegenerated
{ "data": { "quoteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "assetGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "pickupDatetime": "2026-04-15T12:00:00Z", "dropoffDatetime": "2026-04-15T12:00:00Z", "total": "example", "currency": "example", "breakdown": {}, "expiresAt": "2026-04-15T12:00:00Z" }}Request validation failed (VALIDATION_ERROR)
object
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "path": "example", "message": "example" } ] }}Missing/invalid/revoked/expired API key (API_KEY_REQUIRED, API_KEY_INVALID, API_KEY_REVOKED, API_KEY_EXPIRED) or missing/invalid session token on the browser channel (SESSION_REQUIRED, SESSION_INVALID, SESSION_EXPIRED).
object
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "path": "example", "message": "example" } ] }}Resource not found
object
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "path": "example", "message": "example" } ] }}No rate configured for the requested period (NO_RATE_AVAILABLE)
object
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "path": "example", "message": "example" } ] }}Rate limit exceeded (RATE_LIMITED)
object
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "path": "example", "message": "example" } ] }}Headers
Section titled “Headers”Seconds until the window resets
Unix timestamp (seconds) of the window reset