HTTP status codes
| Code | Meaning |
|---|
200 | Request processed. Check the status field — a lead can be accepted or rejected at this level. |
400 | Malformed request — missing required fields or invalid values. See details for field-level errors. |
401 | API Key missing or invalid. |
422 | Semantically invalid data — consents not accepted, product not found, etc. |
500 | Internal server error. Contact TECHEA support if this persists. |
Error response body
{
"error": "validation_error",
"message": "Request body validation failed",
"details": [
{ "field": "product_data.loan_amount", "issue": "must be between 500 and 75000" }
]
}
The details array is only populated on 400 responses.
Rejection reasons
A 200 response with status: rejected includes a rejection_reason:
| Reason | Description |
|---|
customer_already_exists | A customer with this email is already in the system |
duplicate_submission | This customer was submitted too recently |
eligibility_failed | Customer does not meet eligibility criteria |
age_restriction | Customer’s age is outside the accepted range |
income_insufficient | Customer’s declared income is below the minimum threshold |
geographic_restriction | Customer’s location is not supported |
no_matching_advertisers | No active advertisers match this customer’s profile |
consents_missing | Required consents (terms, privacy_policy) were not accepted |
invalid_product | Product not found or not active |
blacklisted | Customer is on the internal blacklist |
fraud_suspected | Fraud signals detected in the submission |
A rejected response is a valid business outcome, not an API error — the HTTP status is still 200. Always check the status field, not just the HTTP code.