Quotes
POST /quotes
Request a drive-away quote from a dealership.
Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
dealershipId | UUID | Yes | Target dealership |
globalCarId | UUID | No* | Vehicle ID (from inventory search) |
model | string | No* | Vehicle model name (alternative to globalCarId) |
version | string | No | Vehicle version/variant (used with model) |
clientName | string | Yes | Contact name for the quote |
clientEmail | string | Yes | Contact email (valid format) |
clientPhone | string | No | Contact phone number |
postcode | string | No | Australian postcode (enables auto rego calculation) |
quantity | integer | No | Number of vehicles (fleet context) |
accessoryIds | UUID[] | No | Dealer accessory IDs to include |
notes | string | No | Free text notes for the dealer |
callbackUrl | string | No | Webhook URL — POST when quote is completed |
*Either globalCarId or model is required. Using globalCarId is recommended for precision.
Example Request
bash
curl -X POST https://app.quotefox.au/api/v1/quotes \
-H "Authorization: Bearer qfx_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"dealershipId": "550e8400-e29b-41d4-a716-446655440000",
"globalCarId": "car-uuid-1",
"clientName": "Fleet Corp Pty Ltd",
"clientEmail": "fleet@corp.com.au",
"clientPhone": "+61400000000",
"postcode": "3000",
"callbackUrl": "https://your-system.com/webhooks/quotefox"
}'Response — Auto-Respond
Enterprise dealers with auto-respond enabled return the completed quote immediately:
json
{
"status": "completed",
"quoteId": "quote-uuid",
"dealership": {
"name": "ABC Motors Melbourne",
"email": "sales@abcmotors.com.au"
},
"vehicle": {
"model": "MG ZS",
"version": "Excite 1.5L Auto",
"imageUrl": "https://..."
},
"pricing": {
"dealerDelivery": 1999,
"accessories": [
{ "name": "Tinted Windows", "price": 450 }
],
"totalDriveAway": 34744
},
"createdAt": "2026-03-17T10:30:00Z"
}Response — Pending
Non-auto-respond dealers create a pending quote for manual review:
json
{
"status": "pending",
"quoteId": "quote-uuid",
"message": "Quote request received. The dealer will review and respond.",
"createdAt": "2026-03-17T10:30:00Z"
}When the dealer completes the quote, a webhook is delivered to callbackUrl (if provided). See Webhooks.
GET /quotes
List your FMO's quote requests.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
status | string | — | Filter by status: pending, sent, draft |
limit | integer | 20 | Results per page (max 100) |
offset | integer | 0 | Pagination offset |
Example Request
bash
curl -H "Authorization: Bearer qfx_your_api_key" \
"https://app.quotefox.au/api/v1/quotes?status=pending"Response
json
{
"quotes": [
{
"id": "quote-uuid-1",
"status": "pending",
"clientName": "Fleet Corp Pty Ltd",
"vehicle": "MG ZS Excite 1.5L Auto",
"dealership": "ABC Motors Melbourne",
"createdAt": "2026-03-17T10:30:00Z"
},
{
"id": "quote-uuid-2",
"status": "sent",
"clientName": "Fleet Corp Pty Ltd",
"vehicle": "MG HS Essence",
"dealership": "Sydney Auto Group",
"createdAt": "2026-03-16T14:00:00Z"
}
],
"total": 2,
"limit": 20,
"offset": 0
}GET /quotes/:id
Get full details of a specific quote.
Path Parameters
| Param | Type | Description |
|---|---|---|
id | UUID | Quote ID |
Example Request
bash
curl -H "Authorization: Bearer qfx_your_api_key" \
"https://app.quotefox.au/api/v1/quotes/quote-uuid-1"Response
Returns the full quote object, including pricing if the quote is completed/sent.
json
{
"id": "quote-uuid-1",
"status": "sent",
"clientName": "Fleet Corp Pty Ltd",
"clientEmail": "fleet@corp.com.au",
"dealership": {
"name": "ABC Motors Melbourne",
"email": "sales@abcmotors.com.au"
},
"vehicle": {
"model": "MG ZS",
"version": "Excite 1.5L Auto",
"imageUrl": "https://..."
},
"pricing": {
"totalDriveAway": 34744,
"lineItems": {
"accessories": [
{ "name": "Tinted Windows", "price": 450 }
]
}
},
"createdAt": "2026-03-17T10:30:00Z",
"sentAt": "2026-03-17T11:15:00Z"
}Code Examples
python
import requests
headers = {
"Authorization": "Bearer qfx_your_api_key",
"Content-Type": "application/json",
}
BASE = "https://app.quotefox.au/api/v1"
# Request a quote
response = requests.post(f"{BASE}/quotes", headers=headers, json={
"dealershipId": "dealer-uuid",
"model": "MG ZS",
"version": "Excite 1.5L Auto",
"clientName": "Fleet Corp Pty Ltd",
"clientEmail": "fleet@corp.com.au",
"callbackUrl": "https://your-system.com/webhooks/quotefox",
})
quote = response.json()
print(f"Quote {quote['quoteId']} — Status: {quote['status']}")
# Check quote status later
detail = requests.get(
f"{BASE}/quotes/{quote['quoteId']}",
headers=headers
).json()javascript
const headers = {
Authorization: "Bearer qfx_your_api_key",
"Content-Type": "application/json",
};
const BASE = "https://app.quotefox.au/api/v1";
// Request a quote
const response = await fetch(`${BASE}/quotes`, {
method: "POST",
headers,
body: JSON.stringify({
dealershipId: "dealer-uuid",
model: "MG ZS",
version: "Excite 1.5L Auto",
clientName: "Fleet Corp Pty Ltd",
clientEmail: "fleet@corp.com.au",
callbackUrl: "https://your-system.com/webhooks/quotefox",
}),
});
const quote = await response.json();
console.log(`Quote ${quote.quoteId} — Status: ${quote.status}`);