Skip to content

Get a single-unit partner price quote across a scent's active variants

GET
/api/v1/scent/catalog/scents/{id}/quote
curl --request GET \
--url https://api-omni.linra.net/api/v1/scent/catalog/scents/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/quote \
--header 'Authorization: Bearer <token>'
id
required
string format: uuid

A per-variant price preview using the caller’s own commission/margin terms.

Media typeapplication/json
object
state
required
string
payload
required
details
object
payload
required
object
scentId
string format: uuid
name
string
variants
Array<object>

A partner-specific, commission/VAT-aware price for one variant. Prices are recomputed on every read — never cached or locked (unlike a cart’s price lock, see the price-locks guide).

object
variantId
string format: uuid
sizeMl
integer
sku
string
listPrice

The catalog list price — the base amount before any partner-specific overlay.

number format: decimal
amount

What the partner actually pays, after their discount/commission overlay.

number format: decimal
partnerCommission

The raw resolver commission for every pricing mode — display/audit only.

number format: decimal
currency
string
goodsVatAmount
number format: decimal
totalWithVat
number format: decimal
rrp

Recommended retail price — populated only for a Wholesale-mode quote.

number format: decimal
nullable
availability
string
Allowed values: Available Limited Unavailable
availableQuantity

Populated only when availability is Limited.

integer
nullable
commissionVatAmount

Populated only for a commission-mode (Retail) quote.

number format: decimal
nullable
netAfterCommission
number format: decimal
nullable
pricedAt
string format: date-time
marketing

Additive, purely presentational marketing data — never affects what you pay or what settlement computes. Appears ONLY when your account has the marketing-block feature enabled (ask your account manager if you don’t see it); when it’s off, the marketing key is entirely absent from the response, not merely present with empty fields.

object
currentPrice

The catalog’s current resolved price for this variant — for display alongside compareAtPrice, not necessarily identical to the partner-specific price shown elsewhere in this response.

number format: decimal
compareAtPrice

A “was” price to show as a strike-through, populated ONLY when there is a genuine reason to show one (a real historical price drop, or an account-level override) — never a fake or stale discount. Null means show no strike-through at all.

number format: decimal
nullable
discountPercent

Derived from currentPrice vs compareAtPrice. Null exactly when compareAtPrice is null. Currency-free (a ratio) — no display-currency equivalent.

number format: decimal
nullable
badges
Array<string>
Allowed values: LIMITED BACK_IN_STOCK NEW_ARRIVAL BEST_SELLER SAMPLE_AVAILABLE
currentPriceDisplay
number
nullable
compareAtPriceDisplay
number
nullable
listPriceDisplay
number
nullable
amountDisplay
number
nullable
partnerCommissionDisplay
number
nullable
goodsVatAmountDisplay
number
nullable
totalWithVatDisplay
number
nullable
rrpDisplay
number
nullable
commissionVatAmountDisplay
number
nullable
netAfterCommissionDisplay
number
nullable
displayCurrency
string
nullable
rate
number
nullable
Example
{
"state": "SUCCESS",
"payload": {
"variants": [
{
"currency": "SAR",
"availability": "Available",
"marketing": {
"badges": [
"LIMITED"
]
}
}
]
}
}

Unknown scent.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}
Retry-After
integer

Seconds to wait before retrying.