API docs
Every dashboard action is also exposed as a REST endpoint so you can wire AppetiteMatch directly into your AMS, CRM, or batch import.
Authentication
Every request needs a bearer token. Generate yours from Settings → API key → Show key in the dashboard, or via cookie auth if you're calling from the same origin.
curl -H "Authorization: Bearer <your-key>" \ https://submission-triage-api.onrender.com/me
Triage a submission (JSON)
curl -X POST -H "Authorization: Bearer <your-key>" \
-H "Content-Type: application/json" \
-d '{
"submission_id": "SUB-1",
"received_at": "2026-04-26",
"insured": {
"legal_name": "Acme HVAC LLC",
"naics": "238220",
"primary_state": "TX",
"annual_revenue": "5000000"
},
"coverages": [{"line": "general_liability"}]
}' \
https://submission-triage-api.onrender.com/triageReturns ranked carrier matches and drafted cover emails.
Triage from an ACORD PDF
curl -X POST -H "Authorization: Bearer <your-key>" \ -F "file=@./acord_125.pdf" \ https://submission-triage-api.onrender.com/triage/upload
Document AI extracts fields, the triage runs as above, and the uploaded PDF is stashed so the next /drafts/[id]/send attaches the original to the carrier email.
Manage carriers
# List
curl -H "Authorization: Bearer <key>" https://submission-triage-api.onrender.com/carriers
# Upsert
curl -X POST -H "Authorization: Bearer <key>" \
-H "Content-Type: application/json" \
-d '{
"carrier_id": "atlas_specialty",
"name": "Atlas Specialty E&S",
"submission_email": "newbiz@atlas.example",
"typical_quote_back_days": 4,
"appetite": [{
"naics_prefixes": ["238","236"],
"states_in": ["TX","FL","GA"],
"states_out": ["NY","CA"],
"lines": ["general_liability","commercial_auto"],
"revenue_min": "500000",
"revenue_max": "15000000"
}]
}' \
https://submission-triage-api.onrender.com/carriers
# Delete
curl -X DELETE -H "Authorization: Bearer <key>" \
https://submission-triage-api.onrender.com/carriers/atlas_specialtyInbound quote-back webhook
When a carrier replies via email, your inbound mail handler should forward to:
POST https://submission-triage-api.onrender.com/webhooks/inbound
# Body
{
"provider_message_id": "<SES Message-ID we returned on send>",
"body": "Quoting at $42,000. Effective 06/01/2026."
}
# Signed with HMAC-SHA256 of body using your org's webhook_secret:
X-Triage-Signature: sha256=...Full OpenAPI surface
Every endpoint is documented with request/response schemas at the interactive Swagger UI (also available as raw JSON at https://submission-triage-api.onrender.com/openapi.json).
Rate limits
Triage endpoints (/triage, /triage/upload) are limited to 30 requests/minute per IP by default. Inbound webhook endpoints are 300 requests/minute. If you need higher, hit Pro tier or talk to us.