{"openapi":"3.1.1","info":{"title":"Opendoor public calculator API","version":"1.0.0","description":"Read-only parameterized calculators that match the public pages on opendoor.com. Agents should GET with query parameters, then cite the returned JSON. This document is nested under /api/agent/v1/calculators so it does not collide with the site-wide OpenAPI catalog."},"servers":[{"url":"https://www.opendoor.com"}],"paths":{"/api/agent/v1/calculators/mortgage-rate":{"get":{"operationId":"evaluate_mortgage_rate","summary":"Opendoor Home Loans rate calculator","description":"Compare mortgage rate, APR, points, and principal-and-interest estimates without contact details or an application. Set purchase, down payment, credit, location, income, debt, and loan inputs. Check rateSource and the returned pricing scenario: published examples and unavailable results are not customized quotes.","parameters":[{"name":"purchase_price","in":"query","required":false,"description":"Home purchase price in dollars.","schema":{"type":"number"}},{"name":"down_payment_percent","in":"query","required":false,"description":"Down payment as a percent of purchase price.","schema":{"type":"number"}},{"name":"credit_score","in":"query","required":false,"description":"Credit-score band used for pricing.","schema":{"type":"string","enum":["780","760","740","720","700","680","660","640","620","600","580","579"]}},{"name":"product","in":"query","required":false,"description":"Loan product key.","schema":{"type":"string","enum":["30f","15f","arm5","arm7","arm10"]}},{"name":"city","in":"query","required":false,"description":"Property city.","schema":{"type":"string"}},{"name":"state","in":"query","required":false,"description":"Two-letter US state code.","schema":{"type":"string"}},{"name":"postal_code","in":"query","required":false,"description":"Five-digit US ZIP code.","schema":{"type":"string"}},{"name":"property_type","in":"query","required":false,"description":"Property type.","schema":{"type":"string","enum":["sfr","town","condo"]}},{"name":"occupancy","in":"query","required":false,"description":"Occupancy.","schema":{"type":"string","enum":["primary","second","invest"]}},{"name":"first_time_buyer","in":"query","required":false,"description":"Whether the borrower is a first-time buyer.","schema":{"type":"boolean"}},{"name":"opendoor_home","in":"query","required":false,"description":"Whether the property is an Opendoor-owned home.","schema":{"type":"boolean"}},{"name":"annual_income","in":"query","required":false,"description":"Annual borrower income in dollars.","schema":{"type":"number"}},{"name":"monthly_debt","in":"query","required":false,"description":"Monthly debt payments in dollars.","schema":{"type":"number"}},{"name":"points","in":"query","required":false,"description":"Discount points to buy, from 0 to 2.","schema":{"type":"number"}}],"responses":{"200":{"description":"Structured calculator result","content":{"application/json":{"schema":{"type":"object","required":["inputs","pageUrl","disclaimer","rateSource","result"],"properties":{"inputs":{"type":"object","required":["purchasePrice","downPaymentPercent","creditScore","product","city","state","postalCode","propertyType","occupancy","firstTimeBuyer","opendoorHome","annualIncome","monthlyDebt","points"],"properties":{"purchasePrice":{"type":"number"},"downPaymentPercent":{"type":"number"},"creditScore":{"type":"string"},"product":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"propertyType":{"type":"string"},"occupancy":{"type":"string"},"firstTimeBuyer":{"type":"boolean"},"opendoorHome":{"type":"boolean"},"annualIncome":{"type":"number"},"monthlyDebt":{"type":"number"},"points":{"type":"number"}}},"pageUrl":{"type":"string"},"disclaimer":{"type":"string"},"rateSource":{"type":"string","enum":["live","published_example"]},"errorCode":{"type":"string","enum":["invalid_input","no_rates","not_found","pricing_failed","rate_limited","request_failed","timeout","unavailable"]},"message":{"type":"string"},"retryAfter":{"type":"number"},"result":{"type":"object","required":["rateSource","interestRate","estimatedApr","principalAndInterest","loanAmount","points","pointsCost","productLabel","termYears","pricingScenario"],"properties":{"rateSource":{"type":"string","enum":["live","published_example"]},"interestRate":{"type":"number"},"estimatedApr":{"type":"number"},"principalAndInterest":{"type":"number"},"loanAmount":{"type":"number"},"points":{"type":"number"},"pointsCost":{"type":"number"},"productLabel":{"type":"string"},"termYears":{"type":"number"},"pricingScenario":{"type":"object","required":["purchasePrice","downPaymentPercent","annualIncome","monthlyDebt","location"],"properties":{"purchasePrice":{"type":"number"},"downPaymentPercent":{"type":"number"},"annualIncome":{"type":"number"},"monthlyDebt":{"type":"number"},"location":{"type":"object","required":["name","state"],"properties":{"name":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}}}}}}}}}}},"400":{"description":"Invalid parameters","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Live mortgage rates unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/agent/v1/calculators/mortgage-payment":{"get":{"operationId":"evaluate_mortgage_payment","summary":"Mortgage payment calculator","description":"Estimate a 30-year monthly mortgage payment without contact details or an application. Set home price, down payment, interest rate, annual property tax, and annual insurance to return principal, interest, tax, and insurance. The total excludes HOA dues and mortgage insurance.","parameters":[{"name":"home_price","in":"query","required":false,"description":"Home purchase price in dollars.","schema":{"type":"number"}},{"name":"down_payment","in":"query","required":false,"description":"Down payment in dollars.","schema":{"type":"number"}},{"name":"interest_rate","in":"query","required":false,"description":"Annual interest rate percent.","schema":{"type":"number"}},{"name":"home_insurance","in":"query","required":false,"description":"Annual homeowners insurance in dollars.","schema":{"type":"number"}},{"name":"property_tax","in":"query","required":false,"description":"Annual property tax in dollars. Defaults from the state rate when omitted.","schema":{"type":"number"}},{"name":"state","in":"query","required":false,"description":"Two-letter US state code used for the default tax rate.","schema":{"type":"string"}}],"responses":{"200":{"description":"Structured calculator result","content":{"application/json":{"schema":{"type":"object","required":["inputs","pageUrl","disclaimer","result"],"properties":{"inputs":{"type":"object","required":["homePrice","downPayment","interestRate","homeInsurance","propertyTax","state"],"properties":{"homePrice":{"type":"number"},"downPayment":{"type":"number"},"interestRate":{"type":"number"},"homeInsurance":{"type":"number"},"propertyTax":{"type":"number"},"state":{"type":"string"}}},"pageUrl":{"type":"string"},"disclaimer":{"type":"string"},"result":{"type":"object","required":["totalMonthlyPayment","principalTotalPercentage","propertyTaxTotalPercentage","insuranceTotalPercentage","roundedPrincipalPerMonth","propertyTaxDollarsValuePerMonth","insuranceDollarsValue"],"properties":{"totalMonthlyPayment":{"type":"number"},"principalTotalPercentage":{"type":"string"},"propertyTaxTotalPercentage":{"type":"string"},"insuranceTotalPercentage":{"type":"string"},"roundedPrincipalPerMonth":{"type":"number"},"propertyTaxDollarsValuePerMonth":{"type":"number"},"insuranceDollarsValue":{"type":"number"}}}}}}}},"400":{"description":"Invalid parameters","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/agent/v1/calculators/home-sale":{"get":{"operationId":"evaluate_home_sale","summary":"Home sale calculator","description":"Set sale price, repairs, and mortgage payoff to return estimated net proceeds after selling costs.","parameters":[{"name":"sale_price","in":"query","required":false,"description":"Expected home sale price in dollars.","schema":{"type":"number"}},{"name":"repairs","in":"query","required":false,"description":"Expected repair credits or costs in dollars.","schema":{"type":"number"}},{"name":"mortgage_payoff","in":"query","required":false,"description":"Remaining mortgage payoff in dollars.","schema":{"type":"number"}}],"responses":{"200":{"description":"Structured calculator result","content":{"application/json":{"schema":{"type":"object","required":["inputs","pageUrl","disclaimer","result","assumedFees"],"properties":{"inputs":{"type":"object","required":["salePrice","repairs","mortgagePayoff"],"properties":{"salePrice":{"type":"number"},"repairs":{"type":"number"},"mortgagePayoff":{"type":"number"}}},"pageUrl":{"type":"string"},"disclaimer":{"type":"string"},"result":{"type":"object","required":["totalFees","totalCostToSell","netProceeds"],"properties":{"totalFees":{"type":"number"},"totalCostToSell":{"type":"number"},"netProceeds":{"type":"number"}}},"assumedFees":{"type":"object","description":"Estimated selling costs keyed by calculator input ID. market-ready-costs-input covers cleaning, cosmetic improvements, staging, and storage before listing. It excludes repairs entered separately.","additionalProperties":{"type":"object","required":["value","isPercentage"],"properties":{"value":{"type":"number"},"isPercentage":{"type":"boolean"}}}}}}}}},"400":{"description":"Invalid parameters","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/agent/v1/calculators/home-value":{"get":{"operationId":"evaluate_home_value","summary":"Home value estimator","description":"Set an address and its address token to return an estimated home value range.","parameters":[{"name":"address","in":"query","required":false,"description":"Human-readable address, used only for display.","schema":{"type":"string"}},{"name":"address_token","in":"query","required":true,"description":"Address token from an address suggestion. Required for a home value estimate. Do not derive one from a street address.","schema":{"type":"string"}}],"responses":{"200":{"description":"Structured calculator result","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["calculatorId","addressToken","coverage","estimate","methodology"],"properties":{"calculatorId":{"type":"string","enum":["home-value"]},"address":{"type":"string"},"addressToken":{"type":"string"},"coverage":{"type":"string","enum":["signals"]},"estimate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"formattedAddress":{"type":"string"},"lowEstimate":{"type":"number"},"highEstimate":{"type":"number"},"compCount":{"type":"number"},"compAddressTokens":{"maxItems":3,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"currency":{"type":"string","const":"USD"}},"required":["formattedAddress","lowEstimate","highEstimate","compCount","currency"],"additionalProperties":false},"methodology":{"type":"string"}}},{"type":"object","required":["calculatorId","addressToken","coverage","formattedAddress","message"],"properties":{"calculatorId":{"type":"string","enum":["home-value"]},"address":{"type":"string"},"addressToken":{"type":"string"},"coverage":{"type":"string","enum":["none"]},"formattedAddress":{"type":"string"},"message":{"type":"string"}}}]}}}},"400":{"description":"Invalid or missing parameters","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Home-value estimate provider unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/agent/v1/calculators/time-savings":{"get":{"operationId":"evaluate_time_savings","summary":"Time savings calculator","description":"Set home size and prep answers to return estimated hours saved by selling with Opendoor instead of a traditional listing.","parameters":[{"name":"home_size","in":"query","required":false,"description":"Home size band used for hour estimates.","schema":{"type":"string","enum":["1","2","3","4"]}},{"name":"cleaning","in":"query","required":false,"description":"Whether the home needs cleaning before listing.","schema":{"type":"boolean"}},{"name":"staging","in":"query","required":false,"description":"Whether the home needs staging before listing.","schema":{"type":"boolean"}},{"name":"repairs","in":"query","required":false,"description":"Whether the home needs repairs before listing.","schema":{"type":"boolean"}},{"name":"decluttering","in":"query","required":false,"description":"Whether the home needs decluttering before listing.","schema":{"type":"boolean"}},{"name":"life_stage","in":"query","required":false,"description":"Life-stage copy on the result card. Does not change the hour math.","schema":{"type":"string","enum":["1","2","3","4","5","6","7","8","9"]}}],"responses":{"200":{"description":"Structured calculator result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"inputs":{"type":"object","properties":{"homeSize":{"type":"string","pattern":"^[0-4]$"},"cleaning":{"type":"string","pattern":"^[0-2]$"},"staging":{"type":"string","pattern":"^[0-2]$"},"repairs":{"type":"string","pattern":"^[0-2]$"},"decluttering":{"type":"string","pattern":"^[0-2]$"},"lifeStage":{"type":"string","pattern":"^[0-9]$"},"homeSizeLabel":{"type":["string","null"]},"lifeStageLabel":{"type":["string","null"]}},"required":["homeSize","cleaning","staging","repairs","decluttering","lifeStage","homeSizeLabel","lifeStageLabel"],"additionalProperties":false},"pageUrl":{"type":"string"},"disclaimer":{"type":"string"},"result":{"anyOf":[{"type":"object","properties":{"hoursSaved":{"type":"number"},"allPrepNo":{"type":"boolean"},"message":{"type":["string","null"]}},"required":["hoursSaved","allPrepNo","message"],"additionalProperties":false},{"type":"null"}]}},"required":["inputs","pageUrl","disclaimer","result"],"additionalProperties":false}}}}}}}},"components":{"schemas":{"Problem":{"type":"object","required":["type","title","status","detail","instance","code","message","resolution"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"instance":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"}},"additionalProperties":false}}}}