Agents
Mortgage companies the agent dealt with (pre-aggregated)
Authorization
Path parameters
idstringrequiredAgent document ID
Body application/json
bySidebooleanAlso return the buyer and listing views under bySide, computed in the same query — each identical to calling again with that side. Use instead of one call per side. pagination.cursor pages every view in step (each view's own cursor is absent once it ends).
periodenumPre-aggregated period block. Rolling windows (last30Days, last60Days, last90Days, previousMonth, currentMonth) are NOT accepted here and return 400; they are supported on the loans, sales and market endpoints (list, count, breakdowns, analytics summary / time-series / chart) (see DatedPeriod).
2017201820192020202120222023202420252026last3Monthslast6Monthslast12Monthslast14Monthslast16Monthslast18Monthslast24MonthsyearToDateallTimesideenumWhich side of the deal the agent was on. buyer: the agent represented the buyer — deals where the agent was on BOTH sides (dual) count here. listing: the agent represented the seller only (duals are already in buyer). any (default): either side, each deal once. buyer + listing = any.
anybuyerlistingsortobject[]Show child attributesHide child attributes
fieldenumrequiredOne of (case-insensitive): volume, units, label, pctVolume, pctUnits, name
volumeunitslabelpctVolumepctUnitsnameorderenumascdescResponses
200objectPre-aggregated companies breakdown from the agent's scored docShow attributesHide attributes
bySideobjectPresent when the request set bySide: the buyer and listing views of this response.
Show child attributesHide child attributes
buyerobjectrequiredShow child attributesHide child attributes
cursorstringOpaque cursor for the next page; absent when this is the last page.
dataobject[]requiredtotalnumberrequiredNumber of buckets returned
totalsobjectGrand totals across all data
truncatedbooleanTrue when more buckets exist beyond this page. Page through with cursor, or sort by label to enumerate the full key space.
listingobjectrequiredShow child attributesHide child attributes
cursorstringOpaque cursor for the next page; absent when this is the last page.
dataobject[]requiredtotalnumberrequiredNumber of buckets returned
totalsobjectGrand totals across all data
truncatedbooleanTrue when more buckets exist beyond this page. Page through with cursor, or sort by label to enumerate the full key space.
cursorstringOpaque cursor for the next page; absent when this is the last page.
dataobject[]requiredShow child attributesHide child attributes
companyobjectAgent and company originators only: the LO's employer per NMLS licensing (on agents, as of the agent profile's last refresh) — not necessarily the company on the loans, and it can trail a very recent move (GET /v1/originators/{nmlsId} is always current). Absent on every other breakdown; null leaves when no sponsorship was on file.
Show child attributesHide child attributes
namestring | nullrequirednmlsIdstring | nullrequiredcontactobject | nulloriginatorAgents only: the agent's email and direct phone — the same email / phone GET /v1/agents/{id} and the agents list report. Each leaf is null when the agent's record has none; null when the agent id matches no record. Absent on rows without an agent id and on every other breakdown.
Show child attributesHide child attributes
emailstring | nullrequiredphonestring | nullrequiredexcludednumberHow many of this bucket's documents the volume guard excluded — documents that carry the money field but whose value is an out-of-range fill. Compare against units to see what share of the bucket volume was actually computed over: a bucket can show many units and still sum a small fraction of them. Absent when the entity's money column is unguarded (the sales-backed agent breakdowns), where nothing can be excluded.
idstringMachine value behind label for breakdowns whose bucket key is an id rather than a name (lenders, where label is the dictionary display name and id is the normalized lender key — pass id, not label, back as a lender filter value; agent originators, where id is the LO's NMLS id; originatorAgents, where id is the agent id most often recorded under that name; titleCompanies, where id is the normalized name the spellings were merged under). Absent on name-keyed breakdowns, where label is already the machine value.
labelstringrequiredBucket label/key
namestringHuman-readable name for the bucket when label is an entity id (e.g. a broker NMLS id resolved to its company name). Absent when unresolved or not an id-keyed breakdown.
officeobject | nulloriginatorAgents only: the agent's brokerage office — the same office GET /v1/agents/{id} and the agents list report as office, picked from the offices on the agent's profile by recency and frequency, so it can trail a very recent move and is not necessarily the office on these loans. id is the office id (pass it to GET /v1/offices/{id}); null when the office has none. null when the agent has no named office on file; absent on rows without an agent id and on every other breakdown.
Show child attributesHide child attributes
idstring | nullrequirednamestringrequiredpctUnitsnumberrequiredPercentage of total units
pctVolumenumberrequiredPercentage of total volume
unitsnumberrequiredNumber of transactions
volumenumberrequiredTotal dollar volume
totalnumberrequiredNumber of buckets returned
totalsobjectGrand totals across all data
Show child attributesHide child attributes
excludednumberDocuments the volume guard excluded across the whole scope — the grand-total counterpart of a bucket's excluded, and the same figure /analytics/summary reports as current.excluded.volume for an equivalent query. Absent when the money column is unguarded.
unitsnumberrequiredvolumenumberrequiredvolumePlausiblebooleanFalse when volume is a pre-summed figure this API can show is impossible — e.g. an average sale price per unit far outside any real market, or buyer-side and seller-side averages that contradict each other. pctVolume on every item is that figure's quotient, so when this is false those percentages are unusable and should not be rendered as shares. A MAGNITUDE check only: true means "not obviously impossible", NOT "verified". Absent on surfaces that aggregate documents live, where no such figure is read.
truncatedbooleanTrue when more buckets exist beyond this page. Page through with cursor, or sort by label to enumerate the full key space.
400objectValidation error401objectUnauthorized403objectForbidden (authenticated, but missing required context — e.g. no active organization)404objectNot found413objectResponse payload too large — detail endpoint capped to fit Lambda response limits503objectSearch timed out or the cluster is overloaded — retry after `Retry-After` seconds.