{"openapi":"3.1.0","info":{"title":"Homes Loan Calculator API","version":"1.0.0","description":"Free, keyless home loan maths for India. Query aliases: p=principal, r=annualRate, n=months, y=years."},"servers":[{"url":"https://homesloancalculator.in"}],"paths":{"/api/emi":{"get":{"operationId":"emiGet","summary":"Calculates the monthly EMI, total interest and year-by-year schedule for an Indian home loan, with optional prepayments and a rate change.","parameters":[{"name":"principal","in":"query","required":true,"schema":{"type":"number","minimum":100000,"maximum":1000000000}},{"name":"annualRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","minimum":6,"maximum":480}},{"name":"years","in":"query","required":false,"schema":{"type":"number","minimum":0.5,"maximum":40}},{"name":"lumpSums","in":"query","required":false,"schema":{"type":"array","items":{"type":"object","properties":{"month":{"type":"integer","minimum":1,"maximum":9007199254740991},"amount":{"type":"number","exclusiveMinimum":0}},"required":["month","amount"]}}},{"name":"extraMonthly","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["reduceTenure","reduceEMI"]}},{"name":"rateReset","in":"query","required":false,"schema":{"type":"object","properties":{"afterMonth":{"type":"integer","minimum":1,"maximum":9007199254740991},"newRate":{"type":"number","minimum":0.1,"maximum":30},"mode":{"type":"string","enum":["reduceTenure","reduceEMI"]}},"required":["afterMonth","newRate"]}},{"name":"monthly","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"emiPost","summary":"Calculates the monthly EMI, total interest and year-by-year schedule for an Indian home loan, with optional prepayments and a rate change.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"principal":{"type":"number","minimum":100000,"maximum":1000000000},"annualRate":{"type":"number","minimum":0.1,"maximum":30},"months":{"type":"integer","minimum":6,"maximum":480},"years":{"type":"number","minimum":0.5,"maximum":40},"lumpSums":{"type":"array","items":{"type":"object","properties":{"month":{"type":"integer","minimum":1,"maximum":9007199254740991},"amount":{"type":"number","exclusiveMinimum":0}},"required":["month","amount"]}},"extraMonthly":{"type":"number","minimum":0},"mode":{"type":"string","enum":["reduceTenure","reduceEMI"]},"rateReset":{"type":"object","properties":{"afterMonth":{"type":"integer","minimum":1,"maximum":9007199254740991},"newRate":{"type":"number","minimum":0.1,"maximum":30},"mode":{"type":"string","enum":["reduceTenure","reduceEMI"]}},"required":["afterMonth","newRate"]},"monthly":{"type":"boolean"}},"required":["principal","annualRate"]},"example":{"principal":5000000,"annualRate":8.5,"years":20}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}},"/api/sensitivity":{"get":{"operationId":"sensitivityGet","summary":"Shows how the EMI and total interest change if the interest rate moves up or down by small steps.","parameters":[{"name":"principal","in":"query","required":true,"schema":{"type":"number","minimum":100000,"maximum":1000000000}},{"name":"annualRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","minimum":6,"maximum":480}},{"name":"years","in":"query","required":false,"schema":{"type":"number","minimum":0.5,"maximum":40}},{"name":"deltas","in":"query","required":false,"schema":{"type":"array","items":{"type":"number"}}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"sensitivityPost","summary":"Shows how the EMI and total interest change if the interest rate moves up or down by small steps.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"principal":{"type":"number","minimum":100000,"maximum":1000000000},"annualRate":{"type":"number","minimum":0.1,"maximum":30},"months":{"type":"integer","minimum":6,"maximum":480},"years":{"type":"number","minimum":0.5,"maximum":40},"deltas":{"type":"array","items":{"type":"number"}}},"required":["principal","annualRate"]},"example":{"principal":5000000,"annualRate":8.5,"years":20}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}},"/api/eligibility":{"get":{"operationId":"eligibilityGet","summary":"Estimates the maximum EMI and loan amount a borrower qualifies for from net monthly income and existing EMIs.","parameters":[{"name":"netMonthlyIncome","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"existingEmis","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"annualRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","minimum":6,"maximum":480}},{"name":"years","in":"query","required":false,"schema":{"type":"number","minimum":0.5,"maximum":40}},{"name":"foir","in":"query","required":false,"schema":{"type":"number","minimum":0.1,"maximum":1}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"eligibilityPost","summary":"Estimates the maximum EMI and loan amount a borrower qualifies for from net monthly income and existing EMIs.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"netMonthlyIncome":{"type":"number","exclusiveMinimum":0},"existingEmis":{"type":"number","minimum":0},"annualRate":{"type":"number","minimum":0.1,"maximum":30},"months":{"type":"integer","minimum":6,"maximum":480},"years":{"type":"number","minimum":0.5,"maximum":40},"foir":{"type":"number","minimum":0.1,"maximum":1}},"required":["netMonthlyIncome","annualRate"]},"example":{"netMonthlyIncome":150000,"existingEmis":10000,"annualRate":8.5,"years":20}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}},"/api/rent-vs-buy":{"get":{"operationId":"rentVsBuyGet","summary":"Compares year-by-year net worth of buying a home with a loan against renting and investing the down payment, and finds the break-even year.","parameters":[{"name":"rent","in":"query","required":true,"schema":{"type":"number","minimum":0}},{"name":"rentGrowth","in":"query","required":true,"schema":{"type":"number","minimum":0,"maximum":30}},{"name":"price","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"downPayment","in":"query","required":true,"schema":{"type":"number","minimum":0}},{"name":"annualRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"months","in":"query","required":true,"schema":{"type":"integer","minimum":6,"maximum":480}},{"name":"appreciation","in":"query","required":true,"schema":{"type":"number","minimum":-20,"maximum":30}},{"name":"investReturn","in":"query","required":true,"schema":{"type":"number","minimum":0,"maximum":40}},{"name":"years","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":40}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"rentVsBuyPost","summary":"Compares year-by-year net worth of buying a home with a loan against renting and investing the down payment, and finds the break-even year.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"rent":{"type":"number","minimum":0},"rentGrowth":{"type":"number","minimum":0,"maximum":30},"price":{"type":"number","exclusiveMinimum":0},"downPayment":{"type":"number","minimum":0},"annualRate":{"type":"number","minimum":0.1,"maximum":30},"months":{"type":"integer","minimum":6,"maximum":480},"appreciation":{"type":"number","minimum":-20,"maximum":30},"investReturn":{"type":"number","minimum":0,"maximum":40},"years":{"type":"integer","minimum":1,"maximum":40}},"required":["rent","rentGrowth","price","downPayment","annualRate","months","appreciation","investReturn","years"]},"example":{"rent":30000,"rentGrowth":5,"price":8000000,"downPayment":1600000,"annualRate":8.5,"months":240,"appreciation":5,"investReturn":10,"years":20}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}},"/api/balance-transfer":{"get":{"operationId":"balanceTransferGet","summary":"Compares staying with the current home loan against moving the balance to a lower rate, including processing fee and break-even months.","parameters":[{"name":"outstanding","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"remainingMonths","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":480}},{"name":"currentRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"newRate","in":"query","required":true,"schema":{"type":"number","minimum":0.1,"maximum":30}},{"name":"processingFee","in":"query","required":false,"schema":{"type":"number","minimum":0}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"balanceTransferPost","summary":"Compares staying with the current home loan against moving the balance to a lower rate, including processing fee and break-even months.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"outstanding":{"type":"number","exclusiveMinimum":0},"remainingMonths":{"type":"integer","minimum":1,"maximum":480},"currentRate":{"type":"number","minimum":0.1,"maximum":30},"newRate":{"type":"number","minimum":0.1,"maximum":30},"processingFee":{"type":"number","minimum":0}},"required":["outstanding","remainingMonths","currentRate","newRate"]},"example":{"outstanding":4000000,"remainingMonths":180,"currentRate":9.25,"newRate":8.4,"processingFee":20000}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}},"/api/down-payment":{"get":{"operationId":"downPaymentGet","summary":"Gives the loan-to-value ratio, maximum loan, minimum down payment and approximate stamp duty plus registration for a property price.","parameters":[{"name":"price","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}},"post":{"operationId":"downPaymentPost","summary":"Gives the loan-to-value ratio, maximum loan, minimum down payment and approximate stamp duty plus registration for a property price.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"price":{"type":"number","exclusiveMinimum":0}},"required":["price"]},"example":{"price":7500000}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"tool":{"type":"string"},"inputs":{"type":"object"},"result":{"type":"object"},"source":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input: { ok: false, issues }"}}}}}}