Model MatchHelp

Companies

Analyze LO arrivals and departures for a company

postapi.modelmatch.com/v1/companies/{nmlsId}/sponsorship-movement

Authorization

x-api-keystringrequired

API key or OAuth token. See Authentication.

Path parameters

nmlsIdstringrequired

Company NMLS ID

Body application/json

dateFromstring

Window start (ISO date, default 12 mo ago)

dateTostring

Window end (ISO date, default today)

directionenumdefault: "both"
Options:arrivalsdeparturesboth
sizenumberdefault: 25

Max example individuals per direction (0–500, default 25; a fractional value is rounded down). Affects ONLY the arrivals/departures row lists — every count and breakdown covers the full population regardless.

Responses

200objectMovement analysis
Show attributes
alreadyAtCompanynumberrequired

Counted in summary.arrivals but NOT a hire: already sponsored by this company before the window and merely added a state license.

arrivalSourcesobject[]required

Prior employers of the fromOtherCompany group, by distinct individuals, over the FULL population. An attribution, not a partition: an individual who ended sponsorships at two companies inside the window is counted under both, so this may sum above fromOtherCompany. Complete unless arrivalSourcesTruncated is true.

Show child attributes
companyNamestringrequired
companyNmlsIdstring | nullrequired
countnumberrequired
arrivalSourcesTruncatedbooleanrequired

true when more distinct employers matched than arrivalSources can hold (1000); the list is then the largest 1000 and no longer accounts for all of fromOtherCompany. false means the list is complete. The scalar counts are unaffected either way.

arrivalsobject[]required
Show child attributes
movementKindenumrequired

Which group this arrival falls in — the row-level twin of fromOtherCompany / newToIndustry / alreadyAtCompany. from_other_company: moved here from a different employer (named in previousCompany). new_to_industry: no prior sponsorship at any company. already_at_company: already sponsored here before the window and merely added a state license — not a move.

Options:from_other_companynew_to_industryalready_at_company
namestringrequired
nmlsIdstringrequired
previousCompanystring | nullrequired
previousCompanyNmlsIdstring | nullrequired
startDatestringrequired

When this individual actually joined — the earliest sponsorship start at this company, not the license row that matched the window.

departureDestsobject[]required

Onward employers of the toOtherCompany group, by distinct individuals, over the FULL population. Same attribution caveat as arrivalSources. Complete unless departureDestsTruncated is true.

Show child attributes
companyNamestringrequired
companyNmlsIdstring | nullrequired
countnumberrequired
departureDestsTruncatedbooleanrequired

true when more distinct employers matched than departureDests can hold (1000); the list is then the largest 1000 and no longer accounts for all of toOtherCompany. false means the list is complete. The scalar counts are unaffected either way.

departuresobject[]required
Show child attributes
endDatestringrequired
movementKindenumrequired

Which group this departure falls in — the row-level twin of toOtherCompany / leftIndustry / stillAtCompany. to_other_company: moved on to a different employer (named in nextCompany). left_industry: holds no open sponsorship at any company afterwards. still_at_company: still sponsored here; a state license lapsed — not an exit.

Options:to_other_companyleft_industrystill_at_company
namestringrequired
nextCompanystring | nullrequired
nextCompanyNmlsIdstring | nullrequired
nmlsIdstringrequired
fromOtherCompanynumberrequired

Arrivals who moved from a different employer. fromOtherCompany + newToIndustry + alreadyAtCompany equals summary.arrivals exactly.

leftIndustrynumberrequired

Departures holding no open sponsorship at any company afterwards.

newToIndustrynumberrequired

Arrivals with no prior sponsorship at any company — genuinely new to the industry.

stillAtCompanynumberrequired

Counted in summary.departures but NOT an exit: still holds an open sponsorship with this company; a state license lapsed.

summaryobjectrequired
Show child attributes
arrivalsnumberrequired

Individuals whose sponsorship with this company began inside the window. Counts LICENSING EVENTS, not confirmed employer moves. A loan officer holds a separate sponsorship record for every state they are licensed in, so an existing team member who adds or lapses one state license registers here even though their employment did not change. The alreadyAtCompany / stillAtCompany fields report exactly how many of this total that is — subtract them for a move-only figure.

departuresnumberrequired

Individuals whose sponsorship with this company ended inside the window. Counts LICENSING EVENTS, not confirmed employer moves. A loan officer holds a separate sponsorship record for every state they are licensed in, so an existing team member who adds or lapses one state license registers here even though their employment did not change. The alreadyAtCompany / stillAtCompany fields report exactly how many of this total that is — subtract them for a move-only figure.

netChangenumberrequired
toOtherCompanynumberrequired

Departures who moved to a different employer. toOtherCompany + leftIndustry + stillAtCompany equals summary.departures 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.