Developer API
Every calculation on this site is available as a JSON API: full PITI breakdowns with PMI and HOA, amortization schedules, overpayment savings, NPV, IRR, and future-value projections. Same engine, same numbers — no UI required.
The API is a calculation service. It does not provide financial, investment, tax or mortgage advice — see our terms.
Authentication
API keys are included with Pro. Create one on your account page and send it on every request as a bearer token (or as an X-Api-Key header). Call the API from your server — a key in browser code is public. Requests without a valid key return 401.
Authorization: Bearer mfv_xxxxxxxxxxxxxxxxxxxxEndpoints
/api/public/v1/mortgageFull mortgage analysis. Returns the monthly breakdown (principal & interest, tax, insurance, PMI, HOA), payoff timing with and without overpayments, interest saved, home future value, NPV and IRR. Set includeSchedule to true for the month-by-month amortization rows. A GET with the same fields as query parameters works too.
curl -X POST https://mortgagefvcalculator.com/api/public/v1/mortgage \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"homePrice": 550000,
"downPayment": 55000,
"loanTermYears": 30,
"interestRate": 6.75,
"propertyTaxAnnual": 6600,
"homeInsuranceAnnual": 1800,
"hoaMonthly": 120,
"pmiRate": 0.55,
"extraMonthly": 200,
"discountRate": 4.68,
"expectedAppreciation": 3.5,
"includeSchedule": false
}'Response
{
"input": { "homePrice": 550000, "...": "..." },
"summary": {
"loanAmount": 495000,
"ltv": 90,
"monthlyPI": 3210.56,
"monthlyPMI": 226.88,
"monthlyTotal": 4257.44,
"totalInterest": 535596.12,
"interestSaved": 125205.98,
"payoffMonths": 303,
"pmiEndsMonth": 72,
"fvHome": 1311012.4,
"npv": -417134.2,
"irr": 0.0421
},
"schedule": []
}/api/public/v1/future-valueFuture-value projection with recurring contributions, custom compounding and inflation-adjusted (real) values. Pass an optional compareTo scenario to get both projections plus the delta between them.
curl -X POST https://mortgagefvcalculator.com/api/public/v1/future-value \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scenario": {
"presentValue": 10000,
"contribution": 500,
"contributionFreq": "monthly",
"annualRate": 7,
"years": 20,
"compoundsPerYear": 12,
"inflationRate": 2.5
},
"compareTo": {
"presentValue": 10000,
"contribution": 750,
"contributionFreq": "monthly",
"annualRate": 9,
"years": 20,
"compoundsPerYear": 12,
"inflationRate": 2.5
}
}'/api/public/v1/scenariosList or create the saved scenarios that belong to your API key's account — the same scenarios you see signed in on the site. Supports limit and search query parameters on GET.
# list (newest first)
curl "https://mortgagefvcalculator.com/api/public/v1/scenarios?limit=20&search=duplex" \
-H "Authorization: Bearer YOUR_API_KEY"
# create
curl -X POST https://mortgagefvcalculator.com/api/public/v1/scenarios \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Duplex 6.75%", "data": { "homePrice": 550000, "interestRate": 6.75 } }'/api/public/v1/scenarios/{id}Fetch, rename/update, or delete a single saved scenario. Unknown or other-account ids return 404.
curl https://mortgagefvcalculator.com/api/public/v1/scenarios/SCENARIO_ID \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X PATCH https://mortgagefvcalculator.com/api/public/v1/scenarios/SCENARIO_ID \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Duplex — renamed" }'
curl -X DELETE https://mortgagefvcalculator.com/api/public/v1/scenarios/SCENARIO_ID \
-H "Authorization: Bearer YOUR_API_KEY"OpenAPI specification
A machine-readable OpenAPI 3.1 document describing every endpoint, field and response is served at /api/public/v1/openapi.json. Import it into Postman, Insomnia, Swagger UI, or an SDK generator.
npx @openapitools/openapi-generator-cli generate \
-i https://mortgagefvcalculator.com/api/public/v1/openapi.json \
-g typescript-fetch -o ./mfv-clientNode.js example
const res = await fetch("https://mortgagefvcalculator.com/api/public/v1/mortgage", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.MFV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
homePrice: 550000,
downPayment: 55000,
loanTermYears: 30,
interestRate: 6.75,
}),
});
const { summary } = await res.json();Rate limits
Each API key is limited to 60 requests per minute and 10,000 requests per day. Every response carries the current counters, and exceeding a limit returns 429 with a Retry-After header (in seconds). Need more headroom? Get in touch.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 2026-07-31T05:01:00+00
X-RateLimit-Limit-Day: 10000
X-RateLimit-Remaining-Day: 9861Errors
Errors return a JSON body shaped like { "error": { "message": "...", "code": "..." } }. 401 means the key is missing, revoked, or the subscription is no longer active. 400 means an input failed validation and the message names the field.
Prefer an embed or an AI agent?
The same calculators are available as a copy-paste embed widget for websites, and as MCP tools at /mcp for AI assistants like Claude and ChatGPT.