ScreeningSubjectInput
referenceYour own reference for the subject, echoed nowhere but carried through the assessment for audit.
dateOfBirthThe subject's date of birth. A year alone (1975) is enough — every comparison is made on the birth year, with a two-year tolerance, so day and month differences never eliminate a result on their own. This is the single most useful attribute to supply: it is the only evidence that can eliminate a sanctions listing.
genderThe subject's gender. Corroborating evidence only — never eliminates a result by itself, since given names are frequently unisex across cultures.
nationalitiesThe subject's nationalities and citizenships as ISO 3166-1 alpha-2 codes. Second only to date of birth in eliminating power: a listing whose own nationality sits in an unrelated region with no migration or diaspora link is a different person, and that alone is enough to rule it out. Send every nationality you hold — one shared country anywhere across the two records defeats the contradiction, so an incomplete list risks eliminating a true match. Matched against the listing's nationality and citizenship, never against the jurisdiction that designated it.
countryOfResidenceThe subject's country of residence, ISO 3166-1 alpha-2. Deliberately weaker than nationalities — expatriate work and cross-border residence are ordinary, so where someone lives never eliminates a result on its own. Supply it as corroboration, not as a substitute for nationality.
placeOfBirthThe subject's place of birth.
evidencedAliveOnA date on which the subject is evidenced to have been alive — an identity document issue date, say. Supply it to eliminate results recorded as deceased before then; without it, no such date is assumed.
SanctionSearchInput
fullNameFull name of the subject to search for. Optional: a search needs either a name or idNumbers, so an identification number alone is a complete query.
nameSearchQueryA pre-analysed name breakdown from breakdownNameQuery. Only used by fuzzy mode; token mode reads fullName (falling back to this query name).
searchModeName matching strategy. Defaults to "token". Pass "fuzzy" to use the legacy phrase-variation search.
entityTypeThe kind of subject to search. Defaults to "individual". Individuals are matched part-by-part against a name-variation dictionary. Entities (organizations, vessels and aircraft) have no such structure, so they are matched on their identity-bearing words instead: incorporation suffixes (Ltd, LLC, PJSC, Company) and word order are ignored, every remaining word must appear in the listed name or an alias, and relevance orders what survives. A listing carrying extra words is ranked down rather than excluded. See includeFuzzy to allow near-spellings.
includeFuzzyEntity searches only. Whether near-spellings are allowed, word by word. Defaults to true — pass false to demand letter-perfect words. On by default because the differences it covers are the norm in this corpus, not the exception: sanctions lists are published by British and American authorities and transliterated consistently by neither, so Academy of National Defense Science and ...Defence Science are one organization and a strict search finds whichever spelling it was typed with. Words of five characters or more tolerate two edits; nothing shorter moves at all, so Iran never becomes Iraq and a vessel 3 never becomes a 4. The first letter must always match. Ignored for individual searches, whose spelling variants are resolved by the name-part dictionary instead.
sourcesFilter by specific sanctions sources. If omitted, all sources are searched.
countriesFilter by ISO 3166-1 alpha-2 country codes to narrow results to specific jurisdictions
idNumbersIdentification document numbers (NIC, passport, etc.) to match against any ID on a record. Matches any record whose stored ID contains at least one of the provided values. Non-alphanumeric characters are stripped and matching is case-insensitive and substring-based, so values are matched even when embedded in surrounding text. Usable without a name: passed alone, the search returns every record carrying one of these numbers, each with nameMatch.matchType: "id".
minConfidenceDrop results whose nameMatch.matchConfidence is below this, 0.0-1.0. Defaults to 0 — no filtering. This confidence is name-only, so a floor applied here runs before the corroborating evidence a screening caller holds: a strong partial match can score 0.44 on the name alone and clear 0.6 once a matching date of birth is folded in, but only if the search still returned it. Apply the floor after corroboration instead, or pass a value here when you want the search to do it. Results with no confidence (id hits) are never dropped — a filter on a score they do not have would silently hide them.
What you know about the person you are screening, beyond their name. Supplying it runs a second, attribute-based pass over every result and annotates each with a disambiguation verdict built from date of birth, geography and entity kind. A date of birth is by far the most useful field to send. Every result, not only the weak ones: two people who share a name share it exactly, so a perfect name match is where a contradicting date of birth is most decisive. Nothing is filtered out on the verdict and no result is ever removed from the response because of it; filter on disambiguation.decision === "discard" yourself, so the reasoning behind every elimination stays in your audit trail. Individual searches only.
DossierSearchInput
fullNameFull name of the individual to search for
noCacheWhen true, bypasses cached results and runs a fresh search against all data sources. Default: false.
onlyShowHighRiskProfilesWhen true, only returns profiles flagged as high-risk (PEPs, sanctioned individuals, adverse media matches). Set to false to include all matching profiles. Default: true.
searchModeName matching strategy. "token" (default) matches culturally-aware name-part tokens for precise results; "fuzzy" restores the legacy similarity search.
minConfidenceDrop results whose nameMatch.matchConfidence is below this, 0.0-1.0. Defaults to 0 — no filtering. This confidence is name-only, so a floor applied here runs before the corroborating evidence a screening caller holds: a strong partial match can score 0.44 on the name alone and clear 0.6 once a matching date of birth is folded in, but only if the search still returned it. Apply the floor after corroboration instead, or pass a value here when you want the search to do it. Results with no confidence (id hits) are never dropped — a filter on a score they do not have would silently hide them.
What you know about the person you are screening, beyond their name. Supplying it runs a second, attribute-based pass over every result and annotates each with a disambiguation verdict. Alongside date of birth and geography, a high-risk profile's dated positions are read as a role timeline: an office held in 1975 implies a birth year that a customer born in 1990 cannot have. Every result, not only the weak ones: two people who share a name share it exactly, so a perfect name match is where a contradicting date of birth is most decisive. Nothing is filtered out on the verdict and no result is ever removed from the response because of it; filter on disambiguation.decision === "discard" yourself, so the reasoning behind every elimination stays in your audit trail.
PersonIdentificationDocument
typeDocument type (e.g. "passport", "national_id")
numberDocument number or identifier
descriptionAdditional details about the document
referenceDocumentIdsIDs of source documents referencing this identification
AssociatesAndRelatives
nameFull name of the associate or relative
relationshipRelationship to the dossier subject (e.g. "spouse", "business partner", "sibling")
descriptionBrief description of the association
referenceDocumentIdsIDs of source documents supporting this association
PositionsHeld
positionTitle or role held (e.g. "Minister of Finance")
organizationOrganization or body where the position was held
periodTime period of the position (e.g. "2015–2020")
descriptionDescription of the role and responsibilities
asOfDateDate this information was current as of
referenceDocumentIdsIDs of source documents supporting this position
supportingTextExcerpt from source material
Document
idoriginalUrltitlebodyPEPScorecard
pepLikelihoodScorePEP likelihood score from 0.0 (unlikely) to 1.0 (certain)
categoryPEP category (e.g. "Head of State", "Senior Government Official", "State-Owned Enterprise Executive")
reasoningStepsStep-by-step reasoning explaining how the PEP score was derived
RiskScorecard
overallRiskScoreOverall risk score from 0.0 (low risk) to 1.0 (high risk)
riskReasoningNarrative explanation of the risk assessment
riskCategoryRisk category classification (e.g. "high", "medium", "low")
PEP-specific scoring breakdown (present when PEP indicators are found)
NameTokenMatch
queryTokenThe queried name part. Absent on a ruled_out candidate leftover the query never contained.
candidateTokenThe stored name part this query token paired with, or the leftover candidate part when status is ruled_out. Absent when the query part did not match.
statusfull (same name-part group), partial (initial ↔ spelled-out), unmatched (query part with no counterpart), ruled_out (candidate part the query cannot account for).
NameMatchAnalytics
matchTypeHow the result was reached, strongest first. Sanctions search returns id (an identification number matched), exact (the name equalled the listed name or an alias), full (every queried name part was accounted for), partial (only some were) or text (keyword match only). High-risk search returns exact, full or partial. Absent for fuzzy searches, which have no notion of match type.
matchScoreHow well the names matched, 0.0–1.0: the share of the queried name that was accounted for. Each part starts at an equal 1/n, then moves with the listed part's popularity and name-part type — a rare surname takes more than 1/n, a common given name or a particle takes less — and is credited in full, by initial (half), or not at all. Every queried part spelled out scores 1.0; the same name in abbreviated form scores lower. An extra rare leftover listed part is discounted further than an extra common patronymic — searching "Abram Goldman" scores the listed "Abram Borisovich Goldman" at 0.77 rather than 1.0. Always 1.0 for id and exact.
matchedNameThe stored name the match was licensed by — the primary name, or the alias that matched. Records are frequently matched on an alias, so comparing this against the result name shows why it was returned.
nameUniquenessHow distinctive the MATCHED name is, 0.0–1.0, from the popularity of each of its name parts. Low means a common name, where even an exact match is weak evidence of identity ("John Smith" ≈ 0.21); high means a distinctive one, where the same match is strong. Read it alongside matchScore, which says how well the names matched but not how much that matching is worth. Scored per result from matchedName, so it varies across a single search — a listing carrying a patronymic or a rarer surname scores above a bare one. Falls back to the searched name only for exact (the two names are equal) and text (no token analysis). Absent for id hits. Individuals only — organizations, vessels and aircraft have no person-name statistics behind them.
nameUniquenessBandThe nameUniqueness score as a band, calibrated against the sanctions corpus so it can be acted on without knowing the scale: very_common (bottom ~10% — the names false positives cluster on), common (~36%), uncommon (~37%), distinctive (top ~17%). Present whenever nameUniqueness is.
matchConfidenceHow likely this result is the person searched for, 0.0–1.0 — matchScore and nameUniqueness combined into one rankable number. How the names matched dominates: every exact hit scores at least 0.75 however common the name, because an exact match on a common name is still an exact match. Within that, distinctiveness decides position, measured as the matched name's percentile against the sanctions corpus rather than its raw uniqueness (which saturates and never spans 0–1). Roughly: exact on a very common name ≈ 0.75, exact on a distinctive one ≈ 1.0, a partial match on a common name ≈ 0.39. Name-derived only — raise it against any corroborating date of birth, document number or country you hold, which the search never saw. Absent for id hits, which are not name matches. Filter on it with minConfidence.
How each name part compared, including candidate leftovers. A part that appears on the listed name and not in the query is ruled_out: the result is kept so that leftover is visible. Absent for id and text hits. An exact hit has analysis only when a longer recorded name carries leftovers.
tagsLabels for match situations that matchType does not capture. unaccounted_listed_parts means a listed name part is absent from the query — including when the hit was licensed by a shorter alias of a longer recorded name. The result is returned so the leftover is visible.
DisambiguationEvidenceModel
subjectDateOfBirthThe date of birth supplied on the screened subject.
candidateDatesOfBirthEvery date of birth recorded on this result.
estimatedBirthYearRangeBirth-year window inferred from the result's dated roles where it carries no date of birth, as { from, to }. Present only when the age rule was reached.
birthYearBasisWhich dated role or event the inferred birth-year window was derived from.
subjectCountriesCountries read off the screened subject — nationality, place of birth and residence.
candidateCountriesCountries recorded on this result.
supportingSignalsCorroborating signals that pointed the same way as the primary contradiction.
externalKnowledgeUsedWhether the verdict leaned on public knowledge about a named individual rather than on the supplied records. Confidence is capped at medium when it did.
MatchDisambiguation
decisiondiscard where attribute evidence positively contradicts identity, retain otherwise. Retain is the default: absence of confirming evidence is not contradiction, so a sparse record is always retained. Results are never dropped from the response on this verdict — filter on it yourself, so the reasoning for every elimination stays in your audit trail.
dispositionHintHow to queue the result. false_positive and possible_match are confident calls; likely_false_positive marks one the evidence points at but which did not clear the discard confidence floor, so it can be deprioritised without leaving the queue; needs_review means nothing decisive was found.
confidenceConfidence in the verdict. A discard is only ever emitted at high; anything weaker is returned as a retain carrying likely_false_positive.
contradictionStrengthhard for a date-of-birth contradiction, an entity-type mismatch, an inferred-age window missed by more than the margin, or a nationality conflict; soft for jurisdiction or residence geography, gender, and a near-miss age window; none where nothing contradicted. A result on a sanctions or asset-freeze list is never discarded on soft evidence alone.
reasonCodesThe rules that fired, from a closed vocabulary: DOB_CONTRADICTION, DOB_WITHIN_TOLERANCE, DATA_ARTIFACT_SUSPECTED, PLACEHOLDER_DOB_UNRELIABLE, MULTIPLE_CANDIDATE_DOBS_PARTIALLY_CONSISTENT, AGE_IMPLAUSIBLE_FOR_ROLE_TIMELINE, DECEASED_BEFORE_CUSTOMER_ACTIVITY, ENTITY_TYPE_MISMATCH, GEOGRAPHY_INCONSISTENT_CORROBORATED, NATIONALITY_CONFLICT, GENDER_MISMATCH_CORROBORATED, INSUFFICIENT_DATA_TO_ELIMINATE, SANCTIONS_CONSERVATIVE_RETENTION, NO_CONTRADICTION_FOUND.
rationaleOne to three sentences naming the specific field values that were compared.
The field values the verdict was reached on.
unresolvedGapsWhat the assessment could not settle — the attributes that, if supplied, would have let it decide.
IndividualDossier
idUnique identifier for this individual
fullNameFull name of the individual
countriesCountries associated with this individual
otherNamesKnown aliases and alternative names
Identification documents linked to this individual
Known close associates and family members
dateOfBirthKnown dates of birth (multiple entries when sources disagree)
taglineOne-line summary describing the individual
locationsKnown locations and addresses
keywordsClassification keywords (e.g. "pep", "sanctions", "adverse-media")
Political and professional positions held
individualSummaryAI-generated narrative summary of the individual and their risk profile
createdAtTimestamp when this dossier was created
documentIdsIDs of supporting source documents
Full source documents used to compile this dossier
AI-generated risk scorecard including PEP analysis and overall risk assessment
cachedResultWhether this result was served from cache
How this dossier was matched against the searched name. Fuzzy searches report only a score.
Why this profile is, or is not, a false positive, decided from date of birth, role timeline, geography and entity kind rather than from the name. Present on every result where the search was given a subject carrying at least one comparable attribute (a date of birth, nationality, country or place of birth) — a profile without it was never assessed, which is not the same as retain.
matchScoreDeprecated — use nameMatch.matchScore. How closely this dossier's names match the searched name (0-1).
matchTypeDeprecated — use nameMatch.matchType. Token-search verdict: "exact", "full" or "partial". Absent for fuzzy searches.
DeleteScreeningAlertResponseDto
alertIdThe id of the deleted alert.
deletedAlways true. The call is only successful once the alert and everything raised with it are gone.
IdentificationDocumentInput
typeDocument type (e.g. "passport", "national_id", "drivers_license")
numberDocument number or identifier
countryISO 3166-1 alpha-2 country code of the issuing country
CreateScreeningRequestDto
fullNameFull name of the individual to screen
externalIdYour own reference ID for this screening request (e.g. customer ID, case number). Useful for correlating results with your internal systems.
Identification document details to improve match accuracy. When provided, the screening engine uses these details to reduce false positives.
dateOfBirthDate of birth in YYYY-MM-DD format
countryISO 3166-1 alpha-2 country code of the individual's nationality or residence
CreateScreeningRequestResponseDto
requestIdUnique ID of the created screening request. Use this to track the request status and retrieve results.
KycCustomerDTO
externalIdExternal reference ID from your system.
nameCustomer display name.
emailCustomer email address.
CreateKycSessionDTO
Customer identity fields. When email and name are provided, an invitation email with the session link is sent automatically.
expiresInMsSession expiry duration in milliseconds. Defaults to 1 hour (3,600,000 ms).
workflowIdOptional Workflow ID to use for this session. If not provided, the organization default is used.
flowConfigExplicit FlowConfig defining the steps the customer will go through. If omitted, the config is derived from the workflow or the system default is used.
claimsIntegrator-asserted claim values for the workflow's session-sourced claims, keyed by canonical claim field (e.g. { dateOfBirth: '1990-01-15' }). Unknown fields and missing required claims are rejected.
ephemeralWhen true, the session is fully purged after the final verdict — customer media, pipeline artifacts, check data and the session itself are deleted from Dossiers, leaving only a PII-free tombstone with deletion counts. A kycSessions.session.purged webhook confirms it. Fetch any evidence you need to retain during the grace window.
purgeAfterMsEphemeral sessions only: grace period in milliseconds between the final verdict and the purge, during which media and results remain fetchable. Defaults to 24 hours (86,400,000 ms). Use 0 to purge immediately.
KycSessionUserProgressDTO
checkpointCurrent session checkpoint.
Embedded attempt records for this session.
KycSessionSuspiciousDTO
isSuspiciousWhether the session has been flagged as suspicious.
reasonReason the session was flagged, if applicable.
KycResultMediaDTO
labelDisplay label for this media item.
keyObject-storage key for the media file.
mediaTypeMedia type, e.g. document-front, liveness-video, signature.
typeRendering hint: 'image' or 'video'.
urlShort-lived signed URL for viewing the media.
metadataClient-captured capture-quality metadata (liveness only).
KycStepSubmissionDTO
statusSubmission processing status.
startedAtTimestamp the submission started (Unix ms).
Media captured for this submission, with signed viewing URLs.
sessionIdSession this submission belongs to. Stamped at mapper read-time, not persisted.
attemptIdSession attempt this submission was made under.
submissionIdStep-scoped retry identity, set by the client once sent.
inputResolved input for this submission (user + system + mapped values). Shape varies by step type.
outputCanonical output (form data, verification result, etc.). Shape varies by step type.
processorInstanceIdDocument-processor instance backing this submission, if async.
errorError message if the submission failed, null otherwise.
completedAtTimestamp the submission completed (Unix ms). Null while in progress.
KycSessionResultStepDTO
stepIdWorkflow step ID.
typeStep type.
statusOverall step status (reflects the latest submission).
Full ordered submission history for this step.
The latest submission, for quick reads.
KycSessionResultDTO
Every workflow step with its full submission history.
rollupBest (latest completed) submission per step, keyed by stepId.
KycReasonCodeDTO
categoryNormalized category — switch on this.
rawLabelOriginal machine code or rule id. Stable; audit-safe.
retryableWhether a customer retry can plausibly clear this reason.
descriptionCustomer-safe explanation.
KycScoreDTO
decisionCategorical verdict.
normalized0–100. Omitted for face distance.
rawProvider-native value: rule confidence 0–1, or face DISTANCE (lower = better).
scalethresholdFace match only: decision threshold on the same scale as raw.
KycVerificationDecisionDTO
outcomeDeduplicated blocking failures across all checks.
retryableTrue while the session is active and the failing step has attempts remaining.
reviewerCommentAdmin decision message intended for the applicant.
internalCommentAdmin-internal note. Never shown to the applicant by Dossiers surfaces.
Reserved in 1.0.
riskRatingReserved in 1.0.
KycVerificationNameDTO
fullName in original script, when the document carries one.
fullLatinLatin/English transliteration.
firstReserved — no name splitting in 1.0.
lastReserved — no name splitting in 1.0.
firstLatinReserved — no name splitting in 1.0.
lastLatinReserved — no name splitting in 1.0.
KycNationalIdentifierDTO
typevaluecountryISO 3166-1 alpha-2.
rawTypeSource schema field name.
KycVerificationAddressDTO
formattedLatin transliteration of the full extracted address.
countryISO 3166-1 alpha-2. Reserved in 1.0.
rawCountryVerbatim country value. Reserved in 1.0.
line1Reserved in 1.0.
cityReserved in 1.0.
postalCodeReserved in 1.0.
sourceKycPersonDTO
dateOfBirthYYYY-MM-DD.
genderNormalized gender; U = present but unparseable.
placeOfBirthLatin transliteration.
nationalityISO 3166-1 alpha-2, when convertible.
KycDocumentImageDTO
classifierurlShort-lived /media/:token URL. Fetch promptly.
fileIdStable storage key (matches result.media[].key).
expiresAtReserved in 1.0.
KycVerificationDocumentDTO
typeNormalized type — switch on this.
categorystepIdThe workflow step that produced this document.
subTypeVariant discriminator, e.g. 'OLD' | 'NEW'.
rawTypeVerbatim internal document type id. Stable; audit-safe.
numberPrimary document number.
personalNumberSecondary personal number, e.g. NIC number on a passport.
issuingCountryISO 3166-1 alpha-2.
rawIssuingCountryVerbatim extracted value (alpha-3).
issuingAuthorityLatin transliteration.
issueDateYYYY-MM-DD.
expiryDateYYYY-MM-DD.
As printed on this document.
dateOfBirthOnDocumentAs printed on this document.
sexOnDocumentRaw extracted value: 'm' | 'f' | 'o'.
nationalityOnDocumentplaceOfBirthOnDocumentextractedFieldsEvery template field, keyed by field name: { value, confidence, originalText, originalLanguage, isHandwritten, source }.
classificationFrom visual-match + tampering checks.
mrzReserved in 1.0.
nfcReserved in 1.0.
KycFaceMatchDTO
raw is a DISTANCE — lower is better; compare against threshold.
modelFace model identifier.
Portrait crop from the document.
Liveness best frame.
KycLivenessColorFlashSlotDTO
expectedColour flashed.
observedColour the face reflected; '-' when unmeasurable.
okKycLivenessColorFlashDTO
verdictMatch verdict. 'warning': ambient light too strong for the screen to register — non-blocking. 'void': the capture could not be judged (e.g. the browser throttled the flashes).
matchFractionFraction of flashed colours the face visibly reflected, 0–1.
responseAmplitudeHow strongly the face reflected the screen at all.
ambientLumaAmbient light on the face before the flashes, 0–255 luma.
environment'bright' when ambient light swamped the screen.
reasonMachine reason for a non-pass verdict, e.g. 'SEQUENCE_MISMATCH'.
KycLivenessDTO
decisionmethod'COLOR_FLASH' when the capture answered a server-issued colour nonce; see colorFlash.
KycBiometricsDTO
1:1 match — document portrait vs. liveness best frame.
duplicateMatchesReserved in 1.0.
KycCheckDTO
categorynameRaw rule id. Stable.
decisionstepIdThe workflow step that produced this check.
KycNarrativeSummaryDTO
summaryTwo to four sentences over the evidence and the verdicts.
highlightsSpecific points worth a reviewer's attention. Absent when the case is unremarkable.
modelModel that wrote this summary.
promptVersionPrompt revision. Changing it re-generates every summary.
KycCheckRunRefDTO
versionMonotonic per session. A higher version supersedes every lower one.
statuscompletedAtISO 8601.
KycVerificationDTO
schemaVersionContract version of this object ('1.0').
providerproviderRefThe KYC session id.
subjectTypeAlways 'INDIVIDUAL' in 1.0.
outcomeNormalized lifecycle outcome. See docs/kyc-verification-output-spec.md §4.1.
createdAtISO 8601.
Reserved — always [] in 1.0 (AML screening is not session-wired).
Every executed rule, deduped.
externalIdIntegrator reference: customer.externalId from session creation.
completedAtISO 8601.
expiresAtISO 8601.
Present when an identity step completed.
businessReserved — KYB is not a session subject type in 1.0.
Present when the workflow has a liveness step.
supplementaryReserved in 1.0.
provenanceClaimed-vs-extracted reconciliation, keyed by field: { claimed, extracted, match: MATCH|MISMATCH|PARTIAL|NOT_COMPARED, confidence }.
Reviewer-facing prose over the evidence. Advisory — it describes the decision and never contributes to it.
Which evaluation produced the relational verdicts. Absent while the first run is still pending — see kycSessions.session.checksCompleted.
rawNot populated by Dossiers Cloud — the sibling result field is the verbatim payload.
KycSessionReminderRuleStateDTO
ruleIdThe reminder rule this state belongs to.
sentCountReminders sent so far in the current idle cycle.
pausedManual per-rule override — true silences this rule regardless of its own schedule.
lastSentAtTimestamp of the last reminder sent for this rule (Unix ms). Null if none sent yet.
activityAnchorAtThe session's lastActivityAt as of this rule's last send. Lets a caller detect whether the idle cycle has since reset (compare against the session's current lastActivityAt) — used to estimate when the next reminder is due. Null if none sent yet.
KycSessionOutputDTO
idUnique session identifier.
Customer identity fields.
Customer in-progress state: checkpoint, data, attempts, step tracking.
statusSession status.
isInvalidWhether the session is invalid (manually invalidated or superseded).
Suspicious session flag.
createdAtTimestamp when the session was created (Unix ms).
workflowSnapshotWorkflow snapshot used for this session.
Derived admin read layer: every step with its full submission history (input, output, signed media) plus a per-step rollup of the best result.
Normalized, versioned verification result — the stable typed contract for integrators. See docs/kyc-verification-output-spec.md.
Reminder-email pause state and per-rule send counters for this session.
currentUserCurrent active tab/user holding the session lock.
expiresAtTimestamp when the session expires (Unix ms). Null if no expiry.
completedAtTimestamp when the session was completed (Unix ms). Null while in progress.
flowConfigFlowConfig specifying the ordered steps the customer goes through.
stepPreviewDataPer-step preview data with signed media URLs, keyed by stepId.
adminDecisionAdmin decision record (approve/reject) with reason and timestamp. Null until a decision has been made.
lastActivityAtTimestamp of the most recent genuine customer activity (Unix ms). Null if none recorded yet.
CreateKycSessionOutputDTO
The created KYC session.
tokenShort-lived JWT token for customer access to the session.
sessionUrlFull URL the customer should visit to complete KYC verification.
KycSessionFiltersDTO
searchQueryFree-text search across session ID, external ID, customer name, and email.
checkpointFilter by session checkpoint.
isCompleteFilter by completion status.
isInvalidFilter by invalid/flagged status.
createdAtFilter by creation date range (start/end as ISO 8601 strings).
sortByField to sort by.
sortOrderSort direction.
limitMaximum number of results to return (1–100).
offsetNumber of results to skip for pagination.
PaginatedKycSessionsDTO
List of KYC sessions matching the query.
totalCountTotal number of sessions matching the filters (before pagination).
FileInput
mimeTypeMIME type of the file (e.g., image/jpeg, application/pdf)
base64DataBase64 encoded file data (required if url is not provided)
urlURL to fetch the file from (required if base64Data is not provided)
filenameOriginal filename (optional)
InitiateDocumentProcessingInput
processorIdID of the document processor to use.
Array of files to process (provide base64 data or URL for each file)
inputDataOptional key-value context about the document's subject, recorded against the instance and used to label it. It is never sent to the AI, so it cannot influence extraction; comparing these values against the document happens in a KYC session's claims check, not here. Keys a processor does not declare are recorded alongside the rest but have no effect.
SRI_LANKA_ID — supported keys:
name— Full name to match against the documentdateOfBirth— Expected date of birth (YYYY-MM-DD)idNumber— NIC or passport number to verifyaddress— Residential address to compare (warning-level check)
metadataOptional key-value metadata for syncing purposes (e.g., Bitnomi record IDs). Stored on the instance but not sent to the AI.
shouldCropImagesWhether to crop images before processing (default: true). When true, document images are cropped before validation and extraction.
backgroundProcessingWhether processing should happen in the background (default: true). If true, validation and extraction are performed asynchronously; if false, waits for all processing to complete before returning a response.
ExportKycSessionReportInput
sessionIdThe KYC session to export.
formatBUNDLE returns a ZIP containing report.pdf, every captured asset, the raw verification payload and a checksum manifest. PDF returns the rendered report alone.
includeInternalNotesInclude the reviewer-internal note on the decision. Off by default — the note is written for internal audit and is not intended to leave the organization.
includeImagesEmbed document, portrait and signature images in the PDF. Disable for a text-only report.
KycSessionReportAssetDTO
pathPath of this asset inside the ZIP bundle.
mimeTypesizeByteschecksumSHA-256 of the file bytes, lowercase hex.
KycSessionReportResponse
downloadTokenStorage key of the generated file. Stable; audit-safe.
downloadUrlShort-lived signed download URL.
expiresAtISO 8601 expiry of downloadUrl.
filenamesizeByteschecksumSHA-256 of the delivered file, lowercase hex. Recompute after download to prove the archived copy is byte-identical to what was generated.
generatedAtISO 8601 generation timestamp.
reportVersionReport contract version, e.g. "1.0".
Every asset included in the bundle, with its checksum. Empty for the PDF format.
omissionsAssets that could not be included, with the reason. Non-empty here means the bundle is incomplete — surface it to the caller rather than treating the export as clean.
UpsertWebhookDestinationInput
urlEndpoint that receives the POST deliveries.
eventsEvent types to deliver.
nameDisplay name. Defaults to the URL's host when creating.
descriptionapiVersionCloud API version deliveries are shaped for and labelled with. Defaults to 2026-10-01 when creating; kept when updating.
installationIdInstallation that owns the destination. Defaults to the Dossiers-Installation-Id header.
UpsertWebhookDestinationResult
idnameurleventsapiVersioninstallationIdisActiveAn upsert never re-enables a destination disabled in the dashboard.
secretHMAC-SHA256 signing secret. Kept across updates.
createdTrue when this call created the destination.

