Skip to content

Get a link to bind a quote (the broker's bind checklist, or the insured's pay-and-bind page)

POST
/broker/submissions/{submission_id}/quotes/{quote_id}/bind-link
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, or producer_email for 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: insured returns the insured’s pay-and-bind link, where the quote’s market takes the insured’s own payment (Coterie direct bill today; 409 insured_link_unavailable elsewhere). It drafts the bind request as POST .../bind-requests does, so the assumptions Hedge made for the quote must be confirmed first (attest_assumptions, 409 assumptions_unconfirmed otherwise). The first call emails the link to insured_email, copying the producer; later calls return the live link without emailing again (a different insured_email sends a new one). emailed says 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_at is the end of the last day the insured can pay.

The existing bind-requests endpoints remain for markets that bind without a card.

submission_id
required
string format: uuid
quote_id
required
string format: uuid
Media typeapplication/json
object
for
string
default: broker
Allowed values: broker insured
producer_email

Required for API client (machine) credentials; the active portal user the link signs in and the bind is attributed to.

string
nullable
insured_email

for: insured only: where Hedge emails the insured’s link. Required on the first call.

string
nullable <= 255 characters
attest_assumptions
One of:
boolean

The link (the response carries Cache-Control: no-store)

Media typeapplication/json
object
url
required
string
expires_at
string format: date-time
nullable
for
required
string
Allowed values: broker insured
emailed

for: insured only.

boolean
nullable
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