curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/export-presets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ownerUserId": "3f2b8c1e-6d4a-4b7e-9a15-2c8e0f4d7b91",
"entityType": "exposure",
"name": "Underwriting view",
"fieldKeys": [
"exposureName",
"id",
"createdAt"
]
}
'{
"id": "9b1d4e7a-2c3f-4a8b-b6d5-0e7f1a2c3d4e",
"ownerUserId": "3f2b8c1e-6d4a-4b7e-9a15-2c8e0f4d7b91",
"entityType": "exposure",
"name": "Underwriting view",
"visibility": "private",
"rowSource": null,
"fieldKeys": [
"exposureName",
"id",
"createdAt"
],
"createdAt": "2026-09-25T14:03:22.418Z"
}Create Export Preset For Member
Saves a named set of export columns (an export preset) in one member’s
export screen for a record type, such as claims, insureds, policies or the
bordereau. Use it to set up a member’s standard spreadsheet exports; List
Export Presets For Member (listExportPresetsForMember) shows what they
already have.
Creates a private saved export preset in the export screen of the
company member named by ownerUserId. The preset belongs to that
member: the caller never becomes the owner unless it names itself as
ownerUserId. The caller is recorded as the preset’s creator for audit.
fieldKeys are the preset’s columns and are saved in the order given.
Every key must be one the company’s export surface offers for that
entityType: the system columns id, createdAt, updatedAt and the
configured export-surface columns.
rowSource makes a preset that exports one row per item of an
Object List field, like the export screen’s “One row per” choice. It must
name an Object List of the entity that at least one export-surface column
declares as its rowSource; anything else is 400 InvalidExportRowSource.
With a rowSource, fieldKeys may also hold that list’s item columns and
the item identity columns __itemId and __itemIndex. Item columns of
another list, or any item column without a rowSource, are unknown keys.
Omit rowSource for one row per record. Bordereau presets take no
rowSource.
For bordereau, the keys are the Export Bordereau screen’s column keys:
fixed:<key> for a built-in bordereau column (fixed:policyNumber,
fixed:primaryInsuredName, fixed:transactionAction,
fixed:policyVersion, fixed:effectiveDate,
fixed:transactionTimestamp, fixed:policyStartDate,
fixed:policyEndDate, fixed:createdAt, fixed:createdBy,
fixed:policyPremium, fixed:policyPremiumChange) and field:<key> for a
column configured on the company’s bordereau export surface. The system
columns and the policy export’s columns are not bordereau columns.
- An unknown key fails the whole request with
400 UnknownExportFieldKey; the error carriesunknownFieldKeys, listing every key that was refused. Nothing is saved. - An
ownerUserIdwho is not a member of the company is400 ExportPresetOwnerNotMember. - A
namethe owner already uses for a preset of that entity type (compared case-insensitively, ignoring surrounding spaces) is409 ExportPresetNameTaken; the error carriesexistingPresetNames, the owner’s current preset names for that entity type.
The created preset is private: only its owner (and staff) sees it, and the
owner finds it in their export screen for that entity type (for
bordereau, the Export Bordereau screen).
Required permission: export-preset.create-for-member
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/export-presets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ownerUserId": "3f2b8c1e-6d4a-4b7e-9a15-2c8e0f4d7b91",
"entityType": "exposure",
"name": "Underwriting view",
"fieldKeys": [
"exposureName",
"id",
"createdAt"
]
}
'{
"id": "9b1d4e7a-2c3f-4a8b-b6d5-0e7f1a2c3d4e",
"ownerUserId": "3f2b8c1e-6d4a-4b7e-9a15-2c8e0f4d7b91",
"entityType": "exposure",
"name": "Underwriting view",
"visibility": "private",
"rowSource": null,
"fieldKeys": [
"exposureName",
"id",
"createdAt"
],
"createdAt": "2026-09-25T14:03:22.418Z"
}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.
Body
The company member who will own the preset and see it in their export screen: a member id from List Company Members.
The preset's columns, in column order. Each key must be offered by the company's export surface for entityType (and rowSource, when given), and no key may repeat. Bordereau keys are prefixed fixed: (built-in column) or field: (configured column).
11Response
The preset was created and belongs to ownerUserId.
