---
title: "Home affordability — max price/loan from income and DTI"
method: POST
path: "/v1/mortgage/affordability"
tags: ["Utilities"]
---

# Home affordability — max price/loan from income and DTI

`POST /v1/mortgage/affordability`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/mortgage/affordability`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Estimates the maximum home price and loan a buyer can afford from income, existing monthly debts, and a down payment, under the standard front-end (housing / income, default 28%) and back-end (total debt / income, default 36%) DTI limits. Solves for the price given that property tax, insurance, and PMI scale with the home value (a fixed-point iteration), and returns the binding limit plus the monthly PITI + HOA + PMI breakdown at the max. Deterministic; not lending advice.

## Request body

- AffordabilityRequest
  - `annual_income` number, required: Gross.
  - `monthly_debts` number, required: Existing minimum payments (back-end DTI).
  - `down_payment` number, required
  - `interest_rate` number, required: Annual mortgage APR.
  - `term_months` integer: Omit for 360.
  - `front_end_dti` number: Housing / income; omit for 0.28.
  - `back_end_dti` number: Total debt / income; omit for 0.36.
  - `property_tax_rate` number: Annual; omit for 0.011.
  - `insurance_rate` number: Annual; omit for 0.005.
  - `pmi_rate` number: Annual, on the loan when LTV > 80%; omit for 0.007.
  - `hoa_monthly` number

## Response `200`

The affordability estimate

- AffordabilityResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` AffordabilityRequest
    - `annual_income` number, required: Gross.
    - `monthly_debts` number, required: Existing minimum payments (back-end DTI).
    - `down_payment` number, required
    - `interest_rate` number, required: Annual mortgage APR.
    - `term_months` integer: Omit for 360.
    - `front_end_dti` number: Housing / income; omit for 0.28.
    - `back_end_dti` number: Total debt / income; omit for 0.36.
    - `property_tax_rate` number: Annual; omit for 0.011.
    - `insurance_rate` number: Annual; omit for 0.005.
    - `pmi_rate` number: Annual, on the loan when LTV > 80%; omit for 0.007.
    - `hoa_monthly` number
  - `result` object
    - `max_housing_payment` number: The binding PITI+HOA budget (monthly).
    - `binding_limit` 'front_end' | 'back_end'
    - `max_loan` number
    - `max_home_price` number: max loan + down payment.
    - `principal_interest` number
    - `property_tax` number
    - `insurance` number
    - `pmi` number
    - `hoa` number
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
