Skip to content

Responses and errors

Every response is JSON.

The draft was created.

{
"quoteId": "b1e7c2d4-…",
"status": "pending_review",
"clientRef": "b21e47d0-…",
"reviewLink": {
"sent": true,
"expiresInHours": 72,
"sms": { "sent": true, "expiresInHours": 72 },
"email": { "sent": true, "expiresInHours": 72 }
},
"warnings": [],
"missingCriticalFields": []
}
Field Meaning
quoteId Credify’s id for the application.
status pending_review until the customer confirms.
clientRef This application’s reference in your reporting. Absent only when warnings contains attribution_failed; retrying the same call.id repairs it.
reviewLink.sent true when either channel delivered the link.
reviewLink.sms / reviewLink.email Per-channel results. A channel that didn’t send carries a reason.
reviewLink.reason Set only when nothing was sent at all.
missingCriticalFields Any of first_name, last_name, email, phone, postal_code, product you didn’t send.
warnings Non-fatal notes. See below.
reason Channel Meaning
test_mode both The request used a test key, which never contacts the customer.
no_sms_consent sms consent.sms_review_link was not true.
no_phone sms No usable 10-digit phone.
no_email email No email address.
already_sent either That channel was already used for this application.
send_failed either The message provider rejected it. The draft is unaffected; use the resend action.
already_processed both An idempotent retry. Nothing was sent again.
Warning Meaning
unsupported_state:<state> The address is outside TX and NJ.
invalid_phone_dropped The phone was not 10 digits.
invalid_ssn_dropped / invalid_ssn_dropped:driver An SSN was not 9 digits.
invalid_date_dropped:<field> A date could not be read.
invalid_boolean_dropped:<field> / invalid_number_dropped:<field> A yes/no or numeric field could not be read.
incomplete_violation_dropped / incomplete_accident_dropped / incomplete_loss_dropped A driver history entry was missing a required field and was dropped.
vehicles_overflow:<sent>_of_<reported> / drivers_overflow:… vehicle_count or driver_count is higher than the entries you sent.
unrated_without_prerequisite:<field> A detail field was sent without the companion value it depends on, so it won’t be rated.
persist_failed Some fields could not be saved. The draft exists; the customer completes them on review.
attribution_failed The draft exists but could not be credited yet. Retry with the same call.id.

A retry of a call.id you already sent.

{
"quoteId": "b1e7c2d4-…",
"status": "pending_review",
"idempotent": true,
"clientRef": "b21e47d0-…",
"reviewLink": {
"sent": false,
"reason": "already_processed",
"sms": { "sent": false, "reason": "already_processed" },
"email": { "sent": false, "reason": "already_processed" }
},
"warnings": [],
"missingCriticalFields": []
}

Errors have the shape { "error": "<message>" }.

Status When Retry?
400 The body is not valid JSON: Request body must be valid JSON. Fix the body.
401 Missing, unknown, revoked or expired key. See authentication errors. Fix the key.
403 The key may not submit applications, or the account is not active. Fix the key.
422 The body failed validation, or is larger than 256 KB. Fix the body.
429 Rate limited. Wait for the Retry-After header. Yes, same call.id.
500 Unexpected error: Failed to process AI intake request. Yes, same call.id.

A validation 422 lists each problem:

{
"error": "Invalid intake payload",
"fields": [{ "field": "call.id", "message": "'call.id' is required (idempotency key)" }]
}

Validation covers call.id (required, at most 200 characters) and product (Home, Auto or Bundle). Everything else is lenient: see It’s a draft.

When a link has expired or you now have a phone number, send a fresh link without creating a new draft:

{ "action": "resend_review_link", "callId": "crm-application-10481" }

Send callId (the call.id you submitted) or quoteId. The link is sent on every channel the application has a contact for.

Status Meaning
200 Sent: { "quoteId": "…", "reviewLink": { … } }. With a test key, reviewLink.reason is test_mode and nothing is sent.
400 Neither callId nor quoteId was given.
404 No application of yours matches.
409 The customer has already confirmed the application.
422 Nothing could be sent: no phone or email on file, or every send failed. reviewLink says why.