Skip to content

Request a binding price quote

POST
/quotes
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.

X-Session-Token
string

Required when the request carries an Origin header (browser channel)

Media typeapplication/json
object
assetGroupId
required
string format: uuid
pickupDatetime
required
string format: date-time
dropoffDatetime
required
string format: date-time
extras
Array<object>
<= 20 items
object
extraId
required
string format: uuid
quantity
required
integer
>= 1 <= 100
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
}
]
}

Quote created

Media typeapplication/json
object
data
object
quoteId
required
string format: uuid
assetGroupId
required
string format: uuid
pickupDatetime
required
string format: date-time
dropoffDatetime
required
string format: date-time
total
required

Decimal string — the bookable price

string
currency
required
string
breakdown

Line-item pricing (days, rate, extras, tax)

object
expiresAt
required
string format: date-time
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)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Array<object>
object
path
string
message
string
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).

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Array<object>
object
path
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"path": "example",
"message": "example"
}
]
}
}

Resource not found

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Array<object>
object
path
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"path": "example",
"message": "example"
}
]
}
}

No rate configured for the requested period (NO_RATE_AVAILABLE)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Array<object>
object
path
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"path": "example",
"message": "example"
}
]
}
}

Rate limit exceeded (RATE_LIMITED)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Array<object>
object
path
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"path": "example",
"message": "example"
}
]
}
}
Retry-After
integer

Seconds until the window resets

X-RateLimit-Limit
integer
X-RateLimit-Remaining
integer
X-RateLimit-Reset
integer

Unix timestamp (seconds) of the window reset