The rates the broker and the brokerage set on the Rates page, as a PERCENT.
List the broker's own rates
The rates the broker set on the Rates page: a rate that replaces a live rate for one lender, term, and product, and every rate of a custom lender. Every rate is a PERCENT (4.29 means 4.29%). A rate with locked_by_brokerage set to true is not used: the brokerage sets that rate for every broker.
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 the broker's own rates › 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 one of the broker's rates
Sets the rate for one lender, term, and product, the same as a cell on the Rates page. Send lender_slug to replace the live rate of a lender BrokerPlus pulls, or custom_lender_name to set a rate for a custom lender. A rate that already exists for that lender, term, and product changes. Every rate is a PERCENT. The refinance, renewal, and penalty figures use the new rate when this call returns.
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 one of the broker's rates › Request Body
term_monthsThe term in months: 1 to 600 for a fixed rate, 0 for a variable rate, or -1 for a rental rate.
product_typeThe product: fixed, variable, or rental.
lender_slugA lender BrokerPlus pulls rates for, e.g. rbc. Send this or custom_lender_name, not both.
custom_lender_nameThe name of a custom lender. A name the broker already has, in any case, adds to that lender. A new name adds a lender.
rateThe rate as a PERCENT, e.g. 4.29. Required unless you send prime_offset.
prime_offsetFor a variable rate only: the difference from prime as a PERCENT, e.g. -0.85. BrokerPlus then calculates the rate from prime, and moves it when prime moves.
lender_categoryFor a custom lender only: the kind of lender. Null clears it.
noteThe broker's own note on the rate. Leave it out to keep the current note. Null clears it.
When the rate stops being good, as an ISO 8601 date. Leave it out to keep the current one. Null clears it.
Set one of the broker's rates › Responses
Success
successAlways true on a successful response.
The requested record.
Remove one of the broker's rates
Removes one rate. For a lender BrokerPlus pulls, the live rate is used again. For a custom lender, the lender has no rate for that term.
path Parameters
idResource id.
Remove one of the broker's rates › Responses
Success
successAlways true on a successful response.
The requested record.
Go back to live rates
Removes every rate the broker set for a lender BrokerPlus pulls, and every lender offset, so the live rates are used. Custom lenders and their rates stay. This is the same as Reset to Live Rates on the Rates page.
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.
Go back to live rates › Responses
Success
successAlways true on a successful response.
The requested record.
Add custom lenders with their rates
Adds lenders that BrokerPlus does not pull rates for, each with a rate for one or more terms. A name the broker already has adds the rates to that lender. Every rate is a PERCENT.
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 custom lenders with their rates › Request Body
The lenders to add, at most 25.
Add custom lenders with their rates › Responses
Success
successAlways true on a successful response.
The requested record.
Rename a custom lender
Gives a custom lender a new name on every one of its rates. Its slug does not change.
path Parameters
lenderSlugResource id.
Rename a custom lender › Request Body
nameThe new name for the custom lender.
Rename a custom lender › Responses
Success
successAlways true on a successful response.
The requested record.
List the broker's lender offsets
The offsets the broker set for a lender: a number of BASIS POINTS added to every live rate of that lender. A rate set for one term wins over the offset.
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 the broker's lender offsets › 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 lender offset
Sets the offset, in BASIS POINTS, for one lender BrokerPlus pulls rates for. An offset that already exists for the lender changes. A custom lender cannot have an offset.
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 lender offset › Request Body
lender_slugA lender BrokerPlus pulls rates for, e.g. rbc. Not a custom lender.
offset_bpsBASIS POINTS from -500 to 500, not 0. -10 means 0.10% below the live rate.
Set a lender offset › Responses
Success
successAlways true on a successful response.
The requested record.
List the brokerage's rates
The rates the brokerage set for every broker on the brokerage Rates page: a rate that replaces a live rate for one lender, term, and product, and every rate of a brokerage custom lender. A broker's own rate for the same lender, term, and product is not used while the brokerage sets one. Every rate is a PERCENT (4.29 means 4.29%). Only a key that belongs to a brokerage admin can call this.
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 the brokerage's rates › 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 one of the brokerage's rates
Sets the brokerage's rate for one lender, term, and product, for every broker. Send lender_slug to replace the live rate of a lender BrokerPlus pulls, or custom_lender_name for a brokerage custom lender. A rate that already exists for that lender, term, and product changes. Every rate is a PERCENT. Every broker's refinance, renewal, and penalty figures use the new rate when this call returns. Only a key that belongs to a brokerage admin can call this.
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 one of the brokerage's rates › Request Body
term_monthsThe term in months: 1 to 600 for a fixed rate, 0 for a variable rate, or -1 for a rental rate.
product_typeThe product: fixed, variable, or rental.
rateThe rate as a PERCENT, e.g. 4.19.
lender_slugA lender BrokerPlus pulls rates for, e.g. rbc. Send this or custom_lender_name, not both.
custom_lender_nameThe name of a custom lender. A name the brokerage already has, in any case, adds to that lender.
lender_categoryFor a custom lender only: the kind of lender. Null clears it.
noteA note every broker can read. Leave it out to keep the current note. Null clears it.
When the rate stops being good, as an ISO 8601 date. Leave it out to keep the current one. Null clears it.
Set one of the brokerage's rates › Responses
Success
successAlways true on a successful response.
The requested record.
Remove one of the brokerage's rates
Removes one brokerage rate. Each broker's own rate or the live rate is used again. Only a key that belongs to a brokerage admin can call this.
path Parameters
idResource id.
Remove one of the brokerage's rates › Responses
Success
successAlways true on a successful response.
The requested record.
Go back to live rates for the brokerage
Removes every brokerage rate for a lender BrokerPlus pulls, and every brokerage lender offset. Brokerage custom lenders and their rates stay. Only a key that belongs to a brokerage admin can call this.
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.
Go back to live rates for the brokerage › Responses
Success
successAlways true on a successful response.
The requested record.
List the brokerage's lender offsets
The offsets the brokerage set for a lender: a number of BASIS POINTS added to every live rate of that lender for every broker. Only a key that belongs to a brokerage admin can call this.
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 the brokerage's lender offsets › 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 brokerage lender offset
Sets the brokerage's offset, in BASIS POINTS, for one lender BrokerPlus pulls rates for. An offset that already exists for the lender changes. A custom lender cannot have an offset. Only a key that belongs to a brokerage admin can call this.
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 brokerage lender offset › Request Body
lender_slugA lender BrokerPlus pulls rates for, e.g. rbc. Not a custom lender.
offset_bpsBASIS POINTS from -500 to 500, not 0. -10 means 0.10% below the live rate.
Set a brokerage lender offset › Responses
Success
successAlways true on a successful response.
The requested record.
Remove a brokerage lender offset
Removes the brokerage's offset for one lender. Only a key that belongs to a brokerage admin can call this.
path Parameters
lenderSlugResource id.
Remove a brokerage lender offset › Responses
Success
successAlways true on a successful response.
The requested record.
List lender cashback
The cashback each lender pays at closing, as the opportunity figures use it: the brokerage's own rule where it set one, else the one BrokerPlus keeps. cashback_percent is a PERCENT of the balance (1 means 1%), and rate_premium_bps is in BASIS POINTS. The id is the lender's slug.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
List lender cashback › 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 the brokerage's cashback for a lender
Sets the brokerage's own cashback for one lender, in place of the one BrokerPlus keeps. It applies to every client whose best option is that lender. Send cashback_percent as a PERCENT, or flat_amount in dollars. Only a key that belongs to a brokerage admin can call this.
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 the brokerage's cashback for a lender › Request Body
lender_slugThe lender, e.g. td.
cashback_percentCashback as a PERCENT of the balance, from 0 to 20, e.g. 1 for 1%. Defaults to 0.
flat_amountA flat cashback in dollars, up to 100,000. When set, it wins over cashback_percent.
min_balanceThe smallest balance, in dollars, it applies to.
max_balanceThe largest balance, in dollars, it applies to.
rate_premium_bpsBASIS POINTS the product costs over the best rate, from 0 to 500.
Set the brokerage's cashback for a lender › Responses
Success
successAlways true on a successful response.
The requested record.
Go back to BrokerPlus's cashback for a lender
Removes the brokerage's own cashback for one lender, so the one BrokerPlus keeps applies again. Only a key that belongs to a brokerage admin can call this.
path Parameters
lenderSlugResource id.
Go back to BrokerPlus's cashback for a lender › Responses
Success
successAlways true on a successful response.
The requested record.
List rate sheets
The lender rate sheets uploaded in the brokerage, newest first, each with the rates BrokerPlus read from it. Every rate is a PERCENT (4.29 means 4.29%). The file itself is not returned.
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 rate sheets › 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.
Upload a rate sheet
Send a lender's rate sheet as multipart/form-data in a file field, or as JSON with content_base64. BrokerPlus reads the lender, the date, and every rate on it, and answers with them and the proposed mapping. Nothing changes on the broker's rates until you apply the sheet.
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.
Upload a rate sheet › Request Body
fileThe rate sheet. 50 MB maximum. Allowed: PDF, PNG, JPEG, WebP, or Word (.docx).
Upload a rate sheet › Responses
Success
successAlways true on a successful response.
The requested record.
Get a rate sheet
One rate sheet with the rates BrokerPlus read from it, and mapping: the rates it proposes for each cell of the Rates page. Build an apply from mapping.
path Parameters
idResource id.
Get a rate sheet › Responses
Success
successAlways true on a successful response.
The requested record.
Delete a rate sheet
Deletes the sheet and its file. The rates it put on the broker's rates stay, because the broker may have changed them since.
path Parameters
idResource id.
Delete a rate sheet › Responses
Success
successAlways true on a successful response.
The requested record.
Put a rate sheet's rates on the broker's rates
Sets the broker's own rate for each row you send, under the sheet's lender, the same as confirming a sheet on the Rates page. Send lender to file them under another lender: { "slug": "rbc" }, or { "slug": null, "name": "Beacon Trust" } for a custom lender. Every rate is a PERCENT. The refinance, renewal, and penalty figures use the new rates when this call returns.
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 rate sheet's rates on the broker's rates › Request Body
The rates to put on the broker's rates, one per cell. Leave a cell out to keep what is there.
File the rates under another lender than the one BrokerPlus read from the sheet.
lender_categoryFor a custom lender only: the kind of lender. Null clears it.
Put a rate sheet's rates on the broker's rates › Responses
Success
successAlways true on a successful response.
The requested record.