Opportunities
The book of tracked mortgages, with the penalty to break and the savings from moving.
List renewal and refinance opportunities
The book: one opportunity for each mortgage the brokerage tracks, with its balance, its penalty to break, and what the client saves by moving. Every rate is a percent (4.99 means 4.99%). Pass deal_id to get the one opportunity for a deal. A dismissed opportunity is in the list, with dismissed_at set; send dismissed=false to leave it out. The filters match the filters on the book in BrokerPlus, and you can combine them. A list filter takes values separated by commas, and an unknown value gets 400 VALIDATION_ERROR with the accepted values.
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.
deal_idReturns only the opportunity for this deal. A deal has at most one.
monthly_reports_enabledtrue returns only the clients enrolled in recurring equity reports, paused or not. false returns the rest.
dismissedtrue returns only the opportunities the broker took off the book (dismissed_at is set). false returns only the ones still on it.
archivedtrue returns only the mortgages whose term has ended, so that BrokerPlus archived the deal. false returns only the live ones, as the book shows by default.
maturity_fromReturns only the mortgages that mature on or after this day, as YYYY-MM-DD. The maturity date is the one on the deal's application, or the deal's own when the application has none. A mortgage with no maturity date is left out.
maturity_toReturns only the mortgages that mature on or before this day, as YYYY-MM-DD. Use it with maturity_from for a renewal window, for example maturity_from=2027-01-01&maturity_to=2027-03-31.
opportunity_typeReturns only these kinds of opportunity, separated by commas: renewal, pre_renewal, ird (a refinance worth breaking the term for), or both. This is the deal's opportunity_type.
product_typeReturns only these rate types, separated by commas: fixed, variable, arm (adjustable rate), or heloc (a secured line of credit). The rate type comes from the deal's application. A mortgage with no rate type matches none of them.
start_yearReturns only the mortgages that started in one of these years, separated by commas, for example 2021,2022. It reads start_date.
assigned_broker_idReturns only the mortgages on deals assigned to this broker. This is the deal's assigned_broker_id.
sortThe order of the list. updated_desc (the default) is the most recently changed first. maturity_asc is the soonest maturity first, and maturity_desc the latest first. last_client_contact_desc is the client who wrote most recently first, and last_client_contact_asc the reverse. A mortgage with no date sorts last. You can't use sort with updated_since, because a sync reads in updated_at order.
List renewal and refinance opportunities › 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.
Add a mortgage to the book
Adds a mortgage that BrokerPlus tracks but did not place, the same as Add Client on the book. BrokerPlus links the client by email, or creates the contact. It creates a deal for the mortgage and returns the new opportunity. interest_rate is a PERCENT (5.25 means 5.25%). Nothing is sent to the client. Each call creates an opportunity, so send Idempotency-Key to make a retry safe.
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.
Add a mortgage to the book › Request Body
first_nameThe client's first name. Required.
email^(?:[A-Za-z0-9_'+\-]… · requiredThe client's email. Required. BrokerPlus links the opportunity to the contact with this email, or creates one.
addressThe property's street address, e.g. 12 Main St. Required.
mortgage_amountThe original mortgage amount, in dollars. Required.
interest_rateThe rate the mortgage carries, as a PERCENT, e.g. 5.25 means 5.25%. Required.
maturity_date^(?:(?:\d\d[2468][04… · requiredWhen the term ends, as YYYY-MM-DD. Required.
last_nameThe client's last name.
cityThe property's city.
provinceThe property's province, as a two-letter code, e.g. ON.
postal_codeThe property's postal code.
balanceThe balance owing today, in dollars. Omit it to let BrokerPlus estimate it from the original amount and term_months.
term_monthsThe length of the term, in months. Without it, BrokerPlus does not estimate the balance: it uses balance, or mortgage_amount when you do not send balance.
amortization_monthsThe amortization, in months.
product_typefixed, variable, or arm (adjustable). The default is fixed.
lenderThe lender, as brokers name it.
property_valueWhat the property is worth, in dollars. Omit it to let BrokerPlus estimate it.
board_idThe pipeline the deal lands on. Omit it to use the default.
stage_idThe stage within board_id. Omit it to use the first stage.
Add a mortgage to the book › Responses
Success
successAlways true on a successful response.
The requested record.
Update what a tracked mortgage carries
Corrects the figures that come off a lender statement: the balance, the rate, the payment, the property value and the payout penalty. Send only the fields to change. interest_rate and prime_adjustment are PERCENT here (5.25 means 5.25%). A balance you send is paid down from today onward, and neither our nightly recalculation nor an import overwrites it; send null to hand it back. The penalties, savings and target rate on the object are recalculated from what you send, so they can all change in one response. segments replaces every part of a split mortgage, so send each one to keep.
path Parameters
idResource id.
Update what a tracked mortgage carries › Request Body
nameA title for this mortgage on the book. Clients never see it. Send null or an empty string to follow the deal's name.
balanceBalance owing, in dollars, as of now. BrokerPlus pays it down from today onward and stops re-deriving it. Send null to hand it back to BrokerPlus.
interest_rateThe rate the mortgage carries, as a PERCENT, e.g. 5.25 means 5.25%. Not a fraction. Use this for a fixed rate. Send null to clear.
prime_adjustmentFor a variable rate, the distance from prime, as a PERCENT. -0.5 means prime minus 0.50%. Send null to clear.
monthly_paymentThe payment, in dollars, on a MONTHLY basis, whatever the payment schedule is. Send null to clear.
property_valueWhat the property is worth, in dollars. This replaces our estimate. Send null to clear.
effective_penaltyThe penalty from the lender's payout statement, in dollars. This replaces the penalty BrokerPlus works out. Send null to clear.
penalty_typeWhich penalty the lender applies. Send null to let BrokerPlus decide.
comparison_rateThe lender's comparison rate for the penalty, as a PERCENT. This replaces the one BrokerPlus works out. Send null to clear.
collateral_chargeThe amount registered on title, in dollars, for a collateral charge. Send null to clear.
cashback_enabledCount a lender cashback in the savings.
cashback_overrideYour own cashback figure, in dollars. Send null to use the lender's.
property_bedroomsBedrooms. This replaces our figure. Send null to clear.
property_bathroomsBathrooms. This replaces our figure. Send null to clear.
property_sqftLiving area in square feet. This replaces our figure. Send null to clear.
property_year_builtYear built. This replaces our figure. Send null to clear.
property_typeThe kind of home, e.g. Condo. This replaces our figure. Send null to clear.
The parts of a split mortgage, in order. Replaces every segment, so send each one to keep. At least one must not be a heloc. Send [] to make it one loan again. The first segment that is not a heloc sets the product, rate and term of the opportunity, and the balances add up to its original amount.
Update what a tracked mortgage carries › Responses
Success
successAlways true on a successful response.
The requested record.
Start a deal from an opportunity
Creates a new working deal from a tracked mortgage, the same as New Deal on the opportunity in BrokerPlus. The deal gets the borrowers and the mortgage facts. The opportunity stays on the book. Returns the new deal. Each call creates a deal, so send Idempotency-Key to make a retry safe.
path Parameters
idResource id.
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 deal from an opportunity › Request Body
typeDeal type. Omit it to use the type that matches the opportunity, a refinance or a renewal.
board_idPipeline to land on. Omit it to use the broker's default pipeline for the type.
stage_idStage within board_id. Omit it to land on the first stage of the pipeline.
Start a deal from an opportunity › Responses
Success
successAlways true on a successful response.
The requested record.
Take an opportunity off the book
Stops the outreach for this mortgage, the same as Dismiss in BrokerPlus. Equity reports and renewal signals for it stop. Nothing is deleted. A second call changes nothing. Undo it with POST /opportunities/{id}/restore.
path Parameters
idResource id.
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.
Take an opportunity off the book › Responses
Success
successAlways true on a successful response.
The requested record.
Put a dismissed opportunity back on the book
Undoes a dismiss. The outreach continues from where it stopped. A second call changes nothing.
path Parameters
idResource id.
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.
Put a dismissed opportunity back on the book › Responses
Success
successAlways true on a successful response.
The requested record.
Snooze an opportunity
Hides the opportunity until a date and reminds the broker that morning, the same as Snooze in BrokerPlus. A new date replaces the old one.
path Parameters
idResource id.
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.
Snooze an opportunity › Request Body
until^(?:(?:\d\d[2468][04… · requiredThe day to remind the broker, as YYYY-MM-DD. It must be in the future. BrokerPlus reminds the broker that morning in the brokerage time zone.
Snooze an opportunity › Responses
Success
successAlways true on a successful response.
The requested record.
End a snooze
Clears snoozed_until and cancels the reminder. A call on an opportunity with no snooze changes nothing.
path Parameters
idResource id.
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.
End a snooze › Responses
Success
successAlways true on a successful response.
The requested record.