Get a link to bind a quote (the broker's bind checklist, or the insured's pay-and-bind page)
const url = 'https://api.hedgespecialty.com/api/v1/broker/submissions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/quotes/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/bind-link';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"for":"broker","producer_email":"example","insured_email":"example","attest_assumptions":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.hedgespecialty.com/api/v1/broker/submissions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/quotes/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/bind-link \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "for": "broker", "producer_email": "example", "insured_email": "example", "attest_assumptions": [ "example" ] }'Quote over the API, bind via link. quote_id is a quote from
GET .../quotes that can be bound now (bind.available); any other
quote is refused with the quote read’s own bind.blocked_reason.
for: broker(the default) returns a one-time sign-in link into the Hedge portal’s bind checklist for this quote (or the quote itself when the carrier binds it on its own portal). It signs in the token’s user, orproducer_emailfor an API client credential, which must be an active portal user of your brokerage. It works once and expires after 24 hours (sooner if the API key that minted it is revoked). The session it starts lasts up to 12 hours and can bind, quote, reply and service; it cannot change API keys, webhooks, team, payout or mailing settings (sign in to Hedge directly for those). The URL is a credential: give it only to that person and never log it.for: insuredreturns the insured’s pay-and-bind link, where the quote’s market takes the insured’s own payment (Coterie direct bill today; 409insured_link_unavailableelsewhere). It drafts the bind request asPOST .../bind-requestsdoes, so the assumptions Hedge made for the quote must be confirmed first (attest_assumptions, 409assumptions_unconfirmedotherwise). The first call emails the link toinsured_email, copying the producer; later calls return the live link without emailing again (a differentinsured_emailsends a new one).emailedsays whether this call emailed the insured (false: the email did not go out, so share the URL yourself;null: an earlier call sent it).expires_atis the end of the last day the insured can pay.
The existing bind-requests endpoints remain for markets that bind
without a card.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Body
Section titled “Request Body”object
Required for API client (machine) credentials; the active portal user the link signs in and the bind is attributed to.
for: insured only: where Hedge emails the insured’s link. Required on the first call.
Responses
Section titled “Responses”The link (the response carries Cache-Control: no-store)
object
for: insured only.
Example
{ "for": "broker"}Missing broker_submit scope, a staff impersonation session, or use_partner_bind_links (partners, and sessions a partner’s link started, use partner-bind-links)
Not found (or not your brokerage’s)
quote_not_available, quote_expired, quote_not_bindable (with reason), brokerage_portal_disabled, insured_link_unavailable, insured_link_refused or assumptions_unconfirmed
producer_email missing or not an active portal user, insured_email_required, insured_email_invalid, or a body validation error
Rate limited (20 links an hour per quote)
proposal_unavailable: try again shortly