curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/{entityId}/emails/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"templateId": "550e8400-e29b-41d4-a716-446655440401"
}
'{
"to": [
"jill.ortiz@summit-brokers.example"
],
"cc": [],
"replyTo": [],
"subject": "Your renewal quote for Acme Cafe",
"html": "<p>Hi Jill, your renewal quote is ready. Premium: </p>",
"text": "Hi Jill, your renewal quote is ready. Premium: ",
"emptyTags": [
"quotePremium"
],
"emptyTagLabels": [
"Quote Premium"
],
"invalidAddresses": [],
"invalidLinks": []
}Preview Record Email
Renders one template version against this record, and the packet when
packetId is given, without sending anything. Returns the resolved
recipients, subject and body, and the smart tags that came out empty.
Send uses the to and cc you pass, so read them from here first.
Answers 404 while email is not turned on for the company.
Required permission: email.send and <resource>.view for the path’s
{entityType} (event.view, exposure.view, quote.view or
submission.view).
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/{entityId}/emails/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"templateId": "550e8400-e29b-41d4-a716-446655440401"
}
'{
"to": [
"jill.ortiz@summit-brokers.example"
],
"cc": [],
"replyTo": [],
"subject": "Your renewal quote for Acme Cafe",
"html": "<p>Hi Jill, your renewal quote is ready. Premium: </p>",
"text": "Hi Jill, your renewal quote is ready. Premium: ",
"emptyTags": [
"quotePremium"
],
"emptyTagLabels": [
"Quote Premium"
],
"invalidAddresses": [],
"invalidLinks": []
}Authorizations
User-principal OAuth 2.0 Bearer authentication. Send a user-scoped Auth0 access token (audience = the app API audience) as Authorization: Bearer <jwt>. The request resolves to the user's identity and is authorized by their Role on the {companyId} in the path — the same role-based permissions the web app enforces. This is the path the MCP connector uses to act on a user's behalf; endpoints that accept it list both BearerAuth and ApiKeyAuth.
Path Parameters
Field Model V1 entity type (lowercase kebab-case URL slug). One of the six
CRUD entity types: event, exposure, quote, submission, person,
organization. policy is NOT valid here — Policy has no generic CRUD (its
writes go through the policy transaction endpoints), though it does have a
read-only /configuration schema.
event, exposure, quote, submission, person, organization Body
Response
The rendered email
The email a send would produce: the template rendered against the record, and the packet when one is given.
