Status & Jobs
GET
/v1/quotes/:idReturns the quote request, every carrier job with its current state, appetite skips, and results for jobs that have completed.
Request
GET /v1/quotes/qr_01HV...
Authorization: Bearer qs_live_xxxxxResponse 200 OK
{
"success": true,
"data": {
"quoteRequestId": "qr_01HV...",
"externalReference": "0065f00000ABCDE",
"status": "partial",
"linesRequested": ["bop", "wc"],
"deepLink": "https://app.quotesweep.com/quotes/qr_01HV...",
"createdAt": "2026-08-25T14:02:11Z",
"completedAt": "2026-08-25T14:09:52Z",
"jobs": [
{
"jobId": "job_01HV...",
"carrierId": "carrier-a",
"lineOfBusiness": "bop",
"status": "success",
"startedAt": "2026-08-25T14:03:04Z",
"completedAt": "2026-08-25T14:07:31Z",
"durationSeconds": 267,
"retryCount": 0
},
{
"jobId": "job_02HV...",
"carrierId": "carrier-b",
"lineOfBusiness": "wc",
"status": "mfa_waiting",
"startedAt": "2026-08-25T14:03:04Z",
"actionRequired": {
"type": "mfa",
"message": "Carrier sent a verification code to the agent's phone",
"deepLink": "https://app.quotesweep.com/quotes/qr_01HV.../jobs/job_02HV..."
}
},
{
"jobId": "job_03HV...",
"carrierId": "carrier-c",
"lineOfBusiness": "bop",
"status": "failed",
"errorType": "declined_appetite",
"errorMessage": "Carrier declined: class of business outside appetite",
"completedAt": "2026-08-25T14:05:12Z"
}
],
"skippedCarriers": [
{
"carrierId": "carrier-d",
"reasons": [{ "line": "wc", "reason": "State not written by this carrier" }]
}
],
"partialSkips": [
{
"carrierId": "carrier-a",
"skippedLines": [{ "line": "wc", "reason": "Payroll exceeds carrier maximum" }]
}
],
"results": []
}
}Request Status
| Value | Description |
|---|
Job Status
One job exists per carrier per line of business.
| Value | Description |
|---|
Appetite Skips
skippedCarriers lists carriers skipped entirely; partialSkips lists carriers quoting some lines but not others. Both carry reasons. These are not failures — the carrier was never dispatched because the risk falls outside its appetite. Display them so agents understand why a selected carrier produced no result.
Polling cadence
Poll every 5 to 10 seconds while a request is in_progress. Runs commonly take several minutes, so prefer webhooks where your platform supports receiving them, and treat polling as the fallback.