API
Our REST API lets your systems create inspections, fetch results and keep your fleet in sync. Full request and response details, with code samples in several languages, are in our API documentation.
Full API documentation by region. Open the documentation for the region where your ClearQuote account is hosted. Not sure which one? Email support@clearquote.io.
API access uses your ClearQuote account. Call Login to get a token for all other calls. For integrations that run unattended, email us for a dedicated API user so the integration is not tied to a person's login.
Inspections
- POSTCreate a Vehicle Inspection QuoteSend a vehicle's data and images to start an inspection.
- POSTAdd Images to existing QuoteAdd more images to an inspection.
- POSTDelete Images in existing QuoteRemove images from an inspection.
- GETImage Status of existing QuoteCheck the processing status of an inspection's images.
- POSTCreate self-inspection WeblinkGenerate a link so someone can complete an inspection in the browser. Links expire.
Results
- GETQuote OutputThe full result of one inspection, including damage, checklist answers, status and photo location.
- POSTQuote OutputFetch inspection results by request body.
- POSTGet PDFThe PDF report for an inspection.
- POSTEdit/Update Inspection ChecklistEdit or update the checklist on an inspection.
Fleet
- POSTCreate VehicleAdd a vehicle to your ClearQuote fleet.
- POSTUpdate Vehicle DataUpdate a vehicle's details.
- POSTDe-fleet VehicleRemove a vehicle that has left your fleet.
- POSTFleet Inspection StatusSend a list of vehicles and a date range; see which were inspected and their latest inspection.
Access
- POSTLoginReturns the token used on every other call.
Pick your region from the API documentation links above.
Common use cases
Call Fleet Inspection Status once a day with your vehicle list. Vehicles with no inspection for the day are missed checks.
When you receive the inspectionCompletion webhook, call Quote Output with the Quote ID to get every question and answer.
When newDamageFound arrives, call Quote Output or Get PDF for the full inspection.
Use Create Vehicle, Update Vehicle Data and De-fleet Vehicle as your fleet changes. There is no endpoint to list all vehicles, so keep the master list on your side.
Webhooks
When something happens in an inspection, we send a POST request with a JSON body to an HTTPS address you choose. Webhooks are push only: your system just receives requests, so no ClearQuote login is needed on your side.
Getting connected
- Set up an HTTPS endpoint that replies with a
2xxwithin 10 seconds. - Fill in the webhook form with the events you want and where to send them.
- We register it and send a
connectionTestevent to check we can reach you. - Once confirmed, events go live automatically.
Events
Select an event to see when it is sent and what it contains. Examples show only eventData; every event also carries the common fields.
Inspection submittedinspectionSubmittedA driver submits an inspection.
- When it is sent
- As soon as the inspection is submitted from the app, before processing finishes.
- Typical use
- Keep a live log of who inspected which vehicle and when.
- Good to know
- Results may not be ready yet. Wait for
inspectionCompletionbefore fetching the full inspection.
"eventData": {
"inspectionType": "Standard inspection"
}Inspection completedinspectionCompletionProcessing has finished and results are ready.
- When it is sent
- When ClearQuote has finished processing the inspection.
- Typical use
- The trigger to call Quote Output or Get PDF for the full result.
"eventData": {
"status": "estimationcompleted"
}New damage foundnewDamageFoundDamage that was not present in the vehicle's previous inspection.
- When it is sent
- When an inspection finds damage that was not in the most recent previous inspection of the same vehicle.
- When it is not sent
- On a vehicle's first inspection, because there is nothing earlier to compare with.
- Typical use
- Alert your fleet or workshop team, or open a repair job.
"eventData": {
"hasNewDamage": true,
"newDamages": [
{ "panel": "Bonnet", "type": "Dent" }
]
}Checklist alertchecklistAlertOne or more checklist items fail.
- When it is sent
- When the driver's checklist answers include at least one failed item.
- Typical use
- Route defects to the right person straight away.
"eventData": {
"data": {
"failedItems": [
{ "itemName": "Tyres", "expected": "OK", "actual": "Not OK" }
]
}
}Compliance alertcomplianceAlertDamage or a rule breach in a compliance inspection.
- When it is sent
- For compliance inspections, when damage or a safety audit issue such as a mileage limit breach is found.
- Typical use
- Compliance reporting and follow up.
"eventData": {
"damages": [ { "panel": "Rear door", "type": "Scratch" } ],
"safetyAuditIssues": [ ]
}Compliance checklist alertcomplianceChecklistAlertChecklist failures in a compliance inspection.
- When it is sent
- For compliance inspections, when checklist items fail.
- Format
- Same shape as
checklistAlert.
Estimate readyestimatesEditedA repair estimate is ready or updated.
- When it is sent
- When a repair estimate is created or edited for an inspection.
- Typical use
- Feed repair costs into your maintenance or finance system.
"eventData": {
"displayTotal": "450.00"
}Manual validation completedmanualA reviewer finishes validating an inspection.
- When it is sent
- When manual validation of an inspection is completed.
- Typical use
- Know when a reviewed result is final.
"eventData": {
"validationCompletedAt": "2026-06-19T15:02:00.000Z"
}Common fields
Every event has the same outer structure. Only eventData changes by event.
{
"eventId": "cq_evt_550e8400-...",
"timestamp": "2026-06-19T14:30:00.000Z",
"eventType": "inspectionSubmitted",
"dealerCode": "UK04",
"inspectionId": "Q-abc123",
"detailsLink": "https://...",
"vehicleDetails": {
"vin": "WVWZZZ3CZWE123456",
"registrationNumber": "AB12 CDE",
"make": "Volkswagen",
"model": "Golf",
"year": 2022
},
"dealerName": "Your account name",
"driverName": "Inspector name or null",
"pdfLink": "https://...",
"eventData": { }
}
eventId- Unique per event. Use it to skip duplicates.
timestamp- Always UTC, ISO 8601.
dealerCode- Your ClearQuote account code, confirmed during setup.
inspectionId- The Quote ID. Use it with the API to fetch the full inspection.
pdfLink- Present once a PDF report has been generated.
Security
Live events include a signature header, and an auth token header if you chose one:
x-api-key- An auth token we generate for you, if you choose one in the form.
x-clearquote-signature- A hex encoded HMAC SHA256 of the exact request body, signed with a signing secret we generate for you. No prefix.
Checking the signature is optional but recommended. Compute it from the raw body exactly as received, before parsing the JSON.
const crypto = require('crypto');
function isValid(rawBody, signature, secret) {
const expected = crypto.createHmac('sha256', secret)
.update(rawBody).digest('hex');
if (!signature || signature.length !== expected.length) return false;
return crypto.timingSafeEqual(
Buffer.from(expected), Buffer.from(signature));
}import hmac, hashlib
def is_valid(raw_body: bytes, signature: str,
secret: str) -> bool:
expected = hmac.new(secret.encode(), raw_body,
hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature or "")How we share your credentials: once your endpoint is registered, we email your auth token and signing secret only to the contacts on your ClearQuote account. Store it securely and do not forward it.
Delivery and retries
If your endpoint times out, or returns 5xx or 429, we retry after 1 minute, 5 minutes and 30 minutes. Other 4xx responses are not retried. Because of retries, an event can arrive more than once, so check eventId before processing.
No code options
Prefer not to build anything? These options need no development on your side.
Slack and Discord alerts
We post the alerts you choose, such as new damage or failed checks, into your team's Slack or Discord channel.
- Create an incoming webhook for the channel in Slack or Discord.
- Fill in the webhook form with the events you want and the channel's webhook URL.
- We set it up and confirm once alerts are flowing. For more than one channel, submit the form once for each.
FAQ
Do we need a ClearQuote account?
Yes. Every integration is linked to your ClearQuote account. If you are not a customer yet, contact our team.
Do we need ClearQuote credentials to receive webhooks?
No. We send requests to your endpoint. Credentials are only needed for the API.
Why did a new vehicle not trigger a new damage alert?
A vehicle's first inspection is the baseline. From the second inspection onwards, each one is compared with the most recent previous inspection.
Can we test before going live?
Yes. Mention it in your request and we will register a test endpoint first so you can see events arrive end to end.
Which timezone are timestamps in?
UTC, in ISO 8601 format.
Request webhook setup
Choose your events and where to send them: your own HTTPS endpoint, Slack or Discord. Our team is notified as soon as you submit, and we confirm once your endpoint is registered.
For API access or help with an existing integration, email support@clearquote.io.
- The events you want to receive
- Your HTTPS endpoint, or a Slack or Discord webhook URL
Never enter passwords in the form. We email your auth token and signing secret separately once your endpoint is registered.