curl -X POST https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/qte_2lo4LFk5rf8toDFJtE5tQa/interest \
-H "Authorization: Bearer $BRIDGELINE_TEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"option_id": "opt_20_9", "note": "Can we start the first payment in November?"}'
const res = await fetch(`https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/${quoteId}/interest`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BRIDGELINE_TEST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ option_id: 'opt_20_9', note: 'Can we start the first payment in November?' }),
})
const quote = await res.json()
import os
import requests
res = requests.post(
f"https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/{quote_id}/interest",
headers={"Authorization": f"Bearer {os.environ['BRIDGELINE_TEST_API_KEY']}"},
json={"option_id": "opt_20_9", "note": "Can we start the first payment in November?"},
timeout=30,
)
quote = res.json()
{
"id": "qte_2lo4LFk5rf8toDFJtE5tQa",
"object": "quote",
"livemode": false,
"status": "interested",
"client_reference_id": null,
"metadata": {},
"broker": {"email": "maria@lonestarrisk.example"},
"created_at": "2026-10-04T15:04:05Z",
"expires_at": "2026-11-03T15:04:05Z",
"hosted_url": null,
"selected_option_id": "opt_20_9",
"interest": {
"option_id": "opt_20_9",
"note": "Can we start the first payment in November?",
"submitted_at": "2026-10-05T15:02:11Z",
"broker_notification": {
"status": "skipped",
"reason": "test_mode",
"recipient": null,
"recipients": [],
"at": "2026-10-05T15:02:11Z"
}
},
// ...totals, policies, eligibility, assumptions, warnings, binding_readiness
// and options, exactly as GET /v1/quotes/{id} returns them
}
{
"error": {
"type": "permission",
"code": "TEST_MODE_ONLY",
"message": "This endpoint is only available with a test-mode (bl_test_) API key.",
"doc_url": "https://docs.bridgelinepf.com/errors#TEST_MODE_ONLY",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
{
"error": {
"type": "conflict",
"code": "QUOTE_ALREADY_INTERESTED",
"message": "The insured has already said they are interested in this quote.",
"doc_url": "https://docs.bridgelinepf.com/errors#QUOTE_ALREADY_INTERESTED",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
Simulate the insured saying they are interested (test mode)
Test-mode keys only. Does what the insured’s “I’m interested” on the hosted page does: the quote becomes interested with this option and note. Nothing is emailed or posted anywhere; interest.broker_notification is skipped with reason test_mode. One time per quote, like the hosted page. A live key gets 403 TEST_MODE_ONLY.
curl -X POST https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/qte_2lo4LFk5rf8toDFJtE5tQa/interest \
-H "Authorization: Bearer $BRIDGELINE_TEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"option_id": "opt_20_9", "note": "Can we start the first payment in November?"}'
const res = await fetch(`https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/${quoteId}/interest`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BRIDGELINE_TEST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ option_id: 'opt_20_9', note: 'Can we start the first payment in November?' }),
})
const quote = await res.json()
import os
import requests
res = requests.post(
f"https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/{quote_id}/interest",
headers={"Authorization": f"Bearer {os.environ['BRIDGELINE_TEST_API_KEY']}"},
json={"option_id": "opt_20_9", "note": "Can we start the first payment in November?"},
timeout=30,
)
quote = res.json()
{
"id": "qte_2lo4LFk5rf8toDFJtE5tQa",
"object": "quote",
"livemode": false,
"status": "interested",
"client_reference_id": null,
"metadata": {},
"broker": {"email": "maria@lonestarrisk.example"},
"created_at": "2026-10-04T15:04:05Z",
"expires_at": "2026-11-03T15:04:05Z",
"hosted_url": null,
"selected_option_id": "opt_20_9",
"interest": {
"option_id": "opt_20_9",
"note": "Can we start the first payment in November?",
"submitted_at": "2026-10-05T15:02:11Z",
"broker_notification": {
"status": "skipped",
"reason": "test_mode",
"recipient": null,
"recipients": [],
"at": "2026-10-05T15:02:11Z"
}
},
// ...totals, policies, eligibility, assumptions, warnings, binding_readiness
// and options, exactly as GET /v1/quotes/{id} returns them
}
{
"error": {
"type": "permission",
"code": "TEST_MODE_ONLY",
"message": "This endpoint is only available with a test-mode (bl_test_) API key.",
"doc_url": "https://docs.bridgelinepf.com/errors#TEST_MODE_ONLY",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
{
"error": {
"type": "conflict",
"code": "QUOTE_ALREADY_INTERESTED",
"message": "The insured has already said they are interested in this quote.",
"doc_url": "https://docs.bridgelinepf.com/errors#QUOTE_ALREADY_INTERESTED",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
status becomes interested, selected_option_id is the option you sent, and interest carries the note. It returns the quote, as GET /v1/quotes/{id} would.
- Test keys only. A live key gets
403 TEST_MODE_ONLY. The quote must be one your test key can see; anything else is404 NOT_FOUND. - Nobody is told. No email and no message go anywhere.
interest.broker_notificationisskippedwith reasontest_mode. - One response per quote, like the interactive quote. A second call, or a call after someone used the link, is
409 QUOTE_ALREADY_INTERESTED. An expired quote is409 QUOTE_EXPIRED. option_idmust be one of the quote’s options. An ineligible quote, or one with no options, has nothing to choose, so it’s a422 VALIDATION_FAILED, as is anoteover 500 characters.- An
Idempotency-Keyis optional. Send one if you retry on a network error.
quotes:write scope.
curl -X POST https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/qte_2lo4LFk5rf8toDFJtE5tQa/interest \
-H "Authorization: Bearer $BRIDGELINE_TEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"option_id": "opt_20_9", "note": "Can we start the first payment in November?"}'
const res = await fetch(`https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/${quoteId}/interest`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BRIDGELINE_TEST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ option_id: 'opt_20_9', note: 'Can we start the first payment in November?' }),
})
const quote = await res.json()
import os
import requests
res = requests.post(
f"https://portal.bridgelinepf.com/api/v1/test_helpers/quotes/{quote_id}/interest",
headers={"Authorization": f"Bearer {os.environ['BRIDGELINE_TEST_API_KEY']}"},
json={"option_id": "opt_20_9", "note": "Can we start the first payment in November?"},
timeout=30,
)
quote = res.json()
{
"id": "qte_2lo4LFk5rf8toDFJtE5tQa",
"object": "quote",
"livemode": false,
"status": "interested",
"client_reference_id": null,
"metadata": {},
"broker": {"email": "maria@lonestarrisk.example"},
"created_at": "2026-10-04T15:04:05Z",
"expires_at": "2026-11-03T15:04:05Z",
"hosted_url": null,
"selected_option_id": "opt_20_9",
"interest": {
"option_id": "opt_20_9",
"note": "Can we start the first payment in November?",
"submitted_at": "2026-10-05T15:02:11Z",
"broker_notification": {
"status": "skipped",
"reason": "test_mode",
"recipient": null,
"recipients": [],
"at": "2026-10-05T15:02:11Z"
}
},
// ...totals, policies, eligibility, assumptions, warnings, binding_readiness
// and options, exactly as GET /v1/quotes/{id} returns them
}
{
"error": {
"type": "permission",
"code": "TEST_MODE_ONLY",
"message": "This endpoint is only available with a test-mode (bl_test_) API key.",
"doc_url": "https://docs.bridgelinepf.com/errors#TEST_MODE_ONLY",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
{
"error": {
"type": "conflict",
"code": "QUOTE_ALREADY_INTERESTED",
"message": "The insured has already said they are interested in this quote.",
"doc_url": "https://docs.bridgelinepf.com/errors#QUOTE_ALREADY_INTERESTED",
"request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
}
}
Authorizations
bl_live_… or bl_test_… API key.
Headers
API version (a date). Defaults to 2026-09-23; echoed on every response.
^\d{4}-\d{2}-\d{2}$Retrying with the same key and body within 24h replays the original response.
1 - 255Path Parameters
The test-mode quote id (qte_…).
Body
Response
The quote, now interested.
An indicative quote: a stored snapshot, not a price lock.
qte_…
"quote"active, interested, expired Show child attributes
Show child attributes
Show child attributes
Show child attributes
Returned when the quote is created; null when retrieved.
The insured's response on the hosted page; null unless status is interested. This object is also the payload the Phase 3 quote.interest_expressed webhook will reuse.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes