Model MatchHelp

Market

Market summary (volume, units, rate, loan amount, credit score, LTV, DTI, income, etc.) with previous-period comparison

postapi.modelmatch.com/v1/market/analytics/summary

Authorization

x-api-keystringrequired

API key or OAuth token. See Authentication.

Body application/json

advancedFiltersone of
Show child attributes
Option 1object
Show child attributes
childrenone of[]required

Array of filter expressions (AND)

Same shape as its parent.

typeenumrequired
Options:and
Option 2object
Show child attributes
childrenone of[]required

Array of filter expressions (OR)

Same shape as its parent.

typeenumrequired
Options:or
Option 3object
Show child attributes
childone ofrequired

Same shape as its parent.

typeenumrequired
Options:not
Option 4object
Show child attributes
fieldstringrequired
openumrequired

Comparison operator. exists means the field has a REAL value: on fields whose source records an unknown as an in-domain value (e.g. beds, squareFeet, lotSquareFeet, where an unrecorded measurement is stored as 0), those docs count as NOT existing. neq keeps docs with no value — it removes only what is known to equal the value, matching the reading of an exclusion.

Options:eqneqgtgteltltebetweeninmatchgeoDistanceexists
typeenumrequired
Options:filter
valuenull

Comparison value

filtersone of
Show child attributes
Option 1object
Show child attributes
childrenone of[]required

Array of filter expressions (AND)

Same shape as its parent.

typeenumrequired
Options:and
Option 2object
Show child attributes
childrenone of[]required

Array of filter expressions (OR)

Same shape as its parent.

typeenumrequired
Options:or
Option 3object
Show child attributes
childone ofrequired

Same shape as its parent.

typeenumrequired
Options:not
Option 4object
Show child attributes
fieldstringrequired
openumrequired

Comparison operator. exists means the field has a REAL value: on fields whose source records an unknown as an in-domain value (e.g. beds, squareFeet, lotSquareFeet, where an unrecorded measurement is stored as 0), those docs count as NOT existing. neq keeps docs with no value — it removes only what is known to equal the value, matching the reading of an exclusion.

Options:eqneqgtgteltltebetweeninmatchgeoDistanceexists
typeenumrequired
Options:filter
valuenull

Comparison value

flatFiltersobject
Show child attributes
amortizationTypeone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
appraisedValueone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
borrowerGenerationone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
channelone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
closingDateone of | null
Show child attributes
Option 1string

Exact date, or a whole period: YYYY-MM-DD (that day), YYYY-MM (the whole month — "2025-06" = 2025-06-01 through 2025-06-30) or YYYY (the whole year). YYYYMMDD, MM/DD/YYYY, an ISO-8601 datetime and epoch milliseconds are also accepted. An unparseable value is a 400.

Option 2object

Date range. Excludes null/missing-field docs by default; add includeNulls: true to keep them. Bounds accept YYYY, YYYY-MM, YYYY-MM-DD, YYYYMMDD, MM/DD/YYYY, a full ISO datetime or epoch milliseconds; an unparseable bound is a 400. A partial bound denotes the whole period and expands to the edge that preserves the operator: gte/lt take the period START, gt/lte take the period END — so {gte: "2024"} means on/after 2024-01-01 and {lte: "2024"} means through 2024-12-31.

Show child attributes
gtstring
gtestring
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires a bound.

ltstring
ltestring
combinedLtvone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
communityIncomeLevelone of | null

FFIEC income classification of the neighborhood the property sits in. A tract-level aggregate statistic describing the neighborhood, never an individual, household or applicant attribute. Carried on roughly a fifth of originations, so this filter narrows sharply.

Show child attributes
Option 1enum

One of (case-insensitive): low, moderate, middle, upper

Options:lowmoderatemiddleupper
Option 2enum[]

Match any of these values

Options:lowmoderatemiddleupper
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
countyone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
countyCodeone of | null

3-digit county code (the county segment of a FIPS, e.g. Philadelphia = "101"). Pair it with state — the code is not unique across states. county accepts a county NAME or 5-digit FIPS and resolves to this code for you.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
craEligibleboolean

Only CRA-eligible originations (a low- or moderate-income neighborhood OR a low- or moderate-income borrower). Determined on every origination.

creditScoreone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
currentHomeOwnerboolean | null
dtione of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
dtifrontone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
firstTimeHomebuyerboolean | null
hmdaActionTakenone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
incomeone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
loanAmountone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
loanApplicationDateone of | null
Show child attributes
Option 1string

Exact date, or a whole period: YYYY-MM-DD (that day), YYYY-MM (the whole month — "2025-06" = 2025-06-01 through 2025-06-30) or YYYY (the whole year). YYYYMMDD, MM/DD/YYYY, an ISO-8601 datetime and epoch milliseconds are also accepted. An unparseable value is a 400.

Option 2object

Date range. Excludes null/missing-field docs by default; add includeNulls: true to keep them. Bounds accept YYYY, YYYY-MM, YYYY-MM-DD, YYYYMMDD, MM/DD/YYYY, a full ISO datetime or epoch milliseconds; an unparseable bound is a 400. A partial bound denotes the whole period and expands to the edge that preserves the operator: gte/lt take the period START, gt/lte take the period END — so {gte: "2024"} means on/after 2024-01-01 and {lte: "2024"} means through 2024-12-31.

Show child attributes
gtstring
gtestring
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires a bound.

ltstring
ltestring
loanPurposeone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
loanStatusone of | null

HMDA action, else funding/denial/lock date evidence.

Show child attributes
Option 1enum

One of (case-insensitive): funded, purchased, not_funded, pending

Options:fundedpurchasednot_fundedpending
Option 2enum[]

Match any of these values

Options:fundedpurchasednot_fundedpending
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
loanTermone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
loanTypeone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
lowModIncomeTractboolean

Only originations in a low- or moderate-income neighborhood. This describes the U.S. Census tract (neighborhood) as a whole — a tract-level aggregate statistic, never an individual, household or applicant attribute. false also matches originations whose neighborhood carries no income classification; pair with communityIncomeLevel when you need the classified population only.

ltvone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
majorityMinorityTractboolean

Only originations in a majority-minority neighborhood. This describes the U.S. Census tract (neighborhood) as a whole — a tract-level aggregate statistic, never an individual, household or applicant attribute. Carried on about half of originations.

metroone of | null

Metro area code (5-digit federal CBSA code, e.g. Los Angeles = "31084"). Roughly half of originations sit outside any metro area and carry no code, so a metro filter is a narrowing one.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
middleIncomeTractboolean

Only originations in a middle-income neighborhood. Tract-level aggregate, never an individual attribute. Same caveat on false as lowModIncomeTract.

minorityTractPctone of | null

Non-white share (0-100) of the neighborhood's population. Tract-level aggregate, never an individual attribute.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
modeenum
Options:andor
noteRateone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
occupancyTypeone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
propertyTypeone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
purchasePriceone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
selfEmployedboolean | null
stateone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
tractIncomeVsMetroPctone of | null

Neighborhood median family income as a percent of its metro area's — 100 is parity, and it legitimately exceeds 100. Tract-level aggregate, never an individual attribute.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
veteranIndicatorboolean | null
zipone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
periodenum

Date window for loans / sales / market endpoints. Accepts every Period value plus rolling windows: last30Days / last60Days / last90Days (today minus 30 / 60 / 90 days through today), previousMonth (the last complete calendar month) and currentMonth (the 1st of this month through today). All windows are resolved in UTC with inclusive calendar-date bounds. Rolling windows are only accepted by the loans, sales and market endpoints (list, count, breakdowns, analytics summary / time-series / chart); originators / companies / branches / agents / offices endpoints return 400 for them.

Options:2017201820192020202120222023202420252026last3Monthslast6Monthslast12Monthslast14Monthslast16Monthslast18Monthslast24MonthsyearToDateallTimelast30Dayslast60Dayslast90DayspreviousMonthcurrentMonth

Responses

200object16 market metrics + previous-period comparison
Show attributes
completenessobject

Data-completeness watermark for this response. Present only when it could be measured; absence means it was not measured, NOT that the data is complete.

Show child attributes
throughdaterequired

The last calendar date (YYYY-MM-DD) this query's matching records actually reach. Records arrive after the events they describe, so a period ending today is normally backed by data ending days or weeks earlier, and any bucket extending past this date is built from a partial period. Measured from THIS query's own matched set, not a global figure: the delay varies by geography and moves over time, so two requests with different filters can legitimately report different dates.

currentobjectrequired
Show child attributes
avgAppraisedValuenumber | nullrequired

Average appraised property value. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgCombinedLtvnumber | nullrequired

Average combined LTV (including subordinate liens). Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgCreditScorenumberrequired

Average credit score. Excludes values outside 300–850 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgDTInumberrequired

Average back-end DTI ratio across loan APPLICATIONS matching the filters — every outcome, on the same population as units. A denied application carries a much higher ratio than a funded loan, often above 100, so this figure sits several points above what closed borrowers actually carry. For originations use originatedAvgDti. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgDtiFrontnumber | nullrequired

Average front-end DTI ratio. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgIncomenumberrequired

Average household annual income. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLTVnumberrequired

Average LTV ratio. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLoanAmountnumberrequired

Average loan amount. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLoanTermnumber | nullrequired

Average loan term in months. Excludes values outside 0–1,200 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgPurchasePricenumber | nullrequired

Average purchase price. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgRatenumberrequired

Average note rate. Excludes values outside 0–25 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

excludedobject

Per-measure count of documents this query's sentinel guard excluded — documents that carry the measure's field but whose value is an out-of-range fill. Compare against units to see what share of the matched population each average was actually computed over. Absent for units (a document count, not a guarded metric).

Show child attributes
avgAppraisedValuenumber
avgCombinedLtvnumber
avgCreditScorenumber
avgDTInumber
avgDtiFrontnumber
avgIncomenumber
avgLTVnumber
avgLoanAmountnumber
avgLoanTermnumber
avgPurchasePricenumber
avgRatenumber
originatedAvgDtinumber
originatedVolumenumber
volumenumber
originatedAvgDtinumber | nullrequired

Average back-end DTI ratio across ORIGINATED loans only — the subset of applications whose hmdaActionTaken is "loan originated". Prefer this over avgDTI for any question about what borrowers who actually got a loan are carrying. avgDTI averages applications of EVERY outcome, and a denied application legitimately carries a far higher ratio — often above 100 — because that is frequently why it was denied, so the two figures differ by several points on the same filters and neither is a correction of the other. null when the matched set contains no originations. Excludes values outside 0–100 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

originatedUnitsnumberrequired

Loans ORIGINATED — the subset of units whose hmdaActionTaken is "loan originated". This is the count most callers mean by "number of loans"

originatedVolumenumberrequired

Total dollar volume of ORIGINATED loans — the subset of volume whose hmdaActionTaken is "loan originated". Pair with originatedUnits for an originated average loan size. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

outcomesobject[]

How the matched applications split by outcome — a complete PARTITION of units and volume, so the two headline numbers can be reconciled against their parts without a second query. Roughly half of all rows are not originated loans and the share varies widely by geography, so no fixed correction ratio exists. Summary only: on the chart use slice: "hmdaActionTaken", on the time-series segment: "hmdaActionTaken".

Show child attributes
outcomestringrequired

The application outcome, exactly as stored — the same vocabulary the hmdaActionTaken filter accepts, so any bucket here can be reproduced as a filter. The empty-string bucket carries rows with no outcome recorded. One value is a leaked source header row and is not a real outcome.

unitsnumberrequired

Applications with this outcome. These sum to units.

volumenumberrequired

Dollar volume for this outcome. These sum to volume.

unitsnumberrequired

Loan APPLICATIONS matching the filters — every outcome, not just originations. Withdrawn, denied, closed-for-incompleteness and secondary-market purchases are all counted here; roughly half of all rows are not originated loans, and the originated share varies enough by geography that no fixed correction ratio exists. For originations use originatedUnits; outcomes reports the full breakdown, and hmdaActionTaken filters on it

volumenumberrequired

Total dollar volume of loan APPLICATIONS matching the filters — every outcome, on the same population as units, not just originations. For originated dollars use originatedVolume. volume ÷ units is an application average, not an originated average. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

previousobjectrequired
Show child attributes
avgAppraisedValuenumber | nullrequired

Average appraised property value. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgCombinedLtvnumber | nullrequired

Average combined LTV (including subordinate liens). Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgCreditScorenumberrequired

Average credit score. Excludes values outside 300–850 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgDTInumberrequired

Average back-end DTI ratio across loan APPLICATIONS matching the filters — every outcome, on the same population as units. A denied application carries a much higher ratio than a funded loan, often above 100, so this figure sits several points above what closed borrowers actually carry. For originations use originatedAvgDti. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgDtiFrontnumber | nullrequired

Average front-end DTI ratio. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgIncomenumberrequired

Average household annual income. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLTVnumberrequired

Average LTV ratio. Excludes values outside 0–999 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLoanAmountnumberrequired

Average loan amount. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgLoanTermnumber | nullrequired

Average loan term in months. Excludes values outside 0–1,200 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgPurchasePricenumber | nullrequired

Average purchase price. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

avgRatenumberrequired

Average note rate. Excludes values outside 0–25 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

excludedobject

Per-measure count of documents this query's sentinel guard excluded — documents that carry the measure's field but whose value is an out-of-range fill. Compare against units to see what share of the matched population each average was actually computed over. Absent for units (a document count, not a guarded metric).

Show child attributes
avgAppraisedValuenumber
avgCombinedLtvnumber
avgCreditScorenumber
avgDTInumber
avgDtiFrontnumber
avgIncomenumber
avgLTVnumber
avgLoanAmountnumber
avgLoanTermnumber
avgPurchasePricenumber
avgRatenumber
originatedAvgDtinumber
originatedVolumenumber
volumenumber
originatedAvgDtinumber | nullrequired

Average back-end DTI ratio across ORIGINATED loans only — the subset of applications whose hmdaActionTaken is "loan originated". Prefer this over avgDTI for any question about what borrowers who actually got a loan are carrying. avgDTI averages applications of EVERY outcome, and a denied application legitimately carries a far higher ratio — often above 100 — because that is frequently why it was denied, so the two figures differ by several points on the same filters and neither is a correction of the other. null when the matched set contains no originations. Excludes values outside 0–100 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

originatedUnitsnumberrequired

Loans ORIGINATED — the subset of units whose hmdaActionTaken is "loan originated". This is the count most callers mean by "number of loans"

originatedVolumenumberrequired

Total dollar volume of ORIGINATED loans — the subset of volume whose hmdaActionTaken is "loan originated". Pair with originatedUnits for an originated average loan size. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

outcomesobject[]

How the matched applications split by outcome — a complete PARTITION of units and volume, so the two headline numbers can be reconciled against their parts without a second query. Roughly half of all rows are not originated loans and the share varies widely by geography, so no fixed correction ratio exists. Summary only: on the chart use slice: "hmdaActionTaken", on the time-series segment: "hmdaActionTaken".

Show child attributes
outcomestringrequired

The application outcome, exactly as stored — the same vocabulary the hmdaActionTaken filter accepts, so any bucket here can be reproduced as a filter. The empty-string bucket carries rows with no outcome recorded. One value is a leaked source header row and is not a real outcome.

unitsnumberrequired

Applications with this outcome. These sum to units.

volumenumberrequired

Dollar volume for this outcome. These sum to volume.

unitsnumberrequired

Loan APPLICATIONS matching the filters — every outcome, not just originations. Withdrawn, denied, closed-for-incompleteness and secondary-market purchases are all counted here; roughly half of all rows are not originated loans, and the originated share varies enough by geography that no fixed correction ratio exists. For originations use originatedUnits; outcomes reports the full breakdown, and hmdaActionTaken filters on it

volumenumberrequired

Total dollar volume of loan APPLICATIONS matching the filters — every outcome, on the same population as units, not just originations. For originated dollars use originatedVolume. volume ÷ units is an application average, not an originated average. Excludes values outside 0–100,000,000 — the source encodes unknown values as an out-of-range fill, and averaging them raw is wrong by orders of magnitude. The bound is applied before the metric and is not part of the public filter surface, so an equivalent range filter will not reproduce this figure exactly.

400objectValidation error
401objectUnauthorized
403objectForbidden (authenticated, but missing required context — e.g. no active organization)
404objectNot found
413objectResponse payload too large — detail endpoint capped to fit Lambda response limits
503objectSearch timed out or the cluster is overloaded — retry after `Retry-After` seconds.