Skip to content

Create a submission

POST
/broker/submissions
curl --request POST \
--url https://api.hedgespecialty.com/api/v1/broker/submissions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "applicant": { "insured_name": "example", "business_phone": "example", "business_email": "example", "website": "example", "contact_first_name": "example", "contact_last_name": "example", "contact_email": "example", "naics": "example", "mailing_address": { "line1": "example", "line2": "example", "city": "example", "state": "example", "zip": "example" } }, "narrative": "example", "lines_of_business": [ "example" ], "effective_date": "2026-04-15", "primary_state": "example", "producer_email": "example", "insured_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

Creates the submission and starts intake (enrichment + instant carrier-API quoting). Does NOT start marketing to carriers, call finalize when documents and answers are in.

Supports an Idempotency-Key header: a retried create with the same key within 24h replays the original response instead of creating a duplicate. A concurrent duplicate returns 409, retry shortly.

Idempotency-Key
string
Media typeapplication/json
object
applicant
required
object
insured_name
required
string
<= 256 characters
business_phone
string
business_email
string
website
string
contact_first_name
string
contact_last_name
string
contact_email
string
naics
string
mailing_address

Line1, city, state and zip are required together.

object
line1
required
string
line2
string
city
required
string
state
required
string
zip
required
string
narrative
required

Operations description of the risk, what the business does, size, anything an underwriter should know. Required; appetite matching depends on it.

string
lines_of_business

Canonical slugs (e.g. commercial_general_liability) or common aliases (gl, wc).

Array<string>
effective_date
string format: date
primary_state

Primary risk state, 2-letter US code (normalized to uppercase). When the applicant mailing address also carries a state the two must agree: the request 422s on a conflict, with a message that says exactly what to fix. Omit it to use the mailing address state.

string
>= 2 characters <= 2 characters
producer_email

REQUIRED when authenticating with a machine credential, the active portal user this submission is attributed to.

string
insured_id

Optional id of an existing insured from GET /broker/insureds - links the new submission to that client’s account (repeat business, a new line for an existing client). Must belong to your brokerage; an unknown or foreign id returns 404.

string format: uuid
Examplegenerated
{
"applicant": {
"insured_name": "example",
"business_phone": "example",
"business_email": "example",
"website": "example",
"contact_first_name": "example",
"contact_last_name": "example",
"contact_email": "example",
"naics": "example",
"mailing_address": {
"line1": "example",
"line2": "example",
"city": "example",
"state": "example",
"zip": "example"
}
},
"narrative": "example",
"lines_of_business": [
"example"
],
"effective_date": "2026-04-15",
"primary_state": "example",
"producer_email": "example",
"insured_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

Created

Media typeapplication/json
object
submission_id
string format: uuid
state
string
status_label
string
Examplegenerated
{
"submission_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"state": "example",
"status_label": "example"
}

Same Idempotency-Key already in flight

Validation error (message says exactly what to fix)

Daily create limit reached