Skip to content

extra.identity_aml

Screening results from the AML provider, present on any flow with a screening step bound to its Decision Flow.

comply_advantage appears twice, nested inside itself. The outer array is one entry per screening pass; the inner is one entry per search within it.

extra.identity_aml
└── comply_advantage[] one screening pass
├── input what was screened
├── result ← AGGREGATE verdict, read this
├── timestamp
├── values_list flags the Decision Flow acts on
└── output
└── comply_advantage[] one search
├── input
├── result ← PER-SEARCH verdict
└── output
├── code provider HTTP status
├── status
└── content.data ← raw provider response
├── hits[]
├── total_hits
├── match_status
└── filters
What you want Path
Verdict across all searches extra.identity_aml.comply_advantage[0].result
Verdict for one search …comply_advantage[0].output.comply_advantage[0].result
Raw provider hits …output.comply_advantage[0].output.content.data.hits
What was screened extra.identity_aml.comply_advantage[0].input

Read the aggregate result. The raw path is seven levels deep and its shape is the provider’s, not ours — treat it as evidence to archive, not as an interface.

FieldTypeNotes
is_any_foundbooleanAny list match at all.
is_all_foundbooleanTrue when every search matched. Equivalent to is_any_found on a single-applicant flow.
is_any_in_sanctionsbooleanMatched a sanctions list.
is_all_in_sanctionsbooleanTrue when every search matched a sanctions list.
is_any_in_pepbooleanMatched a politically-exposed-person list.
is_all_in_pepbooleanTrue when every search matched a PEP list.
is_any_in_warningsbooleanMatched a regulator or law-enforcement warning list.
is_all_in_warningsbooleanTrue when every search matched a warning list.
is_any_in_adverse_mediabooleanMatched adverse media.
is_all_in_adverse_mediabooleanTrue when every search matched adverse media.
is_any_in_fitness_probitybooleanMatched a fitness-and-probity list.
is_all_in_fitness_probitybooleanTrue when every search matched a fitness-and-probity register.

Five signals, each as an is_any_* and an is_all_* twin. For a single-applicant flow the two are equivalent — use is_any_*.

a match on sanctions and PEP
{
"is_all_found": true,
"is_any_found": true,
"is_all_in_pep": true,
"is_any_in_pep": true,
"is_all_in_warnings": false,
"is_any_in_warnings": false,
"is_all_in_sanctions": true,
"is_any_in_sanctions": true,
"is_all_in_adverse_media": false,
"is_any_in_adverse_media": false,
"is_all_in_fitness_probity": false,
"is_any_in_fitness_probity": false
}
no match
{
"is_all_found": false,
"is_any_found": false,
"is_all_in_pep": false,
"is_any_in_pep": false,
"is_all_in_warnings": false,
"is_any_in_warnings": false,
"is_all_in_sanctions": false,
"is_any_in_sanctions": false,
"is_all_in_adverse_media": false,
"is_any_in_adverse_media": false,
"is_all_in_fitness_probity": false,
"is_any_in_fitness_probity": false
}
Flag Matched against
is_any_in_sanctions Sanctions lists — UN, OFAC, HM Treasury, EU and national equivalents
is_any_in_pep Politically exposed persons
is_any_in_warnings Regulator and law-enforcement warning lists
is_any_in_adverse_media Adverse media
is_any_in_fitness_probity Fitness-and-probity registers
is_any_found Any of the above

The mapping to your own decision is a policy matter, not an API one. UpPass reports; you decide.

FieldTypeNotes
first_namestringGiven name that was screened, taken from answers.full_name_first_name — the applicant-editable field, not the read-only OCR field.
last_namestringFamily name that was screened, taken from answers.full_name_last_name.
date_of_birthstringdateOnly the year is used as a search filter.
{
"last_name": "Example",
"first_name": "Anucha",
"date_of_birth": "1970-01-01"
}
FieldTypeNotes
is_foundbooleanAny list match at all for this search.
total_hitsintegerNumber of matching records.
is_in_sanctionsbooleanMatched a sanctions list — UN, OFAC, HM Treasury, EU or a national equivalent.
is_in_pepbooleanMatched a politically-exposed-person list.
is_in_warningsbooleanMatched a regulator or law-enforcement warning list.
is_in_adverse_mediabooleanMatched an adverse-media record.
is_in_fitness_probitybooleanMatched a fitness-and-probity register.

Same signals without the any/all distinction, plus total_hits.

FieldTypeNotes
fuzzinessnumberProvider fuzzy-matching tolerance, 0–1. 0 means exact matching only — a different transliteration of the same name will not match.
exact_matchbooleanWhether every query term had to match exactly.
birth_yearintegerYear extracted from the applicant's date of birth. Only the year is filtered on, so a same-name match in the same year surfaces even when day and month differ.
typesarray<string>List categories searched. Empty means all categories.
country_codesarray<string>Country filter applied. Empty means no country restriction.
remove_deceasedinteger1 excludes records marked deceased; 0 keeps them.
{
"types": [],
"fuzziness": 0,
"birth_year": 1970,
"exact_match": true,
"country_codes": [],
"remove_deceased": 0
}
FieldTypeNotes
idintegerProvider search ID.
refstringProvider search reference.
search_termstringThe name string the provider searched, as normalised by the provider.
submitted_termstringThe name string as submitted, before provider normalisation.
match_statusstring

no_matchpotential_matchfalse_positivetrue_positiveunknown

Provider triage state.
risk_levelstringProvider risk banding. unknown on an automated search that no one has adjudicated — do not treat it as a risk assessment.
total_hitsintegerNumber of matching records in hits, before any adjudication.
total_matchesintegerNumber of records the provider counts as matches. Equals total_hits on a fresh search.
total_blacklist_hitsintegerMatches against your own uploaded blacklist, if the workspace maintains one.
filtersobjectSearch parameters actually used. fuzziness: 0 with exact_match: true means no fuzzy matching, and only the birth year is filtered on.
hitsarray<AmlHit>Matching records. Empty when match_status is no_match.
blacklist_hitsarray<object>Matches against your own uploaded blacklist.
tagsarray<object>Provider-side tags applied to this search.
labelsarray<string>Provider-side labels applied to this search.
limitintegerProvider result cap for this search.
offsetintegerPagination offset used for this search.
client_refstringnullableProvider-side client reference. Not populated by UpPass.
assignee_idintegerProvider account identifiers. Internal to the screening provider.
searcher_idintegerProvider account that ran the search. Internal to the screening provider.
created_atstringProvider timestamp. Space-separated, not ISO-8601.
updated_atstringWhen the provider last updated this search record. Space-separated, not ISO-8601.

match_status is the provider’s triage state:

Value Meaning
no_match Nothing found
potential_match Found, not yet adjudicated
false_positive Adjudicated as not the applicant
true_positive Adjudicated as the applicant
unknown Not set

A fresh automated search returns no_match or potential_match. The adjudicated values appear after a human review in the Portal.

FieldTypeNotes
scorenumberfloatProvider match score. Higher is a stronger match.
match_typesarray<string>Why this record matched.
match_types_detailsarray<object>Per-source breakdown of which query terms matched.
docobjectThe matched record.
idstringProvider's stable identifier for this record. Use it to deduplicate across searches.
namestringPrimary name on the matched record.
entity_typestring

personorganisation

Whether the record describes an individual or an organisation.
typesarray<string>Categories this record belongs to — for example sanction, pep, pep-class-1, warning, fitness-probity, or one of the adverse-media-* families.
sourcesarray<string>Source lists carrying this record.
akaarray<object>Known aliases. Can run to several hundred entries.
fieldsarray<object>Attributes per source — nationality, date of birth, passport numbers, addresses, designation acts, programme names.
mediaarray<object>Adverse-media articles. Present on adverse-media matches only.
associatesarray<object>Related entities named by the source lists.
keywordsarray<string>Provider-assigned keywords for the record.
assetsarray<object>Provider-hosted documents and images for this record.
source_notesobjectProvenance for each entry in sources.
created_utcstringdate-timeWhen the provider first created this record.
last_updated_utcstringdate-timeWhen the provider last updated the record. Useful for judging how current a match is.
hits[0] — fictional record
{
"doc": {
"id": "EXAMPLEDOCID000",
"name": "Anucha Example",
"entity_type": "person",
"types": [
"sanction"
],
"aka": [
{
"name": "A. Example"
},
{
"name": "Anucha Exampl"
},
{
"name": "__TRIMMED__ a real record can carry several hundred aliases"
}
],
"fields": [
{
"name": "Nationality",
"value": "Exampleland",
"source": "un-consolidated"
},
{
"tag": "date_of_birth",
"name": "Date of Birth",
"value": "1970-01-01",
"source": "un-consolidated"
},
{
"tag": "passport",
"name": "Passport",
"value": "Passport: X0000000 Exampleland",
"source": "un-consolidated"
},
{
"name": "Program",
"value": "Example sanctions programme",
"source": "un-consolidated"
},
{
"name": "Un Listing Id",
"value": "EXi.000",
"source": "un-consolidated"
},
{
"name": "__TRIMMED__",
"value": "a real record carries ~120 field entries across a dozen sources"
}
],
"sources": [
"un-consolidated",
"hm-treasury-list",
"dfat-australia-list",
"swiss-seco-list",
"__TRIMMED__ source list truncated"
],
"source_notes": {
"un-consolidated": {
"url": "https://scsanctions.un.org/consolidated/",
"name": "United Nations Consolidated",
"aml_types": [
"sanction"
],
"country_codes": [
"XX"
],
"listing_started_utc": "2001-01-01T00:00:00Z"
}
},
"associates": [],
"keywords": [],
"media": [],
"created_utc": "2020-01-01T00:00:00Z",
"last_updated_utc": "2026-01-01T00:00:00Z"
},
"score": 1.9,
"match_types": [
"aka_exact",
"year_of_birth"
],
"match_types_details": [
{
"sources": [
"United Nations Consolidated"
],
"aml_types": [
"sanction"
],
"matching_name": "Anucha Example",
"name_matches": [
{
"query_term": "anucha",
"match_types": [
"exact_match"
]
},
{
"query_term": "example",
"match_types": [
"exact_match"
]
}
],
"secondary_matches": [
{
"query_term": "1970",
"match_types": [
"exact_birth_year_match"
]
}
]
}
]
}

doc.types is the categorisation to branch on — sanction, pep, pep-class-1, warning, fitness-probity, or one of the adverse-media-* families. doc.sources names the lists carrying the record, using the provider’s stable identifiers (un-consolidated, hm-treasury-list, and so on).

extra.identity_aml is present only when a Decision Flow with a screening step ran. It is omitted — not empty — on flows without one, and on applications that were never submitted.

Guard every access:

extra?.identity_aml?.comply_advantage?.[0]?.result?.is_any_in_sanctions

An absent object means screening did not run, which is not the same as a clean result. Treat it as a review signal rather than a pass.