Reports
The pipeline and funded volume, as the Business pages show them, and the report builder: report templates and bulk report runs.
Read the open pipeline by stage
The open deals on each stage of the broker's pipelines, with their loan amounts, as the Business pages show them. A funded, lost or archived deal is not counted. The figures are for the key's broker, or for the team broker who shares reports with them.
Read the open pipeline by stage › Responses
Success
successAlways true on a successful response.
The requested record.
Read funded volume by month
The deals that funded in a period, and their volume, in total and for each month, as the Business pages show them. The period is this year to date unless you send another. A period covers at most five years.
query Parameters
periodThe period to sum: ytd, qtd, mtd. Defaults to ytd. Do not send it with start and end.
startThe first day of a custom period, as YYYY-MM-DD. Send it with end.
endThe last day of a custom period, as YYYY-MM-DD. Send it with start.
Read funded volume by month › Responses
Success
successAlways true on a successful response.
The requested record.
List report templates
The brokerage's report templates, the layouts a broker saves in the report builder. The most recently changed come first.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
List report templates › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Create a report template
Saves a report layout as a template for the whole brokerage. Every broker can use it and change it, the same as a template saved in the report builder.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Create a report template › Request Body
nameThe template name. At most 200 characters.
The report layout that the report builder in BrokerPlus edits. It holds no client data: each report fills the widgets in from the deal when it is made.
descriptionWhat the template is for. At most 1000 characters.
Create a report template › Responses
Success
successAlways true on a successful response.
The requested record.
Update a report template
Changes the name, the description, or the layout. A new layout replaces the old one. A bulk report run that already started keeps the layout it started with.
path Parameters
idResource id.
Update a report template › Request Body
nameThe template name. At most 200 characters.
descriptionWhat the template is for. Send null to clear it.
The whole new layout. It replaces the old one.
Update a report template › Responses
Success
successAlways true on a successful response.
The requested record.
List bulk report runs
The bulk report runs on the broker's teams, newest first. A run makes one PDF report for each deal it was given.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
List bulk report runs › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Start a bulk report run
Makes one PDF report for each deal, from a report template or a layout, the same as Bulk Reports in BrokerPlus. The reports are made in the background: poll GET /bulk-report-runs/{id}. BrokerPlus sends nothing to the clients.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Start a bulk report run › Request Body
deal_idsThe deals to make a report for, one report each, at most 500. A deal the broker cannot read is left out.
template_idThe report template to use. Send this or layout. If you send both, the template wins.
A layout to use instead of a saved template.
Start a bulk report run › Responses
Success
successAlways true on a successful response.
The requested record.
Retrieve a bulk report run
One run, with each report and its status. Poll this until status is done or failed, then get the files with GET /bulk-report-runs/{id}/files.
path Parameters
idResource id.
Retrieve a bulk report run › Responses
Success
successAlways true on a successful response.
The requested record.
Get the files of a bulk report run
Links to the PDF of each report that is ready, and to the ZIP file with all of them. Each link stops working after 1 hour: call again for new links.
path Parameters
idResource id.
Get the files of a bulk report run › Responses
Success
successAlways true on a successful response.
The requested record.
List goals
The broker's goals, with where they stand today, as the goals card on the Business pages shows them. This is the key's broker's goals, or the team broker's when they share reports with them, and every goal that covers the whole brokerage. pace is worked out from the funded deals each time you read it.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
List goals › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Set a goal
Sets a goal for the key's broker. A goal is named by its metric, period_start and lender_id: if the broker already has a goal with the same three, this replaces its target and settings. A key cannot set a goal for another broker, or for the whole brokerage. Supports Idempotency-Key.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Set a goal › Request Body
metricWhat the goal counts: funded_volume is the funded amounts in dollars, funded_units is the number of deals funded, and net_commission is the broker's commission in dollars.
period_startThe first day the goal covers. With metric and lender_id, it names the goal: a second goal with the same three replaces the first.
period_endThe last day the goal covers. It must be after period_start.
targetThe target for the whole period, in the goal's metric.
curveHow the target is spread over the months. Default straight_line.
The broker's own target for some months, keyed YYYY-MM. A month named here takes that target, and the rest of the goal is spread over the other months.
lender_idCount only the deals funded with this lender, for a lender status goal. Find it with GET /v1/lenders. Leave it out for the whole book.
tier_nameYour name for the lender status, for example Platinum. At most 60 characters.
Set a goal › Responses
Success
successAlways true on a successful response.
The requested record.
Change a goal
Changes the target, the end of the period, the curve, the months the broker set by hand, or the status name. To change the metric, the start or the lender, set a new goal and delete this one. Only the key's broker's own goals can change.
path Parameters
idResource id.
Change a goal › Request Body
period_endThe last day the goal covers. It must be after period_start.
targetThe target for the whole period, in the goal's metric.
curveHow the target is spread over the months: straight_line evenly, seasonal heavier in the spring and the summer, as mortgage business is.
The broker's own target for some months, keyed YYYY-MM. Send null to spread the whole target along the curve again.
tier_nameYour name for the lender status. Send null to clear it.
Change a goal › Responses
Success
successAlways true on a successful response.
The requested record.