Endpoint
Request
Path parameters
Response structure
The response fields fall into two groups.Top-level fields
confidence Analysis Score
The score shown at the top of the analysis detail screen in the dashboard.
confidence.components
null, the weights of the remaining parts are normalized. When all three are null, score and level are null too.
details score deductions
Lists each item that lowered the confidence score. Empty array when nothing was deducted.
reasonCode is an extensible enum. For the current values and how to read them, see reading analysis results.
riskAssessment
How riskScore is calculated
It is computed from the per-action verdicts alone. Document content and extraction results play no part.The base is 25, so
riskScore can never fall below 25. When every action passes, it is exactly 25 (low). The 0–25 range in the table above is the level boundary; a value of 0–24 does not occur in practice.riskFactors carries one {actionName} verification failed line per failed action, plus a single {count} action(s) need manual review line when any action needs review.
systemMetadata
systemMetadata.outputFormatting
Branch on this
status before you read extractedData. How to branch is covered in reading analysis results.systemMetadata.workflowHistory
Holds only the work that actually ran. The full step definitions are in workflowActions from GET /workflows/:workflowId.
systemMetadata.tokenUsage
tokenUsagePerWorkId uses work IDs as keys and the structure above as values.
rawActionResults
The raw, pre-assembly results the actions returned. Keys are action names, and which actions exist follows the workflow’s workflowActions definition.
rawActionResults mcpResults
The same calls as agentAuditLog.steps[].mcpcalls[], organized by action. It uses camelCase, like the top level.
agentAuditLog
An object with two keys, steps and summary.
agentAuditLog.steps
agentAuditLog.steps mcpcalls
agentAuditLog.summary
findings
result is agentAuditLog.steps[].status mapped for the UI (needs_review becomes warning).
recommendations
targetItems
artifacts generated files
The files engines produced during the analysis. The Generated Files area on the dashboard’s Info tab renders this array. Today the AML engines (AML Search - Person · AML - Business) produce one evidence PDF per match. A screening with no matches produces no file, so the array is empty.
The one-line description on the dashboard (
subject · threshold · date-of-birth basis · screening result · match count) is built from these fields. A field that is absent drops its fragment.
Retrieving evidence PDFs does not change credits: it is still one screening call, regardless of the number of files — How credits are charged.
verdict screening result
Set by the risk level of the matched party. Files from the same screening can differ from one party to the next.
Analyses run before 2026-10-22 18:12 (KST) did not store a risk level per match, so every file from one screening carries the same value, based on that screening’s highest risk level.
matchCount is returned after the date-of-birth exclusion for older analyses too.
dobMatching values
The date-of-birth matching value from the options fixed on the step. AML Search - Person only.
With any value other than
off, matches that carry no date of birth are removed from the result and the number removed is kept in dobExcluded. off does not use the date of birth at all, so dobExcluded is absent.
artifactOmissions
One screening produces files for the top 50 matches by score at most. Each screening with more than 50 matches adds one element, which the dashboard’s cap banner renders.
artifactFailures
Each screening with files that were within the cap but could not be retrieved adds one element. On a temporary error the server retries up to 3 times, within 4 minutes per screening, and records what it still could not retrieve here. Files that were not retrieved have no row in artifacts[]; running the analysis again retrieves them anew.
Downloading a generated file
CallGET on downloadUrl with only the host in front of it. downloadUrl already starts with /v1, so prefixing the Base URL (…/v1) would put /v1 in twice. The numbers in the path are internal coordinates: use the value from the response instead of building the path yourself.
Example
One person screened with threshold 90 and date of birth within 2 years. After removing 9 matches with no date of birth, 62 matches remained; 1 file within the 50-match cap could not be retrieved.artifacts shows 2 of the 49 files retrieved.
Example response
A real response is much longer. The example below carries every top-level key but shows only one representative entry for each array and nested object.Enum summary
- status
- verificationStatus
- Step result
- findings result
- riskLevel
- outputFormatting.status
- artifacts verdict
- reasonCode
- snapshotStatus
Error codes
Common errors (400 validation · 401 authentication · 403 permission · 500 server) are listed in the API overview.