{"openapi":"3.1.0","info":{"title":"FirstDoor Deal Score API","version":"1.0.0","description":"Free, read-only endpoint that scores a long-term rental property using FirstDoor's published methodology (https://usefirstdoor.com/methodology). Educational estimates, not financial advice. Rate limit: about 60 requests/minute per client; responses are CDN-cached.","contact":{"email":"support@usefirstdoor.com","url":"https://usefirstdoor.com"}},
"servers":[{"url":"https://usefirstdoor.com"}],
"paths":{"/api/score":{"get":{"operationId":"scoreRentalDeal","summary":"Score a rental property deal","description":"Returns monthly cash flow, cap rate, cash-on-cash return, DSCR, the 1% rule check, red flags and a Good/Okay/Pass verdict. Only price and rent are required; omitted inputs use defaults (20% down, 7% rate, 30 years, 5% vacancy, 5% maintenance, 8% management, $0 HOA, tax 1.2% of price/yr, insurance 0.6% of price/yr, closing 3% of price) and are listed in assumedDefaults.",
"parameters":[
{"name":"price","in":"query","required":true,"schema":{"type":"number","minimum":1000},"description":"Purchase price in USD"},
{"name":"rent","in":"query","required":true,"schema":{"type":"number","minimum":1},"description":"Monthly rent in USD"},
{"name":"downPct","in":"query","schema":{"type":"number","default":20},"description":"Down payment percent"},
{"name":"rate","in":"query","schema":{"type":"number","default":7},"description":"Annual interest rate percent"},
{"name":"termYears","in":"query","schema":{"type":"number","default":30}},
{"name":"taxYr","in":"query","schema":{"type":"number"},"description":"Property tax per year (default 1.2% of price)"},
{"name":"insYr","in":"query","schema":{"type":"number"},"description":"Insurance per year (default 0.6% of price)"},
{"name":"hoa","in":"query","schema":{"type":"number","default":0},"description":"HOA per month"},
{"name":"vacancyPct","in":"query","schema":{"type":"number","default":5}},
{"name":"maintPct","in":"query","schema":{"type":"number","default":5}},
{"name":"mgmtPct","in":"query","schema":{"type":"number","default":8}},
{"name":"closing","in":"query","schema":{"type":"number"},"description":"Closing costs in USD (default 3% of price)"}],
"responses":{"200":{"description":"Deal score","content":{"application/json":{"schema":{"type":"object","properties":{
"verdict":{"type":"string","enum":["Good","Okay","Pass"]},"points":{"type":"integer"},"maxPoints":{"type":"integer"},
"metrics":{"type":"object","properties":{"monthlyCashFlow":{"type":"number"},"annualCashFlow":{"type":"number"},"capRatePct":{"type":"number"},"cashOnCashPct":{"type":"number"},"dscr":{"type":["number","null"]},"rentToPricePct":{"type":"number"},"passesOnePercentRule":{"type":"boolean"},"monthlyPrincipalInterest":{"type":"number"},"monthlyOperatingExpenses":{"type":"number"},"annualNOI":{"type":"number"},"cashInvested":{"type":"number"}}},
"redFlags":{"type":"array","items":{"type":"string"}},"inputs":{"type":"object"},"assumedDefaults":{"type":"array","items":{"type":"string"}},"links":{"type":"object"},"source":{"type":"string"}}}}}},
"400":{"description":"Invalid input"},"429":{"description":"Rate limited"}}}}}}
