Skip to content

Quotes

POST /quotes

Request a drive-away quote from a dealership.

Body Parameters

FieldTypeRequiredDescription
dealershipIdUUIDYesTarget dealership
globalCarIdUUIDNo*Vehicle ID (from inventory search)
modelstringNo*Vehicle model name (alternative to globalCarId)
versionstringNoVehicle version/variant (used with model)
clientNamestringYesContact name for the quote
clientEmailstringYesContact email (valid format)
clientPhonestringNoContact phone number
postcodestringNoAustralian postcode (enables auto rego calculation)
quantityintegerNoNumber of vehicles (fleet context)
accessoryIdsUUID[]NoDealer accessory IDs to include
notesstringNoFree text notes for the dealer
callbackUrlstringNoWebhook 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

ParamTypeDefaultDescription
statusstringFilter by status: pending, sent, draft
limitinteger20Results per page (max 100)
offsetinteger0Pagination 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

ParamTypeDescription
idUUIDQuote 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}`);

QuoteFox API Documentation