curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/{entityId}/emails \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"templateId": "550e8400-e29b-41d4-a716-446655440401",
"to": [
"jill.ortiz@summit-brokers.example"
],
"cc": []
}
'{
"deliveryId": "550e8400-e29b-41d4-a716-446655440601",
"messageId": "550e8400-e29b-41d4-a716-446655440602",
"threadId": "550e8400-e29b-41d4-a716-446655440603"
}Send Record Email
Sends one template version from this record, or from one of its packets
with packetId, the way Send email does in the app. The email is stored
on the record at once and its delivery is queued; the response returns
before it is sent. Follow it on Get Record Email Conversation: the
message’s delivery.status goes from queued to sent, or to failed
with a reason. Retry a failed send with Retry Record Email Delivery.
Send an Idempotency-Key header to retry safely: the same key with the
same request returns the first send and sends nothing new.
Replies go to the template’s Reply-To, or to the sending user when it has none.
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 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"templateId": "550e8400-e29b-41d4-a716-446655440401",
"to": [
"jill.ortiz@summit-brokers.example"
],
"cc": []
}
'{
"deliveryId": "550e8400-e29b-41d4-a716-446655440601",
"messageId": "550e8400-e29b-41d4-a716-446655440602",
"threadId": "550e8400-e29b-41d4-a716-446655440603"
}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.
Headers
Optional key that makes a retry of this operation safe. Send a new value, 1 to 255 printable ASCII characters, for each intended operation, and send the same value with the same request when you retry it. A committed attempt reserves the key for 30 days from admission; retries do not extend that window. After 30 days the same key runs as a new request, even if its body differs. Within that window, a retry after the first request completed returns the original resource or run identity with the same status and response shape, without starting another operation. A failure before the intent commits stores nothing; after an external effect fails, a retry may resume that same committed intent. Keys belong to the credential, so another API key, even one the same user created, cannot replay them. Within 30 days, reusing a key with a different request returns 422 IDEMPOTENCY_KEY_REUSED; an invalid key returns 400 INVALID_IDEMPOTENCY_KEY. The key is compared exactly, so case and surrounding spaces count.
1 - 255^[\x20-\x7E]{1,255}$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 email is stored and its delivery is queued
