Skip to main content
AVnesterDevelopers
← All tools

get_property_decision_intelligence

Buyer affordability verdict for a specific home: indicative eligibility (FOIR/LTV/CIBIL), EMI, true cash-to-close, and regime-aware tax — one signal. Not a loan approval, offer, or financial advice.

Endpoint POST https://api.avnester.com/public/v1/get_property_decision_intelligence

Parameters

The most-used parameters. Full schema in the OpenAPI document.

monthlyNetIncomenumberrequired
Buyer monthly take-home income in INR.
listingIdstringoptional
An AVnester listingId. Provide this OR propertyValue+state.
propertyValuenumberoptional
Property price in INR (pan-India mode). Provide with state.
statestringoptional
Indian state for stamp duty. Required with propertyValue.
citystringoptional
City or town (manual mode), e.g. "Pune" — Maharashtra stamp duty depends on it, and it decides the GST metro carpet cap. Listing mode reads the listing's city.
localBodystringoptional
municipal_corporation | municipal_council | gram_panchayat. Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said). Manual mode only.
isUrbanbooleanoptional
Urban (default) or rural (manual mode), where the state prices by location (MH, KA, WB, MP, HR); localBody or a recognised city decides instead.
buyerGenderstringoptional
male | female | joint. "female" (a woman), "joint" (a man and a woman together) or "male" (default; two women: female). Changes the price only where a state gives women a concession.
assetTypestringoptional
home | plot. Manual mode: "home" (a flat, villa or house) or "plot" (bare land). A plot is priced as a plot for stamp duty — a residential-only concession does not reach it — and gets a shorter loan tenure and no home-loan tax benefit.
firstSalebooleanoptional
True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. Absent: isUnderConstruction true means a first sale; otherwise a resale is priced and the assumptions say so.
isUnderConstructionbooleanoptional
Under construction: GST applies, and the unit is priced as the builder's first sale unless firstSale says otherwise. Omitted: ready-to-move, no GST.
carpetAreaSqftnumberoptional
Carpet area in sq ft — decides the 1% affordable-housing GST rate (up to ₹45 lakh, and 646 sq ft in a GST metro city, 969 sq ft elsewhere).
savingsAvailablenumberoptional
Liquid cash for down payment + charges — enables the cash-gap calc.
cibilScorenumberoptional
CIBIL score (300–900). Omit → eligibility stays indicative.
existingMonthlyEmisnumberoptional
Total existing monthly EMIs in INR.
coApplicantMonthlyIncomenumberoptional
Co-applicant monthly income (joint affordability).
occupancyIntentstringoptional
self_occupied · let_out.
tenureYearsnumberoptional
Loan tenure in years. Defaults to 20.

Worked example

# can a ₹1.5L/month buyer with ₹15L savings (CIBIL 760) afford a ₹65L Coimbatore flat?
curl -X POST https://api.avnester.com/public/v1/get_property_decision_intelligence \
  -H 'Content-Type: application/json' \
  -d '{
       "propertyValue": 6500000,
       "state": "Tamil Nadu",
       "monthlyNetIncome": 150000,
       "savingsAvailable": 1500000,
       "cibilScore": 760
     }'
Response
{
  "mode": "manual",
  "verdict": { "signal": "STRETCH", "headline": "Approval likely, but you're ₹4,44,000 short on upfront cash.", "blockingLever": "down_payment_gap", "confidence": "indicative" },
  "eligibility": { "eligibleLoan": 5200000, "bound": "ltv", "ltvPct": 80, "foirAtEligibleLoanPct": 30.1, "approvalLikelihood": "high", "notALoanApproval": true, "notAnOffer": true },
  "emi": { "loanAmount": 5200000, "monthlyEmi": 45127 },
  "affordability": {
    "downPayment": 1300000, "stampDutyAndRegistration": 585000, "otherCharges": 59000,
    "otherChargesBreakdown": { "loanProcessingFee": 39000, "legalFee": 10000, "technicalValuation": 10000, "gstUnderConstruction": 0 },
    "totalCashToClose": 1944000, "downPaymentGap": 444000
  },
  "tax": { "recommendedRegime": "new", "netEffectiveAnnualBenefit": 0 },
  "attribution": "AVnester",
  "disclaimer": "..."
}

Run this example in the playground

Rate limits

OAuth (Developer)

30 / min

The same ceiling applies to every tool on a given plan, on both the MCP and REST transports; every plan’s is on Pricing. OAuth registration is free and self-serve. Calls made without signing in have their own per-IP limits — see the quickstart.

Common errors

  • 400Provide exactly one of listingId / propertyValue

    Pass either listingId OR propertyValue+state — not both, not neither.

  • 400Invalid request body

    Check required parameters and types. The error.message field will name the offending parameter.

  • 429Rate limit exceeded

    Back off until the time in the Retry-After header. Signed in with OAuth, the per-tool limit is counted per user instead of per address; a paid plan raises it.

  • 429Daily call limit reached (calls without signing in)

    Retry-After counts to 00:00 UTC, and only calls that returned an answer count. Signed in, calls count against your plan instead of your IP address.

Next steps