Skip to content

Create a quick offer

POST
/api/offers/quick
curl --request POST \
--url https://example.com/api/offers/quick \
--header 'Content-Type: application/json' \
--cookie better-auth.session_token=<better-auth.session_token> \
--data '{ "customerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "customerName": "example", "items": [ { "productId": "example", "productName": "example", "productSku": "example", "quantity": 1 } ] }'

Manual product selections to turn into a draft offer.

Media type application/json
object
customerId
string | null format: uuid
customerName
string
items
required
Array<object>
>= 1 items

Manual product selection used to create a quick offer.

object
productId
required
string
productName
string
productSku
string
quantity
required
integer
> 0
Example generated
{
"customerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"customerName": "example",
"items": [
{
"productId": "example",
"productName": "example",
"productSku": "example",
"quantity": 1
}
]
}

A newly persisted manual offer.

Media type application/json
object
offer
required

Persisted offer shape returned by creation endpoints.

object
id
required
string
customerId
required
string | null
requestId
required
string | null
userId
required
string | null
name
required
string
status
required
string
Allowed values: draft accepted rejected imported
currency
required
string
discountPercent
required
number
<= 100
discountAmount
required
number
notes
required
Array<string>
unmatched
required
Array<string>
items
required
Array<object>

A product line item included in an offer.

object
id
string
offerId
string
productId
required
string | null
name
required
string
description
required
string
quantity
required
number
> 0
unitPriceNet
required
number
vatRate
required
number
unitGrossPrice
required
number
totalNet
required
number
totalGross
required
number
requestItem
required
string
rationale
required
string
matchSource
required
string | null
Allowed values: exact semantic manual
matchScore
required
number | null
position
required
integer
product

Product snapshot used to render an offer line without frontend fixture lookup.

object
id
required
string
sku
string
name
required
string
description
string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
customerName
string | null
clientRequest
string | null
userName
string | null
Example
{
"offer": {
"id": "offer-demo-001",
"status": "draft",
"items": [
{
"matchSource": "exact"
}
]
}
}

No product selections were provided.

Media type application/json

Standard API error payload.

object
error
required
object
code
required
string
message
required
string
issues
Array<string>
Example generated
{
"error": {
"code": "example",
"message": "example",
"issues": [
"example"
]
}
}

No valid Better Auth session was present.

Media type application/json

Returned when no valid Better Auth session is present.

object
error
required
string
Example generated
{
"error": "example"
}