{"openapi":"3.1.0","info":{"title":"Lost to Found Calculator API","version":"1.0.0-beta.1","description":"Free anonymous beta. All fields required; no implicit defaults. 16 KiB JSON maximum. 120 POST requests per minute shared across the service. Calculation version 2026-09-17.1."},"servers":[{"url":"https://losttofound.org"}],"paths":{"/api/v1/calculators/mortgage":{"post":{"operationId":"calculate_mortgage","summary":"Calculate mortgage","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["price","downPercent","rate","years","loanType","vaUse","financeFee","taxPercent","annualInsurance","monthlyHoa","pmiPercent","maintenancePercent","closingPercent","extraCash","reserveMonths","savings","grossIncome","monthlyDebts","customUpfrontFee","customMonthlyInsurance"],"properties":{"price":{"type":"number","minimum":1,"maximum":10000000,"description":"Home purchase price in USD."},"downPercent":{"type":"number","minimum":0,"maximum":100,"description":"Down payment as a percentage of purchase price. Enter 10 for 10%."},"rate":{"type":"number","minimum":0,"maximum":30,"description":"Annual loan interest rate in percentage points. Enter 6.71 for 6.71%, not 0.0671. This is the interest rate, not APR. No rate lookup or lender quote is performed."},"years":{"type":"integer","minimum":1,"maximum":40,"description":"Fully amortizing fixed loan term in whole years. USDA must be 30."},"loanType":{"type":"string","description":"Loan program used to estimate fees and initial mortgage insurance. Selecting a program does not establish eligibility.","enum":["conventional","fha","va","usda","jumbo","other"]},"vaUse":{"type":"string","description":"VA funding fee scenario: first use, subsequent use, or exempt. Used only for VA loans; exemption is not verified.","enum":["first","subsequent","exempt"]},"financeFee":{"type":"boolean","description":"True adds the modeled upfront loan program or custom fee to the loan; false includes it in upfront cash. Does not finance closing costs or extraCash."},"taxPercent":{"type":"number","minimum":0,"maximum":100,"description":"Annual property tax as a percentage of purchase price. Enter 1.1 for 1.1%."},"annualInsurance":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual home insurance premium in USD, excluding mortgage insurance."},"monthlyHoa":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly homeowners association dues in USD."},"pmiPercent":{"type":"number","minimum":0,"maximum":100,"description":"Annual PMI as a percentage of the base loan before financed fees. Enter 0.5 for 0.5%. Used for conventional or jumbo loans with less than 20% down."},"maintenancePercent":{"type":"number","minimum":0,"maximum":100,"description":"Annual upkeep savings as a percentage of purchase price. Enter 1 for 1%. Included in the monthly ownership budget and reserves."},"closingPercent":{"type":"number","minimum":0,"maximum":100,"description":"Closing costs and prepaids as a percentage of purchase price. Enter 3 for 3%. Exclude the separately modeled upfront loan fee and extraCash."},"extraCash":{"type":"number","minimum":0,"maximum":1000000000,"description":"One time inspection, moving and setup allowance in USD. Added to upfront cash; exclude costs already in closingPercent."},"reserveMonths":{"type":"number","minimum":0,"maximum":120,"description":"Number of months of the full modeled ownership budget to retain as cash, including upkeep. A planning cushion, not a lender requirement."},"savings":{"type":"number","minimum":0,"maximum":1000000000,"description":"Savings available for this purchase plan in USD. Used to calculate the remaining savings gap."},"grossIncome":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual household income before taxes in USD. Enter 0 to leave the debt to income result unavailable."},"monthlyDebts":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly recurring debt payments in USD, excluding this mortgage. Used only in the debt to income calculation."},"customUpfrontFee":{"type":"number","minimum":0,"maximum":1000000000,"description":"One time quoted upfront loan fee in USD, used only for loanType other with a positive base loan. financeFee controls whether it is financed or paid in cash."},"customMonthlyInsurance":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly quoted mortgage insurance or loan fee in USD, used only for loanType other with a positive base loan. Excludes annualInsurance."}}},"example":{"price":350000,"downPercent":10,"rate":6.71,"years":30,"loanType":"conventional","vaUse":"first","financeFee":true,"taxPercent":1.1,"annualInsurance":1800,"monthlyHoa":0,"pmiPercent":0.5,"maintenancePercent":1,"closingPercent":3,"extraCash":1500,"reserveMonths":3,"savings":0,"grossIncome":0,"monthlyDebts":0,"customUpfrontFee":0,"customMonthlyInsurance":0}}}},"responses":{"200":{"description":"Versioned results with informational warnings, assumptions and sources.","content":{"application/json":{"schema":{"type":"object","required":["apiVersion","calculationVersion","model","currency","result","warnings","assumptions","sources","disclaimer"],"properties":{"apiVersion":{"const":"v1"},"calculationVersion":{"type":"string"},"model":{"const":"mortgage"},"currency":{"const":"USD"},"result":{"type":"object","required":["down","baseLoan","feePercent","fundingFee","loan","principalInterest","tax","insurance","pmi","monthlyInsurance","annualInsurancePercent","insuranceLabel","upfrontFeeLabel","insuranceDuration","housing","maintenance","monthly","closing","cashFee","upfront","reserves","cashTarget","gap","debtToIncome","totalInterest"],"properties":{"down":{"type":["number","null"]},"baseLoan":{"type":["number","null"]},"feePercent":{"type":["number","null"]},"fundingFee":{"type":["number","null"]},"loan":{"type":["number","null"]},"principalInterest":{"type":["number","null"]},"tax":{"type":["number","null"]},"insurance":{"type":["number","null"]},"pmi":{"type":["number","null"]},"monthlyInsurance":{"type":["number","null"]},"annualInsurancePercent":{"type":["number","null"]},"insuranceLabel":{"type":"string"},"upfrontFeeLabel":{"type":"string"},"insuranceDuration":{"type":"string"},"housing":{"type":["number","null"]},"maintenance":{"type":["number","null"]},"monthly":{"type":["number","null"]},"closing":{"type":["number","null"]},"cashFee":{"type":["number","null"]},"upfront":{"type":["number","null"]},"reserves":{"type":["number","null"]},"cashTarget":{"type":["number","null"]},"gap":{"type":["number","null"]},"debtToIncome":{"type":["number","null"]},"totalInterest":{"type":["number","null"]}},"description":"See model-specific units in the examples. Null indicates an unavailable result, never zero."},"warnings":{"type":"array","description":"Informational unit checks for submitted percentage fields strictly greater than 0 and less than 1, including fields unused by a selected loan program. Values are interpreted as percentage points and are never changed or rejected by this check. Valid low percentages can produce a warning. Zero and values at least 1 do not. An empty array means no unit check was triggered, not that the assumptions are suitable.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["check_percentage_units"]},"message":{"type":"string"}}}},"assumptions":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string","format":"uri"}},"disclaimer":{"type":"string"}}},"example":{"apiVersion":"v1","calculationVersion":"2026-09-17.1","model":"mortgage","currency":"USD","result":{"down":35000,"baseLoan":315000,"feePercent":0,"fundingFee":0,"loan":315000,"principalInterest":2034.7155423173795,"tax":320.83333333333337,"insurance":150,"pmi":131.25,"monthlyInsurance":131.25,"annualInsurancePercent":0,"insuranceLabel":"Mortgage insurance (PMI)","upfrontFeeLabel":"VA funding fee","insuranceDuration":"PMI is an initial estimate; cancellation rules and lender terms determine when it ends.","housing":2636.798875650713,"maintenance":291.6666666666667,"monthly":2928.4655423173795,"closing":10500,"cashFee":0,"upfront":47000,"reserves":8785.396626952139,"cashTarget":55785.39662695214,"gap":55785.39662695214,"debtToIncome":null,"totalInterest":417497.5952342566},"warnings":[{"field":"pmiPercent","code":"check_percentage_units","message":"pmiPercent is interpreted as 0.5%. Percentage fields use percentage points: 7 means 7%. If a value below 1% is intentional, keep this input."}],"assumptions":["User-supplied rate; no live quote or eligibility check.","All dollar amounts are USD; rate and percentage fields use percentage points, not fractions.","Fixed fully amortizing loan; mortgage insurance is an initial estimate.","Taxes, insurance, closing costs and upkeep are supplied assumptions."],"sources":["https://www.consumerfinance.gov/owning-a-home/","https://www.hud.gov/buying/loans","https://www.va.gov/housing-assistance/home-loans/"],"disclaimer":"Educational estimate, not a quote, appraisal, approval or personalized financial advice."}}}},"400":{"description":"Invalid JSON or URL parameters","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"405":{"description":"Unsupported method","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"408":{"description":"Body timeout","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Body exceeds 16 KiB","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Unsupported content type","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"422":{"description":"Invalid, unknown or missing input","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","minItems":1,"description":"All detected field problems for a JSON object, with one reason per invalid field. Related-field checks run when their prerequisite fields have valid types and bounds. No submitted values are included.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["required","unknown_field","invalid_type","not_finite","invalid_integer","out_of_range","invalid_enum","invalid_combination"]},"message":{"type":"string"}}}}}}}},"example":{"error":{"code":"unknown_field","message":"Body contains an undocumented field.","details":[{"field":"unexpected","code":"unknown_field","message":"This field is not documented for this calculator."},{"field":"price","code":"out_of_range","message":"Must be at least 1."}]}}}}},"429":{"description":"Shared rate limit; observe Retry-After","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Temporary unavailability","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/api/v1/calculators/rental-property":{"post":{"operationId":"calculate_rental_property","summary":"Calculate rental-property","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["price","down","rate","term","closing","rehab","reserves","rent","other","vacancy","tax","insurance","hoa","utilities","repairs","capex","management"],"properties":{"price":{"type":"number","minimum":1,"maximum":1000000000,"description":"Purchase price ($)"},"down":{"type":"number","minimum":0,"maximum":100,"description":"Down payment (%) Enter percentage points, not fractions; for example, 7 means 7%."},"rate":{"type":"number","minimum":0,"maximum":30,"description":"Annual loan interest rate (%). Illustrative fixed rate; use a lender quote. Enter percentage points, not fractions; for example, 7 means 7%."},"term":{"type":"integer","minimum":1,"maximum":40,"description":"Mortgage term (years)"},"closing":{"type":"number","minimum":0,"maximum":100,"description":"Purchase closing costs (%) Enter percentage points, not fractions; for example, 7 means 7%."},"rehab":{"type":"number","minimum":0,"maximum":1000000000,"description":"Initial repairs / renovation ($)"},"reserves":{"type":"number","minimum":0,"maximum":1000000000,"description":"Initial cash reserves ($)"},"rent":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly scheduled rent (all units) ($)"},"other":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly other income ($)"},"vacancy":{"type":"number","minimum":0,"maximum":99,"description":"Vacancy / uncollected income (%) Enter percentage points, not fractions; for example, 7 means 7%."},"tax":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual property taxes ($)"},"insurance":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual property insurance ($)"},"hoa":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly HOA ($)"},"utilities":{"type":"number","minimum":0,"maximum":1000000000,"description":"Monthly owner-paid utilities / other costs ($)"},"repairs":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual routine repairs ($)"},"capex":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual capital replacement reserve ($)"},"management":{"type":"number","minimum":0,"maximum":99,"description":"Management fee on collected income (%) Enter percentage points, not fractions; for example, 7 means 7%."}}},"example":{"price":350000,"down":20,"rate":7,"term":30,"closing":3,"rehab":10000,"reserves":10000,"rent":2800,"other":0,"vacancy":5,"tax":4200,"insurance":1800,"hoa":0,"utilities":100,"repairs":2000,"capex":2000,"management":8}}}},"responses":{"200":{"description":"Versioned results with informational warnings, assumptions and sources.","content":{"application/json":{"schema":{"type":"object","required":["apiVersion","calculationVersion","model","currency","result","warnings","assumptions","sources","disclaimer"],"properties":{"apiVersion":{"const":"v1"},"calculationVersion":{"type":"string"},"model":{"const":"rental-property"},"currency":{"const":"USD"},"result":{"type":"object","required":["headline","metrics","rows","notes"],"properties":{"headline":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","required":["label","value","format"],"properties":{"label":{"type":"string"},"value":{"type":["number","null"]},"format":{"type":"string"}}}},"rows":{"type":"array","items":{"type":"object","required":["label","value","format"],"properties":{"label":{"type":"string"},"value":{"type":["number","null"]},"format":{"type":"string"}}}},"notes":{"type":"array","items":{"type":"string"}}},"description":"See model-specific units in the examples. Null indicates an unavailable result, never zero."},"warnings":{"type":"array","description":"Informational unit checks for submitted percentage fields strictly greater than 0 and less than 1, including fields unused by a selected loan program. Values are interpreted as percentage points and are never changed or rejected by this check. Valid low percentages can produce a warning. Zero and values at least 1 do not. An empty array means no unit check was triggered, not that the assumptions are suitable.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["check_percentage_units"]},"message":{"type":"string"}}}},"assumptions":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string","format":"uri"}},"disclaimer":{"type":"string"}}},"example":{"apiVersion":"v1","calculationVersion":"2026-09-17.1","model":"rental-property","currency":"USD","result":{"headline":"This property needs cash each month","metrics":[{"label":"Monthly cash flow","value":-348.98031983504615,"format":"money"},{"label":"Cash needed to buy","value":100500,"format":"money"},{"label":"Cap rate","value":5.7618285714285715,"format":"percent"},{"label":"Cash-on-cash return","value":-4.166929192060252,"format":"percent"}],"rows":[{"label":"Scheduled annual income","value":33600,"format":"money"},{"label":"Vacancy allowance","value":1680,"format":"money"},{"label":"Operating expenses","value":11753.6,"format":"money"},{"label":"Net operating income (NOI)","value":20166.4,"format":"money"},{"label":"Capital replacement reserve","value":2000,"format":"money"},{"label":"Annual mortgage payments","value":22354.163838020555,"format":"money"},{"label":"NOI / debt service","value":0.9021317078163511,"format":"ratio"},{"label":"Monthly rent needed to break even","value":3199.2909837929587,"format":"money"},{"label":"Downside monthly cash flow","value":-709.6203198350462,"format":"money"}],"notes":["NOI excludes financing, income taxes and capital replacements. Cash flow includes your capital reserve. No appreciation or tax benefits are assumed.","Downside: scheduled rent and other income fall 10%, vacancy rises 5 percentage points, and fixed expenses remain unchanged.","Verify actual rent rolls, property taxes after sale, insurance quotes, local rules, repairs and vacancy. Rates and costs are editable assumptions, not investment-loan quotes."]},"warnings":[],"assumptions":["USD; rent, other, HOA and utilities are monthly. Tax, insurance, repairs and capex are annual.","Vacancy and management are percentages; down and closing are percentages of price.","Before income taxes, appreciation and depreciation benefits.","Downside reduces scheduled income 10% and raises vacancy 5 percentage points."],"sources":["https://www.consumerfinance.gov/owning-a-home/prepare/figure-out-how-much-you-want-to-spend/","https://www.irs.gov/publications/p527"],"disclaimer":"Educational estimate, not a quote, appraisal, approval or personalized financial advice."}}}},"400":{"description":"Invalid JSON or URL parameters","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"405":{"description":"Unsupported method","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"408":{"description":"Body timeout","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Body exceeds 16 KiB","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Unsupported content type","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"422":{"description":"Invalid, unknown or missing input","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","minItems":1,"description":"All detected field problems for a JSON object, with one reason per invalid field. Related-field checks run when their prerequisite fields have valid types and bounds. No submitted values are included.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["required","unknown_field","invalid_type","not_finite","invalid_integer","out_of_range","invalid_enum","invalid_combination"]},"message":{"type":"string"}}}}}}}},"example":{"error":{"code":"unknown_field","message":"Body contains an undocumented field.","details":[{"field":"unexpected","code":"unknown_field","message":"This field is not documented for this calculator."},{"field":"price","code":"out_of_range","message":"Must be at least 1."}]}}}}},"429":{"description":"Shared rate limit; observe Retry-After","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Temporary unavailability","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/api/v1/calculators/business":{"post":{"operationId":"calculate_business","summary":"Calculate business","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["price","revenue","earnings","basis","unsupported","labor","reinvestment","ownerPay","debt","acquiredCash","annualDebt","down","rate","years","costs","workingCapital","low","high","decline","target","assets"],"properties":{"price":{"type":"number","minimum":1,"maximum":10000000,"description":"Purchase price paid to the seller in USD, excluding debt assumed separately."},"revenue":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual sales before expenses in USD. Enter 0 if unknown; revenue ratios will be unavailable."},"earnings":{"type":"number","minimum":-1000000000,"maximum":1000000000,"description":"Advertised annual SDE or EBITDA in USD, as selected by basis. Negative earnings are allowed."},"basis":{"type":"string","description":"Earnings definition: sde for seller discretionary earnings with one working owner; ebitda for earnings before interest, taxes, depreciation and amortization with management payroll included. Supply matching earnings and multiples; this selection does not convert earnings or automatically adjust payroll.","enum":["sde","ebitda"]},"unsupported":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual unsupported seller add backs to remove from advertised earnings, in USD. Include expenses that will recur for the buyer."},"labor":{"type":"number","minimum":0,"maximum":1000000000,"description":"Additional annual staffing or replacement manager cost in USD. Exclude payroll already deducted from earnings."},"reinvestment":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual reserve for equipment replacement and working capital growth in USD, beyond expenses already deducted from earnings."},"ownerPay":{"type":"number","minimum":0,"maximum":1000000000,"description":"Additional annual owner income goal before personal tax, in USD. Exclude income already deducted from earnings or labor. Deducted in surplus and stressedResidual, but not in residual or debt coverage."},"debt":{"type":"number","minimum":0,"maximum":1000000000,"description":"Existing debt balance transferred to the buyer and still outstanding after closing, in USD. Excludes the new acquisition loan calculated from price and down."},"acquiredCash":{"type":"number","minimum":0,"maximum":1000000000,"description":"Excess cash transferred to the buyer in USD, excluding required operating cash. Adjusts value and price ratios; does not reduce modeled cashNeeded or the acquisition loan."},"annualDebt":{"type":"number","minimum":0,"maximum":1000000000,"description":"Annual principal plus interest payments on assumed debt in USD, separate from the calculated new acquisition loan payments. Must be positive when debt is positive; deferred payment debt is outside this beta."},"down":{"type":"number","minimum":0,"maximum":100,"description":"Buyer down payment as a percentage of price. Enter 20 for 20%. Costs and workingCapital are paid separately in cash."},"rate":{"type":"number","minimum":0,"maximum":100,"description":"Annual acquisition loan interest rate in percentage points. Enter 10 for 10%, not 0.10. An input assumption, not a financing quote."},"years":{"type":"integer","minimum":1,"maximum":30,"description":"Fully amortizing acquisition loan term in whole years."},"costs":{"type":"number","minimum":0,"maximum":1000000000,"description":"One time closing costs and transaction or loan fees paid in cash, in USD. Not included in the acquisition loan."},"workingCapital":{"type":"number","minimum":0,"maximum":1000000000,"description":"Extra initial working capital and reserve cash contributed by the buyer in USD, beyond price and costs. Not financed by this model."},"low":{"type":"number","minimum":0,"maximum":30,"description":"Low valuation multiple of adjusted annual earnings, as a ratio. Enter 2 for 2 times earnings. Must not exceed high; supply a multiple matching basis."},"high":{"type":"number","minimum":0,"maximum":30,"description":"High valuation multiple of adjusted annual earnings, as a ratio. Enter 3 for 3 times earnings. Must be at least low; supply a multiple matching basis."},"decline":{"type":"number","minimum":0,"maximum":100,"description":"Stress reduction in positive adjusted earnings, in percentage points. Enter 20 for 20%. Staffing, reinvestment, debt payments and ownerPay remain unchanged; negative adjusted earnings are not reduced further."},"target":{"type":"number","minimum":1,"maximum":100,"description":"Planning debt coverage target as a ratio. Enter 1.25 for 1.25 times annual debt payments. The API validates this input but does not use it to change or classify results; compare coverage with target in your application."},"assets":{"type":"number","minimum":0,"maximum":1000000000,"description":"Optional net realizable operating assets in USD, after nondebt liabilities and selling costs. Exclude acquiredCash and debt. Used only for the separate assetEquity cross check, not added to earnings value."}}},"example":{"price":450000,"revenue":900000,"earnings":180000,"basis":"sde","unsupported":15000,"labor":0,"reinvestment":15000,"ownerPay":60000,"debt":0,"acquiredCash":0,"annualDebt":0,"down":20,"rate":10,"years":10,"costs":15000,"workingCapital":30000,"low":2,"high":3,"decline":20,"target":1.25,"assets":0}}}},"responses":{"200":{"description":"Versioned results with informational warnings, assumptions and sources.","content":{"application/json":{"schema":{"type":"object","required":["apiVersion","calculationVersion","model","currency","result","warnings","assumptions","sources","disclaimer"],"properties":{"apiVersion":{"const":"v1"},"calculationVersion":{"type":"string"},"model":{"const":"business"},"currency":{"const":"USD"},"result":{"type":"object","required":["normalized","operatingPrice","lowValue","highValue","loan","payment","debtService","available","residual","surplus","coverage","stressCoverage","stressedResidual","cashNeeded","earningsMultiple","revenueMultiple","margin","leverage","cashReturn","assetEquity","pricePosition"],"properties":{"normalized":{"type":["number","null"],"description":"Annual adjusted earnings in USD: earnings minus unsupported add backs."},"operatingPrice":{"type":["number","null"],"description":"Operating purchase price in USD: seller price plus assumed debt minus acquired excess cash."},"lowValue":{"type":["number","null"],"description":"Low modeled price payable to the seller in USD after assumed debt and acquired cash adjustments. Floored at zero; null when adjusted earnings are not positive."},"highValue":{"type":["number","null"],"description":"High modeled price payable to the seller in USD after assumed debt and acquired cash adjustments. Floored at zero; null when adjusted earnings are not positive."},"loan":{"type":["number","null"],"description":"New acquisition loan principal in USD: price multiplied by the share not paid as down payment. Excludes assumed debt, costs and workingCapital."},"payment":{"type":["number","null"],"description":"Monthly principal and interest payment on the new acquisition loan in USD."},"debtService":{"type":["number","null"],"description":"Total annual debt payments in USD: 12 times payment plus annualDebt."},"available":{"type":["number","null"],"description":"Annual USD available before debt payments and ownerPay: normalized earnings minus labor and reinvestment."},"residual":{"type":["number","null"],"description":"Annual USD remaining after labor, reinvestment and all debt payments, BEFORE ownerPay. Compare surplus with stressedResidual for consistent treatment of the owner income goal."},"surplus":{"type":["number","null"],"description":"Annual USD surplus or shortfall AFTER labor, reinvestment, debt payments and ownerPay, before taxes. Equals residual minus ownerPay."},"coverage":{"type":["number","null"],"description":"Annual available cash divided by debtService, as a ratio before ownerPay. Null when debtService is zero."},"stressCoverage":{"type":["number","null"],"description":"Stressed annual available cash divided by debtService, as a ratio before ownerPay. Null when debtService is zero."},"stressedResidual":{"type":["number","null"],"description":"Stressed annual USD surplus or shortfall AFTER labor, reinvestment, debt payments and ownerPay, before taxes. Compare with surplus, not residual. Equals surplus when decline is zero."},"cashNeeded":{"type":["number","null"],"description":"Initial buyer cash in USD: down payment plus costs plus workingCapital. Acquired cash is not automatically applied toward this amount."},"earningsMultiple":{"type":["number","null"],"description":"Operating purchase price divided by normalized annual earnings, as a ratio. Null when earnings are not positive or operatingPrice is negative."},"revenueMultiple":{"type":["number","null"],"description":"Operating purchase price divided by annual revenue, as a ratio. Null when revenue is not positive or operatingPrice is negative."},"margin":{"type":["number","null"],"description":"Adjusted annual earnings divided by annual revenue, expressed as a percentage. Null when revenue is zero."},"leverage":{"type":["number","null"],"description":"New acquisition loan plus assumed debt divided by normalized annual earnings, as a ratio. Null when earnings are not positive."},"cashReturn":{"type":["number","null"],"description":"Annual surplus after ownerPay divided by initial cashNeeded, expressed as a percentage before taxes. Excludes resale value and principal equity buildup; null when cashNeeded is zero."},"assetEquity":{"type":["number","null"],"description":"Separate asset cross check in USD: assets plus acquiredCash minus assumed debt, floored at zero. Not added to earnings value."},"pricePosition":{"type":"string","description":"Compares seller price with the selected low and high earnings value range. Does not establish a fair price or an appraisal."}},"description":"See model-specific units in the examples. Null indicates an unavailable result, never zero."},"warnings":{"type":"array","description":"Informational unit checks for submitted percentage fields strictly greater than 0 and less than 1, including fields unused by a selected loan program. Values are interpreted as percentage points and are never changed or rejected by this check. Valid low percentages can produce a warning. Zero and values at least 1 do not. An empty array means no unit check was triggered, not that the assumptions are suitable.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["check_percentage_units"]},"message":{"type":"string"}}}},"assumptions":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string","format":"uri"}},"disclaimer":{"type":"string"}}},"example":{"apiVersion":"v1","calculationVersion":"2026-09-17.1","model":"business","currency":"USD","result":{"normalized":165000,"operatingPrice":450000,"lowValue":330000,"highValue":495000,"loan":360000,"payment":4757.42652774342,"debtService":57089.11833292103,"available":150000,"residual":92910.88166707897,"surplus":32910.88166707897,"coverage":2.6274709503352227,"stressCoverage":2.0494273412614734,"stressedResidual":-89.11833292103256,"cashNeeded":135000,"earningsMultiple":2.727272727272727,"revenueMultiple":0.5,"margin":18.333333333333332,"leverage":2.1818181818181817,"cashReturn":24.37843086450294,"assetEquity":0,"pricePosition":"Within your selected range"},"warnings":[],"assumptions":["All dollars are USD and cash-flow inputs are annual unless specified.","User-selected SDE or EBITDA multiples; no appraisal or automatic comparable-deal lookup.","One fully amortizing acquisition loan; transferred debt payments are supplied separately.","No tax, balloon, refinancing or lender eligibility model."],"sources":["https://www.bizbuysell.com/insight-report-data-tables/","https://www.sba.gov/loans/7a-loans/"],"disclaimer":"Educational estimate, not a quote, appraisal, approval or personalized financial advice."}}}},"400":{"description":"Invalid JSON or URL parameters","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"405":{"description":"Unsupported method","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"408":{"description":"Body timeout","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Body exceeds 16 KiB","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Unsupported content type","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"422":{"description":"Invalid, unknown or missing input","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","minItems":1,"description":"All detected field problems for a JSON object, with one reason per invalid field. Related-field checks run when their prerequisite fields have valid types and bounds. No submitted values are included.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string"},"code":{"type":"string","enum":["required","unknown_field","invalid_type","not_finite","invalid_integer","out_of_range","invalid_enum","invalid_combination"]},"message":{"type":"string"}}}}}}}},"example":{"error":{"code":"unknown_field","message":"Body contains an undocumented field.","details":[{"field":"unexpected","code":"unknown_field","message":"This field is not documented for this calculator."},{"field":"price","code":"out_of_range","message":"Must be at least 1."}]}}}}},"429":{"description":"Shared rate limit; observe Retry-After","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Temporary unavailability","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}}}