Skip to main content

Understanding the Workflow Response

After executing a workflow, the API returns a comprehensive workflowResult object. This object is the key to understanding the outcome of every check performed. This guide provides a structured, top-down walkthrough of how to parse this response, explaining each key object from the final verdict down to the granular evidence.
The examples in this guide refer to the following API response for workflow execution 01JZHEX5FQA4DJB0MMJFZR26JS. Click to expand and see the full structure

Part 1: The Overall Outcome (The Final Verdict)

Start by examining the top-level fields of the workflowResult object. These provide the final, authoritative outcome of the entire workflow execution.

Workflow Execution States (workflowExecutionState)

This field tells you if the workflow ran to completion.

When Each Execution State Occurs

COMPLETED

The workflow ran to completion. This is the expected state for most synchronous workflows.
  • Next step: Check workflowResult.status for the verification outcome (PASS, FAIL, REVIEW, etc.)

IN_PROGRESS

The workflow is still executing and has not yet reached a terminal state. This occurs when: Handling IN_PROGRESS responses:
  1. Configure webhooks (recommended) - Listen for completion events:
    • RESULTS_RETRIEVED - Verification results are ready
    • FF_EXTERNAL_IDV_CHECK_COMPLETED - IDV/biometric submission complete
  2. Poll for results - Call GET /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName} to retrieve updated results
  3. Use the retrieve endpoint - Call /retrieve/{requestID} with the requestID from the original response
Note: Biometric checks are asynchronous and can take up to 5 minutes to complete. Do not treat IN_PROGRESS
as a failure.

ERROR

An unrecoverable error occurred during workflow execution. Common causes:
  • Internal system error
  • Invalid workflow configuration
  • Data source connector failure
Recommended action: Log the workflowExecutionId and retry the request. If persistent, contact
support@frankieone.com.

TIMEOUT

The workflow exceeded the maximum allowed execution time. Common causes:
  • External data source unavailable or slow
  • Network connectivity issues
  • High system load
Recommended action: Retry with exponential backoff. Check FrankieOne Status for service availability.

CANCELED

The workflow was manually canceled before completion. This can occur when:
  • The request was explicitly canceled via API
  • A dependent process was terminated

TERMINATED

The workflow was forcefully stopped by the system. This may indicate:
  • System-level intervention
  • Resource limits exceeded
  • Security policy triggered
Recommended action: Contact help@frankieone.com with the workflowExecutionId to investigate.

Workflow Statuses (status and result)

This is the final recommendation of the workflow.

Detecting Manual Overrides

It’s crucial to know if a workflow’s result was changed by a person. When an operator manually changes the status (e.g., from FAIL to PASS), the following fields are populated:
  • statusOverrideRequestId: The unique ID of the override request.
  • statusOverrideBy: The user who performed the override.
  • statusOverrideAt: The timestamp of the override.
To detect an override, check ifstatusOverrideRequestId exists and is not empty.

Part 2: The Step-by-Step Breakdown (workflowStepResults)

The workflowStepResults array is a log of each individual check, explaining how the overall status was reached. Each object in this array corresponds to a step configured in your workflow (e.g., KYC, AML, IDV).

Workflow Step Results (result)


Part 3: The Granular Evidence (processResults)

For the deepest level of detail, look inside a workflowStepResult at its processResults array. A Process Result Object (PRO) is the raw evidence from a single check against a single data source.

Process Result Classes (class)

Best Practices for Integration

  • CheckworkflowExecutionState first: Always confirm the workflow is COMPLETED before trusting the status.
  • Automate based onstatus: Use the top-level status field for your primary business logic (e.g., approve account, flag for review).
  • Debug withworkflowStepResults: When you get an unexpected FAIL or REVIEW, loop through the workflowStepResults to find which stepName has a non-passing result. The summary and processResults within that step will tell you why.
  • Log theworkflowExecutionId: This ID is your key for auditing, support queries, and correlating results.

Synchronous vs Asynchronous Workflows

Workflow behavior depends on the types of checks configured in your workflow.

Synchronous Workflows

Workflows containing only synchronous steps return COMPLETED immediately with the final result. Synchronous step types:
  • KYC data source checks (government databases, credit bureaus)
  • AML/PEP/Sanctions screening
  • Watchlist checks
  • Duplicate detection
Example response: