Sixfold API (2024-05)

Download OpenAPI specification:

Introduction

Release Notes

Version: 2024-05

  • Enhances the case creation endpoint to accept documents to attach to the new case

  • Add a new endpoint to attach one or more documents to an existing case

  • Defines a new schema for cases and related entities

  • Add Life API support for creating cases

Version: 2023-12

For more detailed documentation of this version, refer to our legacy API docs site.

Overview

Greetings from Sixfold! We're excited to provide you with documentation for our API that allows you to seamlessly interact with our generative AI solution for insurance underwriters.

Key Features

Getting Started

To get started with the Sixfold API, use the guides, code examples, and reference documentation on this page.

We will coordinate with you to complete the following set-up steps:

  • Base URL: Receive a base URL specific to your environment
  • API Key: Receive an API key
  • Webhook URL: Share a URL where we can send important events about a case (optional)

Read more about these steps below.

Base URL

We will provide a base URL for your dedicated environment. This URL will be unique to your tenancy.

API Key

We will generate and share an API key for your environment via secure send.

For more details on how to use your API key, refer to the Authorization section below.

Webhooks

If you provide us with a webhook URL, we can send you events about your cases in real time. This is an optional step, but it can be helpful if you need to know quickly when a case changes state.

For more details on how to use webhooks, refer to the Webhooks section below.

Integrations

To configure an integration with a third-party (such as an external file management service such as FileNet), please refer to this section for additional information.

We currently support integrations with the following services:

Security

Transport Layer Security

We require all API calls to be made over secure connections using HTTPS. We require a minimum of TLS 1.2.

Authorization

You MUST include the Sixfold API key you were issued in a custom header for each API request.

Example: SIXFOLD-API-KEY: <your key>

Field Types

Type Description Example
IDS Object identifiers are unique opaque strings. Clients should not attach any specific semantic meaning to the format of our IDs. For example, our object IDs are UUIDs today, but clients should not count on that behavior, because we may stop using UUIDs at any time. c4fb4c10-5b2e-4220-90d2-96d94337e8e6
STRINGS Strings are encoded using UTF-8. They do not have character limits. Diamond West Construction
DATES All dates are represented in ISO 8601 format YYYY-MM-DD. 2024-01-10
TIMESTAMPS All object responses will include a createdAt and updatedAt in timestamp format. All timestamps are UTC and represented in ISO 8601 format YYYY-MM-DDThh:mm:ssZ. 2024-01-10T16:00:30Z
BOOLEANS Boolean values are represented as true or false. true
NULL All optional fields are set to null unless a default value is set. null

Status Codes & Errors

Status Codes

Code Description
200 OK. Indicates the request was successful.
201 Created. Indicates that the request was successful and has led to the creation of a resource.

Error Codes

Code Description
400 Bad Request. Occurs when your request is malformed in some way that does not match a more specific 4xx code.
401 Unauthorized. Occurs when your request omitted an API key or specified an invalid key.
404 Not Found. Occurs when you requested a resource which doesn’t exist. This could signify an incorrect API endpoint URL or an incorrect object ID.
413 Content Too Large. Occurs when the size of the request entity exceeds the limit defined in the request limits section below.
422 Unprocessable Entity. Occurs when the request is syntactically correct but semantically invalid (e.g., validation errors) or cannot be processed.
429 Too Many Requests. Occurs when exceeding the request rate limit defined in the request limits section below.
500 Internal Server Error. Occurs when Sixfold encounters an error serving the request. This is usually a temporary occurrence, so your best bet is to retry again after a short time.
503 Service Unavailable. Typically occurs when the API is down for maintenance.

Document Errors

When creating a case or attaching documents to a case, each document must be uploaded as a separate file.

Partial Success

When uploading multiple documents, the API supports partial success: some documents may be accepted while others are rejected in the same request.

Scenario HTTP Status Response
All documents valid 201 data array with all uploaded documents
Some documents valid, some invalid 201 data array with valid documents, errors array with rejected documents
All documents invalid 422 errors array only

Important: Clients should always check for the presence of an errors array even when receiving a 2xx response. A successful status code indicates at least one document was processed, but some documents may have been rejected.

Example: Partial Success Response

{
  "data": [
    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "type": "commercialDocuments",
      "attributes": {
        "filename": "policy.pdf",
        "contentType": "application/pdf",
        "byteSize": 102400,
        "createdAt": "2024-05-01T12:00:00Z",
        "updatedAt": "2024-05-01T12:00:00Z"
      }
    }
  ],
  "errors": [
    {
      "title": "Invalid document",
      "detail": "data.csv failed: Content type is not supported. Check the list of supported content types",
      "code": "invalid-document",
      "source": {
        "document": "data.csv"
      },
      "status": 422
    }
  ]
}

Common Rejection Reasons

Documents may be rejected for the following reasons:

  • Unsupported content type: The file type is not in the list of accepted content types (see Document Types below). For example, CSV files (text/csv) are not supported.
  • Encrypted files: Password-protected or encrypted Microsoft Office files cannot be processed.

Versioning

Our API uses URI date-based versioning.

Example: POST /api/2023-12/cases

We will always issue a new version of our API if we need to make changes that would break existing clients. Some examples of breaking changes include:

  • Removing functionality

  • Renaming parameters

  • Changing endpoint requirements

We may include backward-compatible changes in the current version of our API. These changes are designed to improve the API without breaking existing clients. Examples include:

  • Adding new API endpoints

  • Adding new optional request parameters to existing API methods

  • Adding new fields to existing API responses

Limits

This section describes how limits are applied in the Sixfold API.

Document Types

There are restrictions on what types of documents can be uploaded.

Commercial

The following content types are accepted for commercial cases:

Content Type Extension
application/pdf .pdf
application/json .json
image/jpeg .jpeg, .jpg
image/tiff .tiff, .tif
image/png .png
text/plain .txt
text/markdown .md
text/html .html
application/msword .doc
application/vnd.openxmlformats-officedocument.wordprocessingml.document .docx
application/vnd.ms-powerpoint .ppt
application/vnd.openxmlformats-officedocument.presentationml.presentation .pptx
application/vnd.ms-excel .xls
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xlsx
application/rtf .rtf
image/bmp .bmp
image/gif .gif
message/rfc822 .eml
application/vnd.ms-outlook .msg
application/mbox .mbox

Life

The following content types are accepted for life cases:

Content Type Extension
application/pdf .pdf
application/json .json
image/jpeg .jpeg, .jpg
image/tiff .tiff, .tif
image/png .png
text/plain .txt
text/html .html
application/xhtml+xml .xml

Request Rate

You may not send more than 300 requests per minute. If you exceed this limit, the server will respond with 429 - Too Many Requests and block further requests for a short time.

Request Size

No request body may be larger than 50 megabytes. If you exceed this limit, the server will respond with 413 - Content Too Large.

Actions

Retrieve AI-recommended actions (e.g. referrals) for commercial insurance cases

Get recommended actions for a commercial case

This endpoint requires the Referral Agent feature. If not enabled, it still responds successfully but returns referralAgentEnabled: false and actions: []. Please reach out to your account team if this feature is not enabled for your tenant.

Returns recommended actions for a commercial case, along with referral evaluation metadata.

The actions array is populated only when the Referral Agent feature is enabled and evaluation has determined that a referral is recommended. Use the caseStatus field to determine whether evaluation has completed:

  • PENDING — evaluation has not yet completed; poll again after receiving a cases/updated webhook with recommendedActions: "Referral".
  • EVALUATED — evaluation is complete; check the actions array for recommendations.
  • ERROR — the evaluation encountered an error.

When referralAgentEnabled is false, the actions array will always be empty even if caseStatus is EVALUATED.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string <uuid>
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

The UUID of the commercial case.

query Parameters
action_type
string
Value: "REFERRAL"
Example: action_type=REFERRAL

Filter actions by type. Currently only REFERRAL is supported.

status
string
Value: "RECOMMENDED"
Example: status=RECOMMENDED

Filter actions by status. Currently only RECOMMENDED is supported.

Responses

Response samples

Content type
application/json
Example
{
  • "data": {
    }
}

Cases

Create, retrieve, and manage commercial insurance cases

Create a commercial case

If the request omits name or insured information, the endpoint automatically extracts the missing company information from uploaded documents.

Note: Document upload is required when relying on automatic field extraction.

Supported document content types: application/pdf, application/json, image/jpeg, image/tiff, image/png, text/plain, text/html, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/rtf, image/bmp, image/gif, message/rfc822, application/vnd.ms-outlook, application/mbox, .msg

Authorizations:
ApiKeyAuth
Request Body schema:
required
required
object

Responses

Request samples

Content type
{
  • "case": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "warnings": [
    ]
}

Get all commercial cases

Authorizations:
ApiKeyAuth
query Parameters
external_id
string
Example: external_id=bda31907-49ad-4cf2-b76f-7738f359ae5e

Filter cases by unique external id

insurance_line_id
string <uuid>
Example: insurance_line_id=1cfd8bdf-5a20-4dfb-aca0-729df7795e14

Filter cases by insurance line ID

created_at[gte]
string <date>
Example: created_at[gte]=2025-01-01

Filter cases where created_at is greater than or equal to this date (inclusive, start of day).

created_at[lte]
string <date>
Example: created_at[lte]=2025-01-31

Filter cases where created_at is less than or equal to this date (inclusive, end of day).

updated_at[gte]
string <date>
Example: updated_at[gte]=2025-01-01

Filter cases where updated_at is greater than or equal to this date (inclusive, start of day).

updated_at[lte]
string <date>
Example: updated_at[lte]=2025-01-31

Filter cases where updated_at is less than or equal to this date (inclusive, end of day).

sort_by
string
Enum: "id" "external_id" "created_at" "updated_at"
Example: sort_by=updated_at

Sort results by id, external_id, created_at, or updated_at.

sort_dir
string
Enum: "asc" "desc"
Example: sort_dir=desc

Sort direction (asc for oldest first, desc for newest first). Defaults to desc when sort_by is provided.

page
integer >= 1
Default: 1
Example: page=1

Page number for pagination (must be >= 1)

page_size
integer [ 1 .. 100 ]
Default: 100
Example: page_size=100

Number of items per page (1-100, default 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    },
  • "links": {
    }
}

Get a commercial case

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
lineOfBusinessId
string
Example: lineOfBusinessId=b5f0a313-66f9-47dd-9dc0-808ff971cc64

The uuid for a line of business for loss run analysis

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a commercial case

Permanently deletes a commercial case and all associated data (documents, facts, workflows). This action is irreversible.

Requires the case:delete permission on the API key. This permission is not granted by default and must be explicitly requested. Existing API keys will not have this permission retroactively added.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Export a commercial case as PDF

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Export case narrative as Word document

Export the underwriting narrative for a commercial case as a Microsoft Word document (.docx).

The narrative contains AI-generated sections summarizing key aspects of the case analysis, including risk assessment, business classification, and underwriting recommendations.

Note: This endpoint will return a 409 Conflict error if the case is still being processed. Wait for the case analysis to complete before requesting the narrative export.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string <uuid>
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

The unique identifier of the commercial case

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Export case narrative as PDF

Export the underwriting narrative for a commercial case as a PDF document.

The narrative contains AI-generated sections summarizing key aspects of the case analysis, including risk assessment, business classification, and underwriting recommendations.

Note: This endpoint will return a 409 Conflict error if the case is still being processed. Wait for the case analysis to complete before requesting the narrative export.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string <uuid>
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

The unique identifier of the commercial case

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Bulk Case Creation

Submit many commercial cases as one batch. Cases are paced into analysis so a large submission does not overwhelm the pipeline, submissions resume safely after an interruption, and progress is tracked against a single batch handle.

Open a bulk case batch

Opens a batch that cases are then appended to one at a time. Use this when submitting many cases at once: the batch paces them into analysis so a large submission does not overwhelm the pipeline, and gives you one handle to track progress against.

You supply the batch id, not us. It must be a UUID that you generate. That is what makes the submission resumable — if a response is lost you already know the id, so you can simply call this again. Creating a batch that already exists returns 200 with its current state rather than an error, so a retry is always safe.

Nothing waits for you to finish. Cases begin processing as they arrive; sealing is bookkeeping, not a gate.

Typical flow:

  1. POST /2024-05/commercial/cases/batch — open the batch (this endpoint)
  2. POST /2024-05/commercial/cases/batch/{batch_id}/cases — once per case
  3. POST /2024-05/commercial/cases/batch/{batch_id}/seal — optional
  4. GET /2024-05/commercial/cases/batch/{batch_id} — progress and case IDs
Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
batchId
required
string <uuid>

A UUID you generate. Reuse it to resume; reusing it never errors.

idleSealHours
integer >= 1
Default: 24

Hours of inactivity after which the batch seals itself, so a forgotten batch does not stay open indefinitely. Must be less than the batch lifetime (96 hours). An idle seal is soft: if you append again afterwards the batch simply reopens.

Responses

Request samples

Content type
application/json
{
  • "batchId": "8f14e45f-ceea-467a-9575-3b4a3c0f8f2b"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get batch progress

Returns the batch's state, case counts by status, and the id of each created case once it has been released into analysis.

For "how far along am I?", counts is usually all you need and is never paged. The per-case items list is paged — a batch can hold thousands of cases, and this endpoint is meant to be polled.

Authorizations:
ApiKeyAuth
path Parameters
batch_id
required
string <uuid>
query Parameters
limit
integer <= 500
Default: 100

Cases per page. Values above the maximum are clamped rather than rejected.

offset
integer
Default: 0

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Append a case to a batch

Adds one case to an open batch.

The request body is identical to POST /2024-05/commercial/cases. If you already integrate with that endpoint, the only changes are the URL and the Sixfold-Item-Key header — the payload itself does not move. Documents are uploaded here exactly as they are there.

Call this once per case, in a loop. One case per request is deliberate: it keeps each upload short, so a dropped connection costs you one case rather than the whole submission, and it lets you run the loop several ways at once if you want more throughput.

Retrying is always safe. Sixfold-Item-Key identifies the case within the batch, so re-sending anything you are unsure about is a no-op that reports the case's current status — it will not create a duplicate or re-upload documents. This is how you resume after an interruption: keep appending, and let the server discard what it already has.

A rejected case does not fail the request. Validation problems come back as 202 with status: "rejected" and the reason, leaving the batch usable. Append a corrected case under a new item key.

Authorizations:
ApiKeyAuth
path Parameters
batch_id
required
string <uuid>

The batch id you supplied when opening the batch.

header Parameters
Sixfold-Item-Key
string
Example: row-17

Your stable identifier for this case within the batch — typically your own row id. Required unless the payload carries case.externalId, which is used instead. Without one, a retry would create a duplicate case.

Request Body schema:
required
required
object

Responses

Request samples

Content type
{
  • "case": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Seal a batch

Declares the submission complete. The batch stops accepting appends and can then be reported as completed once every case has finished.

Optional. Cases are processed as they arrive, so sealing does not start or speed up anything — it only tells us you are done. A batch you never seal will seal itself after idleSealHours of inactivity, so a client that crashes mid-submission still converges.

Sealing is binding, unlike the automatic idle seal: appending after this returns 409. Calling it twice is harmless.

Authorizations:
ApiKeyAuth
path Parameters
batch_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Documents

Add documents to commercial insurance cases for analysis

List documents for a commercial case

Returns a paginated list of the customer-visible documents attached to the case. Documents produced by Sixfold's own web research are excluded, matching the documents array on GET /2024-05/commercial/cases/{case_id}.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Add documents to a commercial case

Upload one or more documents to an existing commercial case.

Supported content types: application/pdf, application/json, image/jpeg, image/tiff, image/png, text/plain, text/html, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/rtf, image/bmp, image/gif, message/rfc822, application/vnd.ms-outlook, application/mbox

Files with unsupported content types (e.g., ZIP archives) will be rejected. When some files in a batch are rejected, the response includes both a data array (accepted documents) and an errors array (rejected documents with supported types listed).

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
Request Body schema: multipart/form-data
required
documents
required
Array of strings <binary> [ items <binary > ]

Array of documents to be uploaded.

Responses

Response samples

Content type
application/json
Example
{
  • "data": [
    ]
}

Get a single document for a commercial case

Retrieves document metadata and a downloadUrl for the document binary. To download the file, make a GET request to the downloadUrl with your Sixfold-Api-Key header.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
document_id
required
string <uuid>
Example: 0544e627-5c81-49da-99bc-a2822ead6b99

The unique identifier of the document

Responses

Response samples

Content type
application/json
{}

Delete a document from a commercial case

Removes the document record and deletes the associated file from storage. This action is irreversible.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
document_id
required
string <uuid>
Example: 0544e627-5c81-49da-99bc-a2822ead6b99

The unique identifier of the document

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Download a commercial case document

Streams the document's bytes. This is the target of the downloadUrl property on a commercial document. It is an authenticated proxy, not a pre-signed URL: authenticate with your Sixfold-Api-Key header exactly as for any other endpoint. There is no expiring link and no unauthenticated access path.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
document_id
required
string <uuid>
Example: 0544e627-5c81-49da-99bc-a2822ead6b99

The unique identifier of the document

header Parameters
Range
string
Example: bytes=0-1023

Optional single byte range, in the form bytes=<first>-<last> or bytes=<first>-. When present and satisfiable the response is 206 with a Content-Range header; when it cannot be satisfied the response is 416. Only one range per request is served (ActiveStorage.streaming_max_ranges, 1 by default), so multi-range values are refused with 416. Ignored for a zero-byte document, which returns 200.

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Quotes

Retrieve AI-generated insurance quotes based on case analysis

Set or update case quote status

Creates or updates the quote status for a commercial case. Use the status parameter (recommended) with one of quoted, not_quoted, bound, not_taken_up, or declined. Send status: null to clear the quote status.

The quoted boolean is deprecated; use status instead. Requests that send only quoted will succeed but return Deprecation: true and X-Deprecation-Warning response headers.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
Request Body schema: application/json
required
required
object or object

Quote status payload. Provide status (recommended) or the deprecated quoted boolean. Send status: null to clear. At least one of status or quoted must be provided unless clearing with null.

Responses

Request samples

Content type
application/json
Example
{
  • "case_quote": {
    }
}

Response samples

Content type
application/json
{ }

Remove quote status from a commercial case

Deletes the quote record for the case. Returns 204 even if the case had no quote. Requires case delete permission.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{ }

Facts

Retrieve facts extracted from commercial case documents, including question answers and keyword matches

List facts for a commercial case

Retrieves QuestionAnswer and KeywordMatch facts for a commercial case with pagination. Other internal fact types (e.g. loss run, property) are not returned.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Get a single fact for a commercial case

Retrieves a single QuestionAnswer or KeywordMatch fact by its unique identifier. Returns 404 for other fact types. Use the facts list endpoint to discover valid fact IDs.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
fact_id
required
string <uuid>
Example: f8e3c4a0-5b2e-4220-90d2-96d94337e8e6

The unique identifier of the fact

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Feedback

Submit and manage underwriter feedback on commercial case facts

List feedback across all commercial cases

Returns underwriter feedback across every commercial case in the tenant, newest first, including feedback entered in the Sixfold UI.

Each record carries subject, the question title or keyword the feedback was left on. It matches title on a Q&ASignal and keyword on a KeywordSignal in the case payload, so feedback can be attributed to the risk signal that produced it. subjectType and subjectId identify the feedback target. factId remains populated only for question answers and keyword matches.

Requires the case:read permission.

Authorizations:
ApiKeyAuth
query Parameters
case_id
string <uuid>
Example: case_id=c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Restrict results to a single case.

insurance_line_id
string <uuid>
Example: insurance_line_id=1cfd8bdf-5a20-4dfb-aca0-729df7795e14

Filter feedback to cases on a single insurance line.

sentiment
string
Enum: "positive" "negative"
Example: sentiment=negative

Filter by thumbs-up or thumbs-down.

created_at[gte]
string <date>
Example: created_at[gte]=2026-08-01

Only feedback created on or after this date (inclusive, start of day).

created_at[lte]
string <date>
Example: created_at[lte]=2026-08-31

Only feedback created on or before this date (inclusive, end of day).

updated_at[gte]
string <date>
Example: updated_at[gte]=2026-08-01

Only feedback updated on or after this date (inclusive, start of day).

updated_at[lte]
string <date>
Example: updated_at[lte]=2026-08-31

Only feedback updated on or before this date (inclusive, end of day).

page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

List feedback for a commercial case

Retrieves all feedback submitted by the authenticated API key for the given case. Feedback from other API keys are not visible.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Submit feedback on a commercial case output

Submits thumbs-up/down feedback on a question answer, keyword match, or business classification. Multiple feedback entries per output are allowed when multiple underwriters share an API key.

Send either the legacy factId for a question answer or keyword match, or the typed pair subjectType and subjectId. Do not send both forms. BusinessClassification is supported only through the typed pair. Subject IDs are scoped to the current analysis and may change after the case is re-analyzed.

Positive feedback: only reportedBy is accepted. reasons and comment are not allowed.

Negative feedback: reasons is required (one or more from the accepted enum). comment is optional. reportedBy is optional.

The reportedBy field accepts a free-form identifier (name or email) for the underwriter submitting the feedback. It is stored as-is and is not linked to a Sixfold user account.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
Request Body schema: application/json
required
One of
sentiment
required
string
Enum: "positive" "negative"

Thumbs up (positive) or thumbs down (negative).

reasons
Array of strings
Items Enum: "false_data" "missing_data" "cant_verify" "unclear" "bad_formatting" "wrong_assumption" "other"

Required when sentiment is negative. Not allowed when sentiment is positive. One or more reasons explaining why the output was incorrect. Multiple values are allowed.

comment
string or null

Optional. Only allowed for negative feedback. Free-text comment explaining the feedback.

reportedBy
string or null

Optional identifier (name or email) of the underwriter submitting feedback.

factId
required
integer

Legacy ID of a question answer or keyword match fact.

Responses

Request samples

Content type
application/json
{
  • "sentiment": "positive",
  • "reasons": [
    ],
  • "comment": "The answer is missing key details.",
  • "reportedBy": "[email protected]",
  • "subjectType": "BusinessClassification",
  • "subjectId": "422"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update feedback

Updates existing feedback. Only the API key that created the feedback may update it. All fields are optional — omitted fields are left unchanged.

Switching to positive: reasons and comment are automatically cleared — no need to pass them explicitly.

Switching to negative: reasons is required. comment is optional.

Positive feedback: passing reasons or comment explicitly returns 422.

Negative feedback: reasons is required (if not already set). comment is optional.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
feedback_id
required
integer
Example: 1

The ID of the feedback to update.

Request Body schema: application/json
required
sentiment
string
Enum: "positive" "negative"

Optional. Updated sentiment. Omit to leave unchanged.

reasons
Array of strings
Items Enum: "false_data" "missing_data" "cant_verify" "unclear" "bad_formatting" "wrong_assumption" "other"

Optional. Updated reasons. Required if sentiment is (or becomes) negative. Not allowed if sentiment is (or remains) positive. Omit to leave unchanged.

comment
string or null

Optional. Only allowed for negative feedback. Updated comment. Omit to leave unchanged.

reportedBy
string or null

Optional. Updated reporter identifier. Omit to leave unchanged.

Responses

Request samples

Content type
application/json
{
  • "sentiment": "negative",
  • "reasons": [
    ],
  • "comment": "On reflection, the answer is wrong.",
  • "reportedBy": "[email protected]"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete feedback

Deletes feedback. Only the API key that created the feedback may delete it.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
feedback_id
required
integer
Example: 1

The ID of the feedback to delete.

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Research Runs

Run the Smart Retrieval Research Agent on a case with caller-supplied questions and retrieve the answers

Start a research run on a commercial case

Runs the Smart Retrieval Research Agent (SRRA) against the case's documents with caller-supplied question prompts, and returns a run you can poll for answers.

The run is asynchronous: an SRRA batch can take several minutes, so this endpoint returns 202 Accepted with a run UUID immediately. Poll GET /2024-05/commercial/cases/{case_id}/research-runs/{run_uuid} until the run reaches done (or error).

A run is read-only with respect to the case: it never creates analyses or writes case facts, so runs are repeatable and safe to re-issue.

Availability: this endpoint is gated by a per-tenant feature flag and is enabled on test tenants only. When it is disabled, the endpoint responds 404 Not Found. The API key must carry the research:run permission.

system_prompts overrides are not accepted yet — question prompt text is taken solely from each question's text. Reserved for a future release.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
Request Body schema: application/json
required
required
Array of objects [ 1 .. 100 ] items

The questions to research. Each is answered independently.

object or null

Optional batching overrides.

Responses

Request samples

Content type
application/json
{
  • "questions": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Retrieve a research run

Returns the status and, once complete, the results of a research run started via POST /2024-05/commercial/cases/{case_id}/research-runs.

Poll this endpoint until status is done (results available) or error. Only the API key that created the run can retrieve it.

Availability: gated by a per-tenant feature flag (test tenants only); responds 404 Not Found when disabled. Requires the research:run permission.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
run_uuid
required
string <uuid>
Example: 2249683a-ce2e-4818-af66-be0b7a3f5770

The run UUID returned when the run was created.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Line Questions

Read a commercial insurance line's current question configs (the questions used to analyze cases on the line)

List a line's question configs

Returns the current question configs for a commercial insurance line — the questions used to analyze cases on this line: the prompt text, its category, the model and researchAssistant flags, and any sourceConstraints.

This is a read-only view of live line configuration — it never triggers analysis, a re-run, or any workflow. Use it to fetch a line's current questions instead of relying on a baked-in copy of the prompt text.

Availability: gated by a per-tenant feature flag (test tenants only); responds 404 Not Found when disabled. Requires the case:read permission.

Authorizations:
ApiKeyAuth
path Parameters
line_id
required
string <uuid>
Example: f350e2bf-f801-48bd-8a9a-74dfde0ff174

The commercial insurance line id (UUID).

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Cases

Create, retrieve, and manage life insurance cases

Create a life case

Create a new life case with insured person details and optional documents.

Supported document content types: application/pdf, application/json, application/xhtml+xml, image/jpeg, image/tiff, image/png, text/html, text/plain

Authorizations:
ApiKeyAuth
Request Body schema:
required
required
object

Responses

Request samples

Content type
{
  • "case": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get all life cases

Authorizations:
ApiKeyAuth
query Parameters
external_id
string
Example: external_id=bda31907-49ad-4cf2-b76f-7738f359ae5e

Filter cases by unique external id

created_at[gte]
string <date>
Example: created_at[gte]=2025-01-01

Filter cases where created_at is greater than or equal to this date (inclusive, start of day).

created_at[lte]
string <date>
Example: created_at[lte]=2025-01-31

Filter cases where created_at is less than or equal to this date (inclusive, end of day).

updated_at[gte]
string <date>
Example: updated_at[gte]=2025-01-01

Filter cases where updated_at is greater than or equal to this date (inclusive, start of day).

updated_at[lte]
string <date>
Example: updated_at[lte]=2025-01-31

Filter cases where updated_at is less than or equal to this date (inclusive, end of day).

sort_by
string
Enum: "id" "external_id" "created_at" "updated_at"
Example: sort_by=updated_at

Sort results by id, external_id, created_at, or updated_at.

sort_dir
string
Enum: "asc" "desc"
Example: sort_dir=desc

Sort direction (asc for oldest first, desc for newest first). Defaults to desc when sort_by is provided.

page
integer >= 1
Default: 1
Example: page=1

Page number for pagination (must be >= 1)

page_size
integer [ 1 .. 100 ]
Default: 100
Example: page_size=100

Number of items per page (1-100, default 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    },
  • "links": {
    }
}

Get a life case

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a life case

Permanently deletes a life case and all associated data (documents, facts, workflows). This action is irreversible.

Requires the case:delete permission on the API key. This permission is not granted by default and must be explicitly requested. Existing API keys will not have this permission retroactively added.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Export a life case as PDF

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Responses

Response samples

Content type
application/json
{
  • "status": "processing",
  • "message": "PDF is being generated. Retry after the specified interval."
}

Documents

Add documents to life insurance cases for analysis

Add documents to a life case

Add documents to a life case by providing an array of documents to be uploaded. When submitting via multipart/form-data, use indexed notation (documents[0][file], documents[0][category], etc.).

Supported content types: application/pdf, application/json, application/xhtml+xml, image/jpeg, image/tiff, image/png, text/html, text/plain

Files with unsupported content types will be rejected. When some files in a batch are rejected, the response includes both a data array (accepted documents) and an errors array (rejected documents with supported types listed).

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
Request Body schema: multipart/form-data
required
required
Array of objects (DocumentUpload)

Array of documents to be uploaded. When submitting via multipart/form-data, use indexed notation (documents[0][file], documents[0][category], etc.).

documents[]
Array of strings <binary> [ items <binary > ]
Deprecated

Responses

Request samples

Content type
multipart/form-data
{
  "documents[0][file]": "@path/to/file1.pdf",
  "documents[0][category]": "Medical Record",
  "documents[1][file]": "@path/to/file2.pdf",
  "documents[1][category]": "Application"
}

Response samples

Content type
application/json
Example
{
  • "data": [
    ]
}

Facts

Retrieve facts extracted from case documents

Get all facts for a case

Retrieves all facts for a case with pagination. Facts include medications, diagnoses, procedures, clinical data, family history, and lifestyle information. Conditions are accessed via the /conditions endpoints.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Get a single fact for a life case

Retrieves a single fact by its unique identifier

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
fact_id
required
string <uuid>
Example: f8e3c4a0-5b2e-4220-90d2-96d94337e8e6

The unique identifier of the fact

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Conditions

Retrieve medical conditions and their supporting evidence

Get all conditions for a life case

Retrieves all conditions for a case with pagination. Each condition includes an array of related facts that support or provide evidence for the condition.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Get a single condition for a life case

Retrieves a single condition by its unique identifier, including an array of related facts that support or provide evidence for the condition.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
condition_id
required
string <uuid>
Example: a3b7d1e0-6c4f-4330-81e3-a8e05448f9f7

The unique identifier of the condition

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get facts related to a condition

Retrieves a paginated list of facts that provide supporting evidence for the condition (medications, diagnoses, procedures, clinical data, etc.). Note that relatedConditions is not included in the response for this endpoint since the relationship to the condition is already implied.

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6
condition_id
required
string <uuid>
Example: a3b7d1e0-6c4f-4330-81e3-a8e05448f9f7

The unique identifier of the condition

query Parameters
page
integer >= 1
Default: 1

The page number to fetch

page_size
integer [ 1 .. 100 ]
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{}

Integrations

Manage integration metadata for external systems

Add metadata to an integration of a life case

Add to an integration by providing metadata to the integration spec

Authorizations:
ApiKeyAuth
path Parameters
case_id
required
string
Example: c4fb4c10-5b2e-4220-90d2-96d94337e8e6

Unique identifier for the case

integration_id
required
string
Example: 78ea09d0-55f7-407a-9fc9-d625cfd84085

Unique identifier for the integration (provided by Sixfold)

Request Body schema: application/json-patch+json
required
Array
Any of
op
required
string
Value: "add"

The operation to be done for adding the FileNet file, the value must be "add"

path
required
string
Value: "/files/-"

The path for adding the FileNet file, the value must be "/files/-"

required
object (CreateFileNetIntegrationMetadataRequest)

Object containing the id of the file on FileNet to be retrieved

Responses

Request samples

Content type
application/json-patch+json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "data": [
    ]
}

2024-05 Webhooks

Webhooks allow us to send important events about a case to you in real-time.

Requirements

  • Your webhook resource MUST accept requests with content type application/json

  • Your webhook resource MUST return a response with a 200 status to indicate that the request was processed successfully

Custom Headers

You can optionally specify custom headers for us to send in webhook requests. This is useful when, for example, your webhook resource requires us to provide an authentication token in a header. Custom headers are defined at the webhook level and are included in all requests sent to the webhook callback URL. Please reach out to your Sixfold representative to set up custom headers for your webhook.

Webhook Topics

A webhook's topic indicates the type of event that triggered the webhook. The topic is included in the request body sent to your webhook URL.

Supported webhook topics include:

| Topic | Description |

| --- | --- |

| cases/created | a case was successfully created |

| cases/updated | a case was successfully updated |

| cases/finished | a case has completed the analysis |

| cases/errored | a case encountered an error during analysis, or a case could not be created because required fields could not be extracted from submitted documents (Easy Case Creation) |

| integrations/finished | an integration has finished its operation |

| integrations/errored | an integration encountered an error during its operation |

Referral Actions

The recommendedActions field and the Actions API require the Referral Agent feature. When not enabled, recommendedActions will be null and the Actions API will return referralAgentEnabled: false and actions: []. Please reach out to your account team if this feature is not enabled for your tenant.

When the Referral Agent evaluates a case and determines that a referral is recommended, the case is updated with the referral recommendation. This triggers a cases/updated webhook (and cases/finished if the referral completes after case analysis).

The webhook payload will include recommendedActions: "Referral" in the case attributes. When you receive this value, call GET /api/2026-01/commercial/cases/{case_id}/actions to retrieve the full referral details including rationales, citations, and a pre-generated email template.

Examples

Commercial Example Request

Below is an example of a webhook request sent when a commercial case is updated:

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/updated",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "commercialCases",
          "attributes": {
            "externalId": "bda31907-49ad-4cf2-b76f-7738f359ae5e",
            "name": "Diamond West Construction Case",
            "insuranceLine": {
              "id": "1cfd8bdf-5a20-4dfb-aca0-729df7795e14",
              "name": "General Liability"
            },
            "insuredCompany": {
              "name": "Diamond West Construction",
              "businessActivity": "Construction",
              "summary": "A general building contractor that offers home remodeling and design-build services.",
              "webPresence": {
                "urls": [
                  "https://diamondwestdevelopment.com/about-us/",
                  "https://diamondwestdevelopment.com/",
                  "http://diamondwestconstruction.mobi/",
                  "https://diamondwestdevelopment.com/gallery/",
                  "https://diamondwestdevelopment.com/services/"
                ]
              },
              "businessClassification": [
                  {
                    "subjectType": "BusinessClassification",
                    "subjectId": "159",
                    "system": "naics",
                    "code": "236118",
                    "title": "Commercial and Institutional Building Construction",
                    "explanation": "236118 - Residential Remodelers The business summary indicates that this is a general building contractor that offers home remodeling and design-build services. This aligns directly with the NAICS code 236118, which is designated for businesses primarily responsible for remodeling construction of houses and other residential buildings. The services offered by the business, such as home remodeling and design-build, are specifically mentioned in the NAICS context as activities included in this industry. The business is likely to serve customers who own residential properties, including single-family and multifamily homes, who are looking to remodel or renovate their properties. This is why the NAICS code 236118 - Residential Remodelers is assigned with high confidence.",
                    "confidence": 0.79
                  }
                ],
              "address": {
                "street": "6676 Van Buren Boulevard",
                "city": "Riverside",
                "state": "CA",
                "postalCode": "92503",
                "country": "US"
              }
            },
            "analysis": {
              "status": "done",
              "riskEvaluation": {
                "score": 4,
                "summary": "We have determined a risk score of 4 given the lack of negative risk signals detected.",
                "sectionScores": [
                  {
                    "sectionId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                    "sectionName": "Cybersecurity",
                    "score": 4,
                    "signalCount": 3
                  }
                ]
              },
              "riskSignalDetections": [
                {
                  "type": "KeywordSignal",
                  "keyword": "Construction",
                  "explanation": "The content mentions Diamond West Construction Services, which offers a range of construction services including residential, commercial, and communications projects. Additionally, Diamond West Development provides diversified construction services such as concrete work, block walls, pools, and outdoor kitchens. This indicates that the business likely engages in construction activities.",
                  "impact": "positive",
                  "weight": 1.0,
                  "fact_id": "423"
                },
                {
                  "type": "KeywordSignal",
                  "keyword": "Remodeling",
                  "explanation": "The content extensively discusses Diamond West Development's involvement in remodeling projects, including kitchen and bathroom remodeling. It highlights customer testimonials praising their work on remodeling projects and mentions their services in home remodeling, room additions, and custom homes. This indicates that the business likely engages in remodeling activities.",
                  "impact": "negative",
                  "weight": 3.0,
                  "fact_id": "424"
                },
                {
                  "type": "QuestionAnswerSignal",
                  "title": "PCI Compliance",
                  "explanation": "The answer does not establish that the insured is PCI compliant, which is a negative signal for a business handling cardholder data.",
                  "impact": "negative",
                  "weight": 2.0,
                  "fact_id": "422"
                },
                {
                  "type": "NaicsSignal",
                  "code": "236118",
                  "title": "Residential Remodelers",
                  "explanation": "The insured's operations align with residential remodeling.",
                  "impact": "negative",
                  "weight": 5.0,
                  "fact_id": null
                }
              ],
              "facts": [
                {
                  "section_id": "8f2c1a44-9d3e-4b71-8a56-2e7d0c9b4f13",
                  "section": "Cyber Controls",
                  "questions": [
                    {
                      "fact_id": "422",
                      "question": "Does PCI Compliance applicable to this company? If so, is the company PCI Compliant?",
                      "answer": "Diamond West Construction Services accepts card payments for residential remodeling work, so PCI DSS applies. The submission does not state whether a Self-Assessment Questionnaire has been completed, so current compliance could not be established from the documents provided.",
                      "impact": "negative",
                      "sources": [
                        {
                          "type": "document",
                          "filename": "cyber-application.pdf"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "keywordMatch",
                  "fact_id": "423",
                  "keyword": "Construction",
                  "explanation": "The content mentions Diamond West Construction Services, which offers a range of construction services including residential, commercial, and communications projects.",
                  "impact": "positive"
                },
                {
                  "type": "keywordMatch",
                  "fact_id": "424",
                  "keyword": "Remodeling",
                  "explanation": "The content extensively discusses Diamond West Development's involvement in remodeling projects, including kitchen and bathroom remodeling.",
                  "impact": "negative"
                }
              ]
            },
            "documents": [
              {
                "id": "0544e627-5c81-49da-99bc-a2822ead6b99",
                "filename": "file 1.pdf",
                "contentType": "application/pdf",
                "byteSize": 123456,
                "processingStatus": "failed",
                "failureReason": "no_text_extracted"
              }
            ],
            "websites": [
              {
                "id": "ea8077ce-2d58-422f-9ce2-e2f95744fb89",
                "url": "https://diamondwest.example.com/careers",
                "processingStatus": "excluded"
              }
            ],
            "quoted": true,
            "recommendedActions": "Referral",
            "alternateUrl": "https://{tenant}.sixfold.app/commercial/cases/c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
            "createdAt": "2023-01-10T16:00:30+0:00",
            "updatedAt": "2023-01-10T16:05:30+0:00"
          }
        }
      }
    }

Linking a risk signal to its underlying fact: each entry in riskSignalDetections carries a fact_id. The key is always present; where it is non-null it matches a fact in the same payload. Note that the two fact kinds sit at different depths in analysis.facts:

Signal type Where its fact lives
QuestionAnswerSignal analysis.facts[].questions[].fact_id — nested inside its section
KeywordSignal analysis.facts[].fact_id on a top-level entry with "type": "keywordMatch"

In the example above the QuestionAnswerSignal carries "422", which is the fact_id of the question inside the Cyber Controls section, while the KeywordSignals carry "423" and "424", which are top-level keywordMatch entries. Use that value to render the signal alongside the answer and sources that produced it, and to target the Feedback API, instead of matching on title or any other display string.

fact_id is null for business classification signals (NaicsSignal, SicSignal, IbcSignal, EicSignal), which have no underlying case fact. The null is expected, not an error.

fact_id identifies the fact for the current analysis. Facts are deleted and recreated when a case is re-analyzed, so read the value from the latest callback rather than storing it as a long-lived key.

Business classifications in insuredCompany.businessClassification[] expose subjectType: "BusinessClassification" and subjectId. Submit feedback with this typed pair, not factId. Like facts, classification IDs are recreated on re-analysis.

Source processing status

Every commercial case payload includes processingStatus on each documents[] entry and a websites[] array. The values are processed, processing, failed, and excluded. failureReason is absent unless the source failed, and it is always a safe code (no_text_extracted or processing_failed), never an internal workflow error.

excluded means that a website was successfully read but did not pass relevance filtering; it is distinct from a processing failure. Status reflects the moment the payload is generated, so newly-created cases commonly contain processing sources; use cases/finished for terminal outcomes.

Only URLs that became case-scoped document records appear in websites[]. A URL that could not be fetched or was rejected before a document was created is not represented. Likewise, a failed document can be identified by filename but is not reliably classified into an insurance document class because classification is written only on the success path. Unsupported files are rejected synchronously by POST /cases/{case_id}/documents and do not appear in either source array.

Case Creation Failed Example Request (Easy Case Creation)

When a case is submitted via the Easy Case Creation API (POST /api/2024-05/commercial/case-from-documents) and the system cannot extract the required insured name, address, or US state from the submitted documents, a cases/errored webhook fires. The case was never created — the id in the payload matches the case_uuid returned by the original API call.

The analysis.errors[0].detail message names the specific fields that could not be extracted. To recover, use the standard case creation endpoint (POST /api/2024-05/commercial/cases) and provide the missing fields (name, insured.address) explicitly in the request body — the case-from-documents endpoint does not accept these fields directly.

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/errored",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "commercialCases",
          "attributes": {
            "state": "errored",
            "externalId": "your-reference-id",
            "analysis": {
              "status": "error",
              "errors": [
                {
                  "title": "Case creation failed",
                  "code": "extraction_failed",
                  "detail": "Could not extract insured name and insured address from the submitted documents. Please use the POST /api/2024-05/commercial/cases endpoint and explicitly provide insured name and insured address in the request body."
                }
              ]
            },
            "createdAt": "2024-01-10T16:00:30Z",
            "updatedAt": "2024-01-10T16:05:30Z"
          }
        }
      }
    }

Note: The payload shape for this error scenario is intentionally simpler than a standard cases/errored payload — it contains no name, documents, or insuredCompany fields, since the case was never fully created. The analysis object contains only status and errors; the richer analysis fields present in a standard case payload (riskEvaluation, riskSignalDetections, facts, etc.) are absent. Clients should handle both shapes when processing cases/errored events.

Life & Disability Example Request

Below is an example of a webhook request sent when a life & disability case is updated:

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/updated",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "lifeCases",
          "attributes": {
            "name": "Jane Doe",
            "insuranceLine": {
              "id": "1cfd8bdf-5a20-4dfb-aca0-729df7795e14",
              "name": "Life"
            },
            "documentsCount": 123,
            "externalId": "client-custom-identifier",
            "alternateUrl": "https://{tenant}.sixfold.app/life/cases/c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
            "insuredPerson": {
              "name": "Jane Doe",
              "bornOn": "1949-12-31",
              "occupation": "Software Engineer",
              "sex": "female"
            },
            "analysis": {
              "status": "done",
              "errors": [],
              "riskSignalDetections": [
                {
                  "type": "KeywordSignal",
                  "keyword": "Cancer",
                  "explanation": "The fact 'Concerning for malignancy' matches the keyword signal 'Cancer' with a negative impact based on the risk appetite provided.",
                  "impact": "negative",
                  "sources": [
                    {
                      "filename": "medial_report.pdf",
                      "pages": [1,2,3]
                    }
                  ]
                }
              ],
              "riskOverview": "Jane Doe, a 74-year-old female who smokes, has a history of several significant medical conditions and treatments. She has been diagnosed with strep pharyngitis, appendicitis, migraines with aura, atypical chest pain concerning for angina, community-acquired pneumonia,\n",
              "fullHealthSummary": "Jane Doe's medical history is extensive, beginning with diagnoses of strep pharyngitis in 1980 treated with clindamycin due to penicillin allergy, and appendicitis in 1987, both of which were treated accordingly. In 1993, she was diagnosed with migraines with aura and began treatment with metoclopramide and sumatriptan. By 2000, she experienced atypical chest pain, which raised concerns for angina, leading to a cardiology referral and the initiation of ASA. In 2006, she was diagnosed with community-acquired pneumonia and subsequently with chronic myeloid leukemia (CML) in 2013, which is currently in remission with ongoing imatinib treatment. Her history also includes a COPD exacerbation in 2016 treated with albuterol and Advair, and orthostatic hypotension diagnosed in 2018, with a treatment plan including fludrocortisone. Throughout her medical journey, Jennifer has been prescribed various medications, including ASA for atypical chest pain and post-myocardial infarction, atenolol and atorvastatin for coronary artery disease post-myocardial infarction, and imatinib specifically targeting her CML. The presence of atenolol and atorvastatin suggests a focus on heart health and cholesterol, while imatinib specifically targets her CML. Notably, there is an absence of direct treatment for high blood pressure, despite the presence of medications that could indirectly affect it, and no mention of medications for mental health conditions or sleep apnea, which are not listed among her diagnosed conditions.\n",
              "factsCount": 321
            },
            "createdAt": "2024-01-10T16:00:30Z",
            "updatedAt": "2024-01-10T16:00:30Z"
          }
        }
      }
    }

FileNet Integration Example Request

Below is an example of a webhook request sent when a FileNet integration has successfully downloaded the files:

    {
      "id": "94b4fd8d-3500-49a4-a3cb-0e7f59c9b1ac",
      "topic": "integrations/finished",
      "body": {
        "data": {
          "caseId": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "integrationId": "78ea09d0-55f7-407a-9fc9-d625cfd84085",
          "files": [
            {
              "id": "filenet-unique-identifier",
              "category": "Medical Record"
            },
            {
              "id": "filenet-unique-identifier-2"
            }
          ]
        }
      }
    }

Below is an example of a webhook request sent when a FileNet integration failed to download the file:

    {
      "id": "94b4fd8d-3500-49a4-a3cb-0e7f59c9b1ac",
      "topic": "integrations/errored",
      "body": {
        "data": {
          "caseId": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "integrationId": "78ea09d0-55f7-407a-9fc9-d625cfd84085",
          "files": [
            {
              "id": "filenet-unique-identifier",
              "category": "Medical Record"
            },
            {
              "id": "filenet-unique-identifier-2"
            }
          ],
          "errors": [
            {
              "status": "500",
              "title": "FileNet server error",
              "detail": "File 'filenet-unique-identifier' failed due to a FileNet server error",
              "meta": {
                "fileId": "filenet-unique-identifier"
              }
            }
          ]
        }
      }
    }

Example Request with Custom Headers

Below is an example of a webhook request that includes a custom Auth-Token header for authentication:


POST /webhooks HTTP/1.1

Host: foo.example

Accept: application/json

Content-Type: application/json

Auth-Token: secret-custom-header


{
  "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
  "topic": "cases/updated",
  "body": {
    "data": {
      ...
    }
  }
}

Requirements

  • Your webhook resource MUST accept requests with content type application/json

    • Your webhook resource MUST return a response with a 200 status to indicate that the request was processed successfully

Custom Headers

You can optionally specify custom headers for us to send in webhook requests. This is useful when, for example, your webhook resource requires us to provide an authentication token in a header. Custom headers are defined at the webhook level and are included in all requests sent to the webhook callback URL. Please reach out to your Sixfold representative to set up custom headers for your webhook.

Webhook Topics

A webhook's topic indicates the type of event that triggered the webhook. The topic is included in the request body sent to your webhook URL.

Supported webhook topics include:

| Topic | Description |

| --- | --- |

| cases/created | a case was successfully created |

| cases/updated | a case was successfully updated |

| cases/finished | a case has completed the analysis |

| cases/errored | a case encountered an error during analysis, or a case could not be created because required fields could not be extracted from submitted documents (Easy Case Creation) |

| integrations/finished | an integration has finished its operation |

| integrations/errored | an integration encountered an error during its operation |

Referral Actions

The recommendedActions field and the Actions API require the Referral Agent feature. When not enabled, recommendedActions will be null and the Actions API will return referralAgentEnabled: false and actions: []. Please reach out to your account team if this feature is not enabled for your tenant.

When the Referral Agent evaluates a case and determines that a referral is recommended, the case is updated with the referral recommendation. This triggers a cases/updated webhook (and cases/finished if the referral completes after case analysis).

The webhook payload will include recommendedActions: "Referral" in the case attributes. When you receive this value, call GET /api/2026-01/commercial/cases/{case_id}/actions to retrieve the full referral details including rationales, citations, and a pre-generated email template.

Examples

Commercial Example Request

Below is an example of a webhook request sent when a commercial case is updated:

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/updated",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "commercialCases",
          "attributes": {
            "externalId": "bda31907-49ad-4cf2-b76f-7738f359ae5e",
            "name": "Diamond West Construction Case",
            "insuranceLine": {
              "id": "1cfd8bdf-5a20-4dfb-aca0-729df7795e14",
              "name": "General Liability"
            },
            "insuredCompany": {
              "name": "Diamond West Construction",
              "businessActivity": "Construction",
              "summary": "A general building contractor that offers home remodeling and design-build services.",
              "webPresence": {
                "urls": [
                  "https://diamondwestdevelopment.com/about-us/",
                  "https://diamondwestdevelopment.com/",
                  "http://diamondwestconstruction.mobi/",
                  "https://diamondwestdevelopment.com/gallery/",
                  "https://diamondwestdevelopment.com/services/"
                ]
              },
              "businessClassification": [
                  {
                    "subjectType": "BusinessClassification",
                    "subjectId": "159",
                    "system": "naics",
                    "code": "236118",
                    "title": "Commercial and Institutional Building Construction",
                    "explanation": "236118 - Residential Remodelers The business summary indicates that this is a general building contractor that offers home remodeling and design-build services. This aligns directly with the NAICS code 236118, which is designated for businesses primarily responsible for remodeling construction of houses and other residential buildings. The services offered by the business, such as home remodeling and design-build, are specifically mentioned in the NAICS context as activities included in this industry. The business is likely to serve customers who own residential properties, including single-family and multifamily homes, who are looking to remodel or renovate their properties. This is why the NAICS code 236118 - Residential Remodelers is assigned with high confidence.",
                    "confidence": 0.79
                  }
                ],
              "address": {
                "street": "6676 Van Buren Boulevard",
                "city": "Riverside",
                "state": "CA",
                "postalCode": "92503",
                "country": "US"
              }
            },
            "analysis": {
              "status": "done",
              "riskEvaluation": {
                "score": 4,
                "summary": "We have determined a risk score of 4 given the lack of negative risk signals detected.",
                "sectionScores": [
                  {
                    "sectionId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                    "sectionName": "Cybersecurity",
                    "score": 4,
                    "signalCount": 3
                  }
                ]
              },
              "riskSignalDetections": [
                {
                  "type": "KeywordSignal",
                  "keyword": "Construction",
                  "explanation": "The content mentions Diamond West Construction Services, which offers a range of construction services including residential, commercial, and communications projects. Additionally, Diamond West Development provides diversified construction services such as concrete work, block walls, pools, and outdoor kitchens. This indicates that the business likely engages in construction activities.",
                  "impact": "positive",
                  "weight": 1.0,
                  "fact_id": "423"
                },
                {
                  "type": "KeywordSignal",
                  "keyword": "Remodeling",
                  "explanation": "The content extensively discusses Diamond West Development's involvement in remodeling projects, including kitchen and bathroom remodeling. It highlights customer testimonials praising their work on remodeling projects and mentions their services in home remodeling, room additions, and custom homes. This indicates that the business likely engages in remodeling activities.",
                  "impact": "negative",
                  "weight": 3.0,
                  "fact_id": "424"
                },
                {
                  "type": "QuestionAnswerSignal",
                  "title": "PCI Compliance",
                  "explanation": "The answer does not establish that the insured is PCI compliant, which is a negative signal for a business handling cardholder data.",
                  "impact": "negative",
                  "weight": 2.0,
                  "fact_id": "422"
                },
                {
                  "type": "NaicsSignal",
                  "code": "236118",
                  "title": "Residential Remodelers",
                  "explanation": "The insured's operations align with residential remodeling.",
                  "impact": "negative",
                  "weight": 5.0,
                  "fact_id": null
                }
              ],
              "facts": [
                {
                  "section_id": "8f2c1a44-9d3e-4b71-8a56-2e7d0c9b4f13",
                  "section": "Cyber Controls",
                  "questions": [
                    {
                      "fact_id": "422",
                      "question": "Does PCI Compliance applicable to this company? If so, is the company PCI Compliant?",
                      "answer": "Diamond West Construction Services accepts card payments for residential remodeling work, so PCI DSS applies. The submission does not state whether a Self-Assessment Questionnaire has been completed, so current compliance could not be established from the documents provided.",
                      "impact": "negative",
                      "sources": [
                        {
                          "type": "document",
                          "filename": "cyber-application.pdf"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "keywordMatch",
                  "fact_id": "423",
                  "keyword": "Construction",
                  "explanation": "The content mentions Diamond West Construction Services, which offers a range of construction services including residential, commercial, and communications projects.",
                  "impact": "positive"
                },
                {
                  "type": "keywordMatch",
                  "fact_id": "424",
                  "keyword": "Remodeling",
                  "explanation": "The content extensively discusses Diamond West Development's involvement in remodeling projects, including kitchen and bathroom remodeling.",
                  "impact": "negative"
                }
              ]
            },
            "documents": [
              {
                "id": "0544e627-5c81-49da-99bc-a2822ead6b99",
                "filename": "file 1.pdf",
                "contentType": "application/pdf",
                "byteSize": 123456,
                "processingStatus": "failed",
                "failureReason": "no_text_extracted"
              }
            ],
            "websites": [
              {
                "id": "ea8077ce-2d58-422f-9ce2-e2f95744fb89",
                "url": "https://diamondwest.example.com/careers",
                "processingStatus": "excluded"
              }
            ],
            "quoted": true,
            "recommendedActions": "Referral",
            "alternateUrl": "https://{tenant}.sixfold.app/commercial/cases/c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
            "createdAt": "2023-01-10T16:00:30+0:00",
            "updatedAt": "2023-01-10T16:05:30+0:00"
          }
        }
      }
    }

Linking a risk signal to its underlying fact: each entry in riskSignalDetections carries a fact_id. The key is always present; where it is non-null it matches a fact in the same payload. Note that the two fact kinds sit at different depths in analysis.facts:

Signal type Where its fact lives
QuestionAnswerSignal analysis.facts[].questions[].fact_id — nested inside its section
KeywordSignal analysis.facts[].fact_id on a top-level entry with "type": "keywordMatch"

In the example above the QuestionAnswerSignal carries "422", which is the fact_id of the question inside the Cyber Controls section, while the KeywordSignals carry "423" and "424", which are top-level keywordMatch entries. Use that value to render the signal alongside the answer and sources that produced it, and to target the Feedback API, instead of matching on title or any other display string.

fact_id is null for business classification signals (NaicsSignal, SicSignal, IbcSignal, EicSignal), which have no underlying case fact. The null is expected, not an error.

fact_id identifies the fact for the current analysis. Facts are deleted and recreated when a case is re-analyzed, so read the value from the latest callback rather than storing it as a long-lived key.

Business classifications in insuredCompany.businessClassification[] expose subjectType: "BusinessClassification" and subjectId. Submit feedback with this typed pair, not factId. Like facts, classification IDs are recreated on re-analysis.

Source processing status

Every commercial case payload includes processingStatus on each documents[] entry and a websites[] array. The values are processed, processing, failed, and excluded. failureReason is absent unless the source failed, and it is always a safe code (no_text_extracted or processing_failed), never an internal workflow error.

excluded means that a website was successfully read but did not pass relevance filtering; it is distinct from a processing failure. Status reflects the moment the payload is generated, so newly-created cases commonly contain processing sources; use cases/finished for terminal outcomes.

Only URLs that became case-scoped document records appear in websites[]. A URL that could not be fetched or was rejected before a document was created is not represented. Likewise, a failed document can be identified by filename but is not reliably classified into an insurance document class because classification is written only on the success path. Unsupported files are rejected synchronously by POST /cases/{case_id}/documents and do not appear in either source array.

Case Creation Failed Example Request (Easy Case Creation)

When a case is submitted via the Easy Case Creation API (POST /api/2024-05/commercial/case-from-documents) and the system cannot extract the required insured name, address, or US state from the submitted documents, a cases/errored webhook fires. The case was never created — the id in the payload matches the case_uuid returned by the original API call.

The analysis.errors[0].detail message names the specific fields that could not be extracted. To recover, use the standard case creation endpoint (POST /api/2024-05/commercial/cases) and provide the missing fields (name, insured.address) explicitly in the request body — the case-from-documents endpoint does not accept these fields directly.

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/errored",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "commercialCases",
          "attributes": {
            "state": "errored",
            "externalId": "your-reference-id",
            "analysis": {
              "status": "error",
              "errors": [
                {
                  "title": "Case creation failed",
                  "code": "extraction_failed",
                  "detail": "Could not extract insured name and insured address from the submitted documents. Please use the POST /api/2024-05/commercial/cases endpoint and explicitly provide insured name and insured address in the request body."
                }
              ]
            },
            "createdAt": "2024-01-10T16:00:30Z",
            "updatedAt": "2024-01-10T16:05:30Z"
          }
        }
      }
    }

Note: The payload shape for this error scenario is intentionally simpler than a standard cases/errored payload — it contains no name, documents, or insuredCompany fields, since the case was never fully created. The analysis object contains only status and errors; the richer analysis fields present in a standard case payload (riskEvaluation, riskSignalDetections, facts, etc.) are absent. Clients should handle both shapes when processing cases/errored events.

Life & Disability Example Request

Below is an example of a webhook request sent when a life & disability case is updated:

    {
      "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
      "topic": "cases/updated",
      "body": {
        "data": {
          "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "type": "lifeCases",
          "attributes": {
            "name": "Jane Doe",
            "insuranceLine": {
              "id": "1cfd8bdf-5a20-4dfb-aca0-729df7795e14",
              "name": "Life"
            },
            "documentsCount": 123,
            "externalId": "client-custom-identifier",
            "alternateUrl": "https://{tenant}.sixfold.app/life/cases/c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
            "insuredPerson": {
              "name": "Jane Doe",
              "bornOn": "1949-12-31",
              "occupation": "Software Engineer",
              "sex": "female"
            },
            "analysis": {
              "status": "done",
              "errors": [],
              "riskSignalDetections": [
                {
                  "type": "KeywordSignal",
                  "keyword": "Cancer",
                  "explanation": "The fact 'Concerning for malignancy' matches the keyword signal 'Cancer' with a negative impact based on the risk appetite provided.",
                  "impact": "negative",
                  "sources": [
                    {
                      "filename": "medial_report.pdf",
                      "pages": [1,2,3]
                    }
                  ]
                }
              ],
              "riskOverview": "Jane Doe, a 74-year-old female who smokes, has a history of several significant medical conditions and treatments. She has been diagnosed with strep pharyngitis, appendicitis, migraines with aura, atypical chest pain concerning for angina, community-acquired pneumonia,\n",
              "fullHealthSummary": "Jane Doe's medical history is extensive, beginning with diagnoses of strep pharyngitis in 1980 treated with clindamycin due to penicillin allergy, and appendicitis in 1987, both of which were treated accordingly. In 1993, she was diagnosed with migraines with aura and began treatment with metoclopramide and sumatriptan. By 2000, she experienced atypical chest pain, which raised concerns for angina, leading to a cardiology referral and the initiation of ASA. In 2006, she was diagnosed with community-acquired pneumonia and subsequently with chronic myeloid leukemia (CML) in 2013, which is currently in remission with ongoing imatinib treatment. Her history also includes a COPD exacerbation in 2016 treated with albuterol and Advair, and orthostatic hypotension diagnosed in 2018, with a treatment plan including fludrocortisone. Throughout her medical journey, Jennifer has been prescribed various medications, including ASA for atypical chest pain and post-myocardial infarction, atenolol and atorvastatin for coronary artery disease post-myocardial infarction, and imatinib specifically targeting her CML. The presence of atenolol and atorvastatin suggests a focus on heart health and cholesterol, while imatinib specifically targets her CML. Notably, there is an absence of direct treatment for high blood pressure, despite the presence of medications that could indirectly affect it, and no mention of medications for mental health conditions or sleep apnea, which are not listed among her diagnosed conditions.\n",
              "factsCount": 321
            },
            "createdAt": "2024-01-10T16:00:30Z",
            "updatedAt": "2024-01-10T16:00:30Z"
          }
        }
      }
    }

FileNet Integration Example Request

Below is an example of a webhook request sent when a FileNet integration has successfully downloaded the files:

    {
      "id": "94b4fd8d-3500-49a4-a3cb-0e7f59c9b1ac",
      "topic": "integrations/finished",
      "body": {
        "data": {
          "caseId": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "integrationId": "78ea09d0-55f7-407a-9fc9-d625cfd84085",
          "files": [
            {
              "id": "filenet-unique-identifier",
              "category": "Medical Record"
            },
            {
              "id": "filenet-unique-identifier-2"
            }
          ]
        }
      }
    }

Below is an example of a webhook request sent when a FileNet integration failed to download the file:

    {
      "id": "94b4fd8d-3500-49a4-a3cb-0e7f59c9b1ac",
      "topic": "integrations/errored",
      "body": {
        "data": {
          "caseId": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
          "integrationId": "78ea09d0-55f7-407a-9fc9-d625cfd84085",
          "files": [
            {
              "id": "filenet-unique-identifier",
              "category": "Medical Record"
            },
            {
              "id": "filenet-unique-identifier-2"
            }
          ],
          "errors": [
            {
              "status": "500",
              "title": "FileNet server error",
              "detail": "File 'filenet-unique-identifier' failed due to a FileNet server error",
              "meta": {
                "fileId": "filenet-unique-identifier"
              }
            }
          ]
        }
      }
    }

Example Request with Custom Headers

Below is an example of a webhook request that includes a custom Auth-Token header for authentication:


POST /webhooks HTTP/1.1

Host: foo.example

Accept: application/json

Content-Type: application/json

Auth-Token: secret-custom-header


{
  "id": "c4fb4c10-5b2e-4220-90d2-96d94337e8e6",
  "topic": "cases/updated",
  "body": {
    "data": {
      ...
    }
  }
}

Integrations Overview

Introduction

At Sixfold, we streamline customer workflows by supporting integrations that automate the process of pulling in documents from external sources and seamlessly adding them to a case’s knowledge base. This supplements the documents that customers can manually upload, allowing teams to focus on analysis and decision-making while ensuring that all relevant documents are accurately captured and organized within the system. Through our integration options, we enable efficient document management that adapts to your specific needs.

See here for representative example of an integration.

Getting Started

Before leveraging one of the existing integrations, you will need to work with Sixfold's operations team to configure the necessary settings for your tenant. Each integration requires specific configurations and credentials.

For each integration, you will receive a:

  • Integration ID: A unique identifier for your integration, provided by Sixfold.
  • Integration Metadata Schema: An integration-specific data structure that will be used to manage the integration on a per-case basis

Integration ID

The integrationId is a unique identifier for your configured integration, provided to you by Sixfold, that you will use in API calls to manage the integration for a particular case.

Example Integration Id

  • integrationId: "a908bbed-319d-46fa-925d-67298721fa5c"

Example Usage

See the documentation for this API endpoint for example usage.


Integration Metadata Schema

The integration metadata schema is a integration-specific data structure that you leverage when structuring the request bodies for API calls to manage the integration for a particular case.

Example Integration Metadata Schema

The data structure below is an example of the metadata schema for an integration with an external document management system. Here, the files key references an array of ids that represent the id of file/documents in the external system that a customer would want to associate with a particular case.

    {
        "id": "integrationId", // provided by sixfold
        "files": [
            {
                "id": "id-of-file-in-external-system",
            },
        ]
    }

Example Usage

See the documentation for this API endpoint for example usage.


Supported Integrations

Currently, Sixfold supports integrations with the following:

If you'd like to integrate with a third-party service that is not currently in the list above, please reach out to us via email to inquire.

IBM FileNet Content Manager

IBM FileNet Content Manager

This integration allows Sixfold to interact with this external document and content storage service. This integration enables seamless management and attachment of files to cases within Sixfold’s system.

Prerequisites

Before Sixfold can begin adding files to cases using the FileNet integration, Sixfold’s operations team will need to configure the integration within your tenant. The configuration process will require the following information:

  • FileNet Server URL: The URL of the FileNet Content Manager server.
  • FileNet Credentials: The username and password for accessing the FileNet system.
  • Authentication URLs and Credentials: The URL(s) and credentials (if any) needed to receive a token used to authenticate requests to FileNet.

Configuration Process

  1. Contact Sixfold: Reach out to Sixfold’s operations team to begin the setup process.
  2. Provide Credentials: Share the required FileNet server details and Authentication credentials.
  3. Configuration: Sixfold’s team will configure your tenant to use the provided credentials and server information.
  4. Integration ID: Once the setup is complete, Sixfold will provide your development team with an integration ID.

Integration Metadata Schema

The metadata schema for the FileNet integration is as follows:

    {
        "id": "integrationId",
        "files": [
            {
              "id": "id-of-file-in-filenet",
              "category": "Medical Record"
            },
            { "id": "another-id-of-file-in-filenet" }
        ]
    }

Using the Integration

After setting up the FileNet integration, you will need to include the integration ID in all API requests that involve FileNet-related actions, such as creating a case while specifying files to be pulled in from FileNet, or updating a case to specify additional files to be pulled in from FileNet.

Example API Call - Update Case with additional files from FileNet

See example below, or the documentation for this endpoint

PATCH /life/cases/john-doe-case-id/integrations/file-net-integration-id HTTP/1.1
Content-Type: application/json-patch+json

[
  {
    "op": "add",
    "path": "/files/-",
    "value": {
      "id": "id-of-file-in-filenet",
      "category": "Medical Record"
    }
  }
]

Document Classification

Documents can be classified into certain top-level categories.

These document-level metadata can in turn be used to improve case level analysis of the relevant case information found in those documents, as well as give more contextual information to users in the UI.

Sixfold's API allows its consumers to specify the top-level category / classification of a document when they:

  1. Create a case with documents
  2. Add documents to a case
  3. Specify files to add to a case from a third party integration

The sections below detail the supported top-level categories per product line.

Life & Disability

Category Description
Application The main insurance application, capturing personal info, desired coverage, beneficiaries, and declarations around existing insurance.
Part II Any supplemental questionnaires or self-reported medical/lifestyle information (e.g., health history, lifestyle/hobbies, family history, etc.).
Lab Reports from examiners who measure vitals (blood pressure, height, weight), collect fluid samples, and summarize basic health indicators. Includes laboratory test results (blood/urine/saliva), including flagged abnormal values and reference ranges.
EKG Electrocardiogram reports and waveforms showing heart rate, rhythm, and electrical activity; used to assess cardiac function.
RX/DX Report Prescription histories from external databases, detailing medication usage and fill history.
Medical Record Physician summaries, detailed medical records from clinics, hospital discharge summaries, specialist reports, etc. This category should also be used if you have multiple Medical Records of different types contained within a single file.
Financial Pay stubs, tax returns, W-2 forms, profit-and-loss statements, personal or business financial statements, net-worth summaries.
Diagnostic Report Imaging, or reports for any diagnostic procedures or therapies. This category should also be used if you have multiple Diagnostic Reports of different types contained within a single file.
Background Report MIB codes, Motor Vehicle Records, credit checks, or other non-prescription third-party data used to validate applicant information.

Commercial

More information coming soon.