Errors
Read an error response and decide whether to correct, retry, or contact support.
FincheckEngine uses standard HTTP status codes. A 2xx status means the request succeeded, 4xx means something in the request needs to change, and 5xx means something went wrong on Fincheck's side. The status is the error code: response bodies carry a message, not a separate code.
Status codes
Error responses
Field validation
{
"message": "Validation failed.",
"errors": {
"id_number": ["must be a valid RSA ID number"],
"gross_income": ["must be an integer"]
}
}
Each key in errors is a JSON field you sent, with one or more messages. Read the keys as they are; they match your request fields exactly.
Missing intent fields
POST /offer can require extra fields for the chosen intent:
{
"message": "intent schema validation failed",
"missing_fields": ["gross_income", "loan_amount_required"]
}
Add the fields in missing_fields and send the request again. GET /api/v2/intent lists each intent's required fields.
Business rules
{
"message": "intent is not accepting leads"
}
For accept-specific messages, see Accepting an Offer.
Authentication
{
"error": "unauthorized"
}
An expired key returns {"error": "api key expired"} instead. See Authentication for what to check.
Retrying safely
- Correct
400,401,403,404, and422responses before sending again. Retrying them unchanged gives the same result. - Retry
500and503with exponential backoff, for example after 1, 2, 4, and 8 seconds, and then stop. - Resending a
POST /leadfor the same applicant is safe: inside the deduplication window it returns the existing leadid. - Never repeat
POST /acceptafter a timeout. Check the lead withGET /lead/{hashid}first. - For batches, poll the existing
batch_idinstead of uploading the file again.
Contacting support
Email support@finch-technologies.com with:
- the environment and endpoint;
- the HTTP status and response body;
- the lead id or batch id; and
- the time of the request.
Never send your full API key or unredacted applicant data.