← Back to FundShift

Lead partners

Lead Partner API

Send borrower leads to FundShift AI with one authenticated JSON request. Each lead is scored by AI and routed to licensed loan officers who match its state and loan type, usually within seconds. Your leads are tracked as their own source, so quality is measured on outcomes, not volume.

1. Endpoint and headers

POST https://fundshiftai.com/api/leads/vendor

Content-Type: application/json

x-vendor-key: fsv_… — your partner key. One lead per request.

Keys are issued by FundShift and shown once; we store only a hash, so a lost key can't be recovered — ask us to rotate it and the old key stops working immediately. Keep the key on your server; never put it in a browser, app or public repository.

2. Fields

Send a flat JSON object. Field names are matched case-sensitively, and any listed alias works, so you can usually post your existing payload unchanged. Unknown fields are ignored.

FieldAccepted namesNotes
borrower_nameRequired
borrower_namefull_namenamefullName
Borrower's full name.
emailRequired
emailborrower_emailemailAddress
Borrower's email. Also the 24-hour duplicate key.
stateRequired
statestproperty_state
Property state, two-letter code (e.g. MO). Drives lender matching.
phoneOptional
phoneborrower_phonephoneNumberphone_number
Borrower's phone. With consent, enables SMS + call outreach.
cityOptional
cityproperty_city
Property city.
loan_typeOptional
loan_typeloanTypeproductprogram
Purchase, Refinance, Cash-Out, FHA, VA, DSCR, … Defaults to Purchase.
loan_amountOptional
loan_amountloanAmountamount
Requested loan amount in dollars (number, no symbols).
purchase_priceOptional
purchase_pricepurchasePricehome_valueproperty_value
Purchase price or current value; used for LTV in scoring.
credit_tierOptional
credit_tiercreditficocreditScore
Send a tier label: "Excellent (740+)", "Good (700-739)", "Fair (660-699)" or "Below 660".
notesOptional
notescommentsmessage
Free-text context from the borrower or your form.
ai_scoreOptional
ai_scorescorequality
Your own 1–100 quality score. If omitted (or 0), FundShift AI scores the lead.
consentRequired by policy
consenttcpa_consent
JSON boolean true (not the string "true"). See consent below.

3. Consent (TCPA) — required

  • Only send leads who gave prior express written consent, at the point you captured them, to be contacted about their loan request by matched loan officers — including by autodialed or prerecorded calls and texts.
  • Send "consent": true (or "tcpa_consent": true) with every lead that consented. We then record a consent entry for the lead with the time, source IP and user agent of your request, against this disclosure:“I agree to be contacted by a FundShift-matched loan officer about my loan request at the phone number and email I provided — including by autodialed or prerecorded calls and text messages. Consent is not a condition of any purchase. Message and data rates may apply; reply STOP to opt out. I have read the Privacy Policy.”
  • Keep your own consent records (form, disclosure text, timestamp, IP) and produce them on request. Leads without a consent flag are accepted but are not eligible for automated text or call outreach.
  • Do not send leads you bought from another source without consent that covers FundShift loan officers.

4. Example

curl -X POST https://fundshiftai.com/api/leads/vendor \
  -H "Content-Type: application/json" \
  -H "x-vendor-key: fsv_YOUR_KEY_HERE" \
  -d '{"borrower_name":"Jane Sample","email":"jane@example.com","phone":"816-555-0100","state":"MO","city":"Kansas City","loan_type":"Purchase","loan_amount":350000,"purchase_price":420000,"credit_tier":"Excellent (740+)","consent":true}'

Replace fsv_YOUR_KEY_HERE with the key we issued you.

5. Responses

200Lead created, scored and routed

{"ok":true,"lead_id":"<uuid>","score":87,"matched":3,"notified":3}

200Same email already has an open lead from the last 24 hours — no new lead, re-routed

{"ok":true,"lead_id":"<uuid>","deduped":true}

400Body is not valid JSON

{"error":"Invalid JSON"}

400A required field is missing

{"error":"borrower_name, email, and state are required"}

401Missing, wrong, rotated or deactivated key

{"error":"Unauthorized"}

429Rate limit reached (per sending IP, and per vendor) — back off and retry later

{"error":"Too many requests"}

500We could not store the lead — safe to retry

{"error":"Failed to create lead"}

score is the 0–100 quality score the lead was stored with; matched counts the loan officers it was matched to and notified how many of them were alerted right away. A lead with zero matches is still stored and stays available in the loan-officer marketplace.

6. Become a partner

To get a key, rotate one, or ask about pricing and volume, email t.allman@allshiftai.com.