Submit a lead
https://api.ziplend.com/leadsCreates a lead from the fields below. Required: firstName, lastName, email, phone, leadSource. Everything else is optional; send what you have.
The reply carries Ziplend's leadId for the record. Keep it — it is the reference for any later question about the lead.
Authentication
The apikey header — see Obtaining authentication.
Request body
A JSON object. Required: firstName, lastName, email, phone, leadSource. Everything else is optional.
Request control
| Field | Type | Description |
|---|---|---|
test |
boolean | Mark this submission as a test. It is validated, logged and answered like a real one. |
externalId |
string(255) | Your own identifier for this lead, if you have one. |
leadSource required |
string(255) | The source label for this lead, as agreed with Ziplend. A label not enabled for your key is refused (422). |
Borrower
| Field | Type | Description |
|---|---|---|
firstName required |
string(40) | |
lastName required |
string(80) | |
middleName |
string(40) | |
email required |
||
phone required |
string | Primary phone. Any format; must contain 10 digits. 10 digits, any format |
alternatePhone |
string | A second number, if collected. 10 digits, any format |
dateOfBirth |
date | YYYY-MM-DD |
ssn |
string | |
preferredLanguage |
string | englishspanishchinesekoreantagalogvietnamese |
employmentStatus |
string | employedselfEmployednotEmployed |
jobTitle |
string(128) | |
employerName |
string(40) | |
lengthOfEmployment |
string(255) | Free text, e.g. "4 years". |
monthlyIncome |
number | Gross monthly income before taxes, in dollars. |
creditRating |
string | The borrower's own assessment. excellentgoodfairpoor |
creditScore |
integer | 300–850 |
militaryStatus |
string |
activeDutyveteranreserveOrNationalGuardnone |
Borrower residence
Send the complete address or none of it — street, city, state and ZIP together. A partial address is refused.
| Field | Type | Description |
|---|---|---|
residenceStreet |
string(255) | The borrower's home address, when it is not the subject property. |
residenceCity |
string(40) | |
residenceState |
string | two-letter state code |
residenceZip |
string | 5 digits |
residenceIsProperty |
boolean | True when the borrower lives in the subject property. |
Co-borrower
| Field | Type | Description |
|---|---|---|
coBorrowerFirstName |
string(40) | |
coBorrowerLastName |
string(80) | |
coBorrowerMiddleName |
string(40) | |
coBorrowerEmail |
||
coBorrowerPhone |
string | 10 digits, any format |
coBorrowerAlternatePhone |
string | 10 digits, any format |
coBorrowerDateOfBirth |
date | YYYY-MM-DD |
coBorrowerSsn |
string | |
coBorrowerMonthlyIncome |
number | |
coBorrowerEmploymentStatus |
string | employedselfEmployednotEmployed |
coBorrowerJobTitle |
string(128) | |
coBorrowerEmployerName |
string(80) | |
coBorrowerLengthOfEmployment |
string(255) | |
coBorrowerMilitaryStatus |
string | activeDutyveteranreserveOrNationalGuardnone |
coBorrowerPreferredLanguage |
string | englishspanishchinesekoreantagalogvietnamese |
Co-borrower residence
Send the complete address or none of it — street, city, state and ZIP together. A partial address is refused.
| Field | Type | Description |
|---|---|---|
coBorrowerResidenceStreet |
string(255) | The co-borrower's home address, when it is not the subject property. |
coBorrowerResidenceCity |
string(40) | |
coBorrowerResidenceState |
string | two-letter state code |
coBorrowerResidenceZip |
string | 5 digits |
coBorrowerResidenceIsProperty |
boolean |
Subject property
Send the complete address or none of it — street, city, state and ZIP together. A partial address is refused.
| Field | Type | Description |
|---|---|---|
subjectPropertyStreet |
string(255) | |
subjectPropertyCity |
string(40) | |
subjectPropertyState |
string | Two-letter state code. two-letter state code |
subjectPropertyZip |
string | 5 digits |
subjectPropertyCounty |
string(80) | |
subjectPropertyType |
string | singleFamilyDetachedsingleFamilyAttachedtownhousepuddetachedCondositeCondocondoUnder5Storiescondo5To8StoriescondoOver8StoriescondotelcoopUnder5Storiescoop5To8StoriescoopOver8StoriestwoUnitthreeUnitfourUnitfiveUnitsixUnitsevenUniteightUnitnineUnittenUnitmanufacturedSingleWidemanufacturedDoubleWidemixedUsevacantLot |
subjectPropertyOccupancy |
string | primaryResidencesecondHomeinvestment |
subjectPropertyValue |
number | Estimated value of the subject property, in dollars. |
subjectPropertyPurchaseDate |
date | When the borrower bought the subject property (refinance). YYYY-MM-DD |
Loan request
| Field | Type | Description |
|---|---|---|
loanPurpose |
string | What the borrower is asking for. purchaserefinancecashOutRefinancehelocpersonalLoan |
loanAmount |
number | The amount requested, in dollars. |
loanType |
string | The loan program the borrower wants, if known. conventionalfhavahelocheloannonQmreverseusdaRuralDevelopment |
cashOutAmount |
number | Cash the borrower wants out of a refinance, in dollars. |
cashOutReason |
string | debtConsolidationeducationhomeImprovementinterestRateReductionother |
Current mortgage (refinance)
| Field | Type | Description |
|---|---|---|
currentMortgageBalance |
number | Balance of the first mortgage, in dollars. |
currentRate |
number | The current interest rate as a percentage, e.g. 6.5. |
currentLoanType |
string | conventionalfhavahelocheloannonQmreverseusdaRuralDevelopment |
currentLender |
string(255) | |
currentMonthlyPayment |
number | |
paymentIncludesTaxesAndInsurance |
boolean | Whether |
monthlyTaxes |
number | |
monthlyInsurance |
number | |
monthlyHoaDues |
number | |
monthlyPmi |
number | |
monthlyEscrow |
number |
Purchase
| Field | Type | Description |
|---|---|---|
homeBuyingStage |
string | gettingStartedmakingOffersfoundHouseOrOfferPendingunderContract |
foundHome |
boolean | |
purchaseAgreement |
boolean | A purchase agreement has been signed. |
firstTimeBuyer |
boolean | |
purchasePrice |
number | Price of the home being bought, in dollars. |
downPaymentPercent |
number | Down payment as a percentage of the price, e.g. 20. 0–100 |
Consent & compliance
| Field | Type | Description |
|---|---|---|
tcpaConsent |
boolean | Whether the borrower agreed to be contacted by phone and text, including for marketing. |
tcpaConsentText |
string(2000) | The exact consent wording the borrower saw. |
creditConsent |
boolean | The borrower authorised a credit check. |
creditConsentText |
string(2000) | |
trustedFormCertUrl |
string | The TrustedForm certificate URL for this submission (https://cert.trustedform.com/…). a URL |
jornayaLeadId |
string(50) | The Jornaya LeadiD token. |
Examples
A refinance lead with cash out
{
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phone": "5551234567",
"leadSource": "Example Partner",
"subjectPropertyStreet": "123 Main St",
"subjectPropertyCity": "Riverside",
"subjectPropertyState": "CA",
"subjectPropertyZip": "92501",
"loanPurpose": "cashOutRefinance",
"subjectPropertyType": "singleFamilyDetached",
"subjectPropertyOccupancy": "primaryResidence",
"subjectPropertyValue": 650000,
"currentMortgageBalance": 410000,
"cashOutAmount": 50000,
"cashOutReason": "debtConsolidation",
"creditRating": "good",
"tcpaConsent": true,
"externalId": "1790366143",
"trustedFormCertUrl": "https://cert.trustedform.com/f756854b794b2b891b80691758552824b86b6b2a"
}A purchase lead
{
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"phone": "5559876543",
"leadSource": "Example Partner",
"subjectPropertyState": "TX",
"subjectPropertyZip": "78701",
"loanPurpose": "purchase",
"homeBuyingStage": "makingOffers",
"firstTimeBuyer": true,
"purchasePrice": 425000,
"downPaymentPercent": 10,
"loanAmount": 382500,
"tcpaConsent": true,
"test": true
}Responses
The lead was created.
| Field | Type | Description |
|---|---|---|
leadId |
uuid | Ziplend's identifier for this lead. |
received |
date-time | When Ziplend accepted it. |
test |
boolean | Echoes the request's |
{
"leadId": "3f2c9b2e-7c1a-4f0e-9a8c-2d1e5b6f7a90",
"received": "2026-10-01T22:23:28.750Z",
"test": false
}The body is not a JSON object.
| Field | Type | Description |
|---|---|---|
error |
string |
{
"error": "invalid json"
}The apikey header is missing or not recognised.
| Field | Type | Description |
|---|---|---|
error |
string |
{
"error": "Unauthorized"
}This key may not submit leads.
| Field | Type | Description |
|---|---|---|
error |
string |
{
"error": "Forbidden"
}The body is larger than 32 KB.
| Field | Type | Description |
|---|---|---|
error |
string |
{
"error": "too large"
}One or more fields are missing or malformed. Nothing was created.
| Field | Type | Description |
|---|---|---|
error |
string | must be "validation" |
fields |
array |
{
"error": "validation",
"fields": [
{
"field": "email",
"message": "must be a valid email"
},
{
"field": "leadSource",
"message": "is required"
}
]
}Ziplend's systems did not accept the lead.
| Field | Type | Description |
|---|---|---|
error |
string |
{
"error": "upstream"
}