Every resource follows the same shape, so once you’ve made one request you can make them all.
Your first request
Fetch recent purchase loans in California with a single request:
curl -X POST https://api.modelmatch.com/v1/loans \
-H "x-api-key: mm_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"flatFilters": {
"state": "CA",
"transactionType": "purchase"
},
"sort": [{ "field": "mortgageDate", "order": "desc" }],
"pagination": { "size": 25 }
}'
Every list endpoint returns the same shape — a data array, a total count, and a cursor for the next page:
{
"data": [{ "id": "...", "state": "CA", "mortgageAmount": 750000, ... }],
"total": 142857,
"cursor": "eyJzb3J0IjpbIjIwMjQt..."
}
How the API Works
All resources follow the same conventions, so once you learn one, you know them all.
List vs Detail
Every resource has two endpoints:
- List (
POST /v1/<resource>) — paginated summaries with filtering, sorting, and analytics - Detail (
GET /v1/<resource>/{id}) — the complete record with all nested data
List endpoints return compact summaries (loan amount, address, originator name). Detail endpoints return everything — buyers, sellers, agents, valuation history, title company, and more.
Common Capabilities
All list endpoints support:
- Pagination — cursor-based, up to 100 results per page
- Filtering — flat filters or boolean trees
- Sorting — multi-field sort via the
sortarray - Period scoping — time-bounded queries (
"2024","last12Months","yearToDate","allTime") - Analytics — most resources (agents, originators, loans, sales, market) expose
/analytics/summary,/analytics/time-series, and/analytics/chartsub-endpoints
Base URL
https://api.modelmatch.com