- Quote: a priced, indicative offer. A frozen snapshot of what we offered, when, and under which rules. Its options, inputs and eligibility never change; a changed input means a new quote. What people do with it, such as your client’s interest, is recorded on it afterwards.
- Application: a deal in progress toward a signed PFA and loan. It appears in your broker’s portal pipeline. Documents, requirements, the agreement and the loan accrue on it.
GET /v1/applications and GET /v1/applications/{id}, including the ones your brokers started in the Bridgeline portal and the ones that came in by email. Today your broker creates and finishes the application in the portal; accepting a quote to open one through the API is on the roadmap.
Reading applications needs the applications:read scope. Test keys don’t see applications yet.
Status
Each application has one coarsestatus. The detail lives in requirements.
- Use
statusfor the badge andrequirementsfor the detail. Duringprocessing,blockingalready lists what we know is missing. Fromawaiting_signatureon,blockingis empty. - If the borrower declines before anyone has signed, the application goes back to
ready_for_agreement(orrequires_information), and your broker can send a new agreement. If a signature was already on it, the application staysrequires_informationwithAGREEMENT_DECLINED, and Bridgeline follows up. activeandcanceledare final. Anactiveapplication can still owe items inrequirements.outstanding, such as a policy number after signing.- New statuses may be added. Treat one you don’t recognize as “in progress”.
Requirements
requirements answers “what’s left?” in two lists, split by when each item is owed:
blockingholds the finance agreement back, except the shown-early codes, which are listed for visibility. When nothing else is in it and the agreement hasn’t gone out, the status isready_for_agreement.outstandingis owed after signing, bydue_by, and never holds up the agreement. For a missing policy number or document,due_byis 30 days after the agreement is executed (the deadline for the carrier notice), andnulluntil then.CARRIER_UNMATCHEDandINSURED_ADDRESS_INCOMPLETEhave no deadline of their own, so theirdue_byisnull.paramsays where the fix goes: a policy field (policies[pol_…].policy_number),insured.address,signer.borrowerorpricing, ornullwhen no single field applies.- Branch on
code. Codes are never renamed, and new ones may be added: showdescriptionfor a code you don’t recognize.
“During review” means while the application is in
processing or your broker is still reviewing the policy details: these are the checks the portal makes before pricing, and they’re settled once the deal reaches pricing.
Missing policy numbers
A finance agreement can go out before the carrier binds.MISSING_POLICY_NUMBER and QUOTE_ONLY_DOCUMENT start in blocking; once your broker confirms in the portal that the binder will follow, they move to outstanding, and they clear when the binder or policy arrives and we verify it. These are the same codes a quote’s binding readiness uses.
Shown early
CARRIER_UNMATCHED and INSURED_ADDRESS_INCOMPLETE are listed in blocking as soon as they’re true, but the portal doesn’t stop the agreement for them yet, so they don’t hold the status back: an application with only these open is ready_for_agreement. Once the agreement is sent, any still open move to outstanding. They still matter after signing, because carrier and insured notices wait for them.
Pricing and the quote
pricingis the terms your broker has priced in the portal: the ones the finance agreement will carry, and once it’s sent, the agreement’s own terms. It’snulluntil the application reaches pricing.total_of_paymentsis the amount financed plus the finance charge, exactly as on the agreement.selected_byisbrokerwhen your broker picked the terms,systemwhen they kept our recommendation.created_viasays where the deal came from:api,portaloremail.quote_id,accepted_option_id,client_reference_idandmetadataare set when a deal starts from a quote you accept through the API. Accepting isn’t available yet, so today every application was started in the portal or by email, and these arenull(andmetadatais{}). To match a deal to a record in your system for now, use the insured’s name and the policies’policy_number.
Following changes
There’s noupdated_at on an application yet, so to keep a panel current, re-list on an interval and compare:
- Every few minutes, page through
GET /v1/applicationswithlimit=100. 500 deals is 5 requests, well under the rate limit. - Compare each application’s
statusandrequirementswith your copy, and update what changed. - Keep following
activeapplications: theiroutstandingitems can still clear or change.