Skip to content

Send Hedge a risk the way you would email it (text and/or PDFs)

POST
/broker/intake
curl --request POST \
--url https://api.hedgespecialty.com/api/v1/broker/intake \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form text=example \
--form files=@file \
--form insured_name=example \
--form effective_date=2026-04-15 \
--form lines_of_business=example \
--form primary_state=example \
--form producer_email=example \
--form hold=false

One multipart call in, the system runs. Send free text (an email body, notes, an ACORD summary), PDFs (ACORDs, loss runs, supplements), or both. When insured_name is omitted Hedge reads the insured, contact, address, website, NAICS, phone and email out of text. Files are validated up front, stored on the new submission and extracted into its brief in the background, this call never waits on extraction. Then, unless hold is set, Hedge starts marketing exactly as POST /broker/submissions does.

Requires text or insured_name (422 otherwise). Machine credentials must name producer_email. Supports an Idempotency-Key header keyed on your raw inputs, so a retried call replays the saved submission (with its documents) instead of creating a duplicate. Counts toward the daily create and upload limits.

Idempotency-Key
string
Media typemultipart/form-data
object
text

The risk as you would describe it in an email. Required unless insured_name is given.

string
files

Up to 20 PDFs (ACORDs, loss runs, supplements), 15 MB each.

Array<string>
insured_name
string
effective_date
string format: date
lines_of_business

Comma-separated canonical slugs or common aliases (e.g. gl,property).

string
primary_state

Primary risk state, 2-letter US code.

string
>= 2 characters <= 2 characters
producer_email

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

string
hold

Defer the run until finalize.

boolean

Created; the run started unless held.

Media typeapplication/json

Result of POST /broker/intake.

object
submission_id
required
string format: uuid
state
string
status_label
required
string
marketing_status
required
string
Allowed values: matching awaiting_finalization
next_step
required
string
documents

The originals stored on the submission, in upload order.

Array<object>
object
id
string format: uuid
display_name
string
applicant
required

What Hedge recorded for the insured, your fields, or the extractor’s when you only sent text.

object
insured_name
string
nullable
dba_name
string
nullable
entity_type
string
nullable
business_phone
string
nullable
business_email
string
nullable
website
string
nullable
naics
string
nullable
nature_of_business
string
nullable
contact_first_name
string
nullable
contact_last_name
string
nullable
contact_email
string
nullable
contact_phone
string
nullable
mailing_address
object
line1
string
line2
string
nullable
city
string
state
string
zip
string
warnings

Non-fatal notices (a file that was not stored, a background enqueue that needs attention, a replayed request).

Array<string>
portal_url
required
string format: uri
Example
{
"marketing_status": "matching"
}

A file is not a valid PDF/document

Same Idempotency-Key already in flight

A file is over the 15 MB limit

Unsupported document type

Neither text nor insured_name; missing producer_email for a machine credential; the insured could not be identified from text; invalid date

Daily create limit reached

Text extraction is temporarily unavailable; your text is preserved