Verification workflows
Verification workflows control what an applicant must complete and how evidence resolves to approve, review or reject.
List workflows
GET /v1/workflows
Authorization: Bearer pl_live_…
const { workflows } = await proofline.workflows.list();
const workflow = workflows.find(
(item) =>
item.applicationType === "individual" && item.status === "published",
);
if (!workflow) throw new Error("No approved individual workflow is configured");
Version semantics
| Status | Editable | New applications | Existing applications |
|---|---|---|---|
draft | Yes | No | None |
published | No | Yes | Continues pinned |
retired | No | No | Continues pinned |
Published policy is immutable because changing it in place would rewrite the meaning of historic evidence and decisions. Use Create editable version, validate the successor, publish it, update your configured workflow ID, then retire the predecessor for new intake.
Explicit assignment
Every application creation must include workflowId. Assayra does not guess the latest workflow. This protects integrations from silently moving to a different regulatory or risk policy after an administrator publishes a new version.
Decision branches
Supported risk-decision inputs include risk score, screening candidate count, document result and biometric result. The workflow engine resolves overlapping conditions conservatively; diagram edge order cannot turn a higher-risk result into approval.
Automated approval requires all mandatory signals to pass, no unresolved AML candidate, tenant automation enabled, an approving workflow terminal and—outside fictional showcase traffic—an approved Country Assurance Pack.
Per-control acceptance thresholds
Select a document, face likeness, human presence, screening or business-registry node in Workflow Studio to set its acceptance policy from 0 to 100. Higher values are stricter. The values are saved inside the immutable workflow version, copied into model evidence and enforced server-side; a hosted page or SDK cannot lower them.
{
"id": "presence",
"type": "liveness",
"label": "Human presence",
"x": 470,
"y": 270,
"config": {
"activeLiveness": true,
"faceDetectionThreshold": 82,
"faceMatchThreshold": 74,
"subjectContinuityThreshold": 55,
"padThreshold": 80,
"movementThreshold": 7
}
}
faceMatchThreshold is a calibrated model acceptance score, not a literal statistical probability. Validate the operating point against an approved corpus before live use. Assayra preserves the raw cosine score, the normalized 0–100 score and the threshold used in the signal evidence.
Use liveness when active movement and PAD are required. Use face_match when the journey requires a live document-to-person likeness comparison without an active-liveness challenge. Do not add both: active liveness already performs the likeness comparison.
| Node type | Configurable percentage gates |
|---|---|
document | Combined document acceptance, OCR confidence, declared-name similarity |
face_match | Face detection, document-to-live likeness, capture-burst subject continuity |
liveness | Face detection, document-to-live likeness, PAD, subject continuity, challenge motion |
screening | Potential-candidate and high-risk match scores |
collect_business | Licensed-registry match score |
Test before release
Workflow Studio provides:
- structural validation;
- warnings for missing document, liveness, screening or rejection controls;
- deterministic scenario simulation;
- the exact hosted-applicant runtime sequence; and
- immutable publish, successor and retirement actions.
Simulation never changes live application state.