Integrate Socure Verify

Learn how to call the RiskOS™ Evaluation API for identity verification with Socure Verify or Verify Plus.

Before you start

Make sure your RiskOS™ environment is provisioned with:

A workflow configured for the Verify or Verify Plus enrichment.
Regional support coverage for the Verify or Verify Plus enrichment.

Choose your environment

Start with Sandbox for development and testing, then move to Production for live applications.

  https://riskos.sandbox.socure.com/api/evaluation
  • No real customer data
  • Free testing environment
  • Unlimited API calls

Get an API key

  1. In the Sandbox RiskOS™ Dashboard, go to Developer Workbench > API Keys.
  2. Copy your API key securely.

How it works

  1. Send a POST request to /api/evaluation with identity data.
  2. Socure runs the request through configured RiskOS™ workflow with tailored enrichments.
  3. Receive a decision (ACCEPT, REVIEW, or REJECT) and supporting metadata.
  4. Apply your routing logic based on the result.

Common integration patterns

The table below outlines common integration patterns for Socure Verify and Verify Plus. Fields vary by country based on locally accepted identity documents and regulatory standards. Contact your account executive for country-specific details.

ModuleFieldsResponse
kycplusName, DOB, national ID, address, email, phoneFull profile + audit trail
kycName, DOB, national ID, address, email, phoneMatch score + reason codes

Note:

📘

Verify Plus is only available in the United States. For international workflows, use Verify.


Example frontend input form (mapped to /api/evaluation payload)

This example screen shows how a mobile app might capture user information during onboarding before triggering a RiskOS™ /api/evaluation request.

Each field maps to required parameters in the data.individual object:

  • First Name → given_name
  • Last Name → family_name
  • Date of Birth → date_of_birth
  • National ID → national_id

You can configure which fields are required per workflow by adjusting module-level match logic in RiskOS™.


Start a new Risk Evaluation

Endpoint

POST https://riskos.sandbox.socure.com/api/evaluation
POST https://riskos.socure.com/api/evaluation

Authentication and headers

Include your API key in the Authorization header as a Bearer token, along with standard JSON headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
X-API-Version: 2025-01-01.orion   # optional – pins a specific API version

Example request

{
  "id": "APP-987654",
  "timestamp": "2025-08-13T06:10:54.298Z",
  "workflow": "consumer_onboarding",
  "data": {
    "individual": {
      "given_name": "Jonathan",
      "family_name": "Reyes",
      "national_id": "1234",
      "phone_number": "+639171234567",
      "email": "[email protected]",
      "date_of_birth": "1979-07-30",
      "ip_address": "203.87.128.100",
      "address": {
        "line_1": "123 Rizal Avenue",
        "locality": "Portland",
        "major_admin_division": "OR",
        "postal_code": "85142",
        "country": "US"
      }
    }
  }
}
curl --location 'https://riskos.sandbox.socure.com/api/evaluation' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data-raw '{
  "id": "APP-987654",
  "timestamp": "2025-08-13T06:10:54.298Z",
  "workflow": "consumer_onboarding",
  "data": {
    "individual": {
      "given_name": "Jonathan",
      "family_name": "Reyes",
      "national_id": "1234",
      "phone_number": "+639171234567",
      "email": "[email protected]",
      "date_of_birth": "1979-07-30",
      "ip_address": "203.87.128.100",
      "address": {
        "street_address": "123 Rizal Avenue",
        "locality": "Portland",
        "major_admin_division": "OR",
        "postal_code": "85142",
        "country": "US"
      }
    }
  }
}'

Request schema

Top-level fields

FieldTypeRequiredDescriptionExample
idStringRequired

Required, customer-defined unique identifier for the request.

This value must be unique for each evaluation. Reusing an ID causes RiskOS™ to treat the request as a re-run and can impact processing behavior, results, and downstream workflows.

"APP-987654"
timestampStringRequiredTimestamp when evaluation was initiated."2025-05-18T02:09:25Z"
workflowStringRequiredRiskOS™ workflow name configured in your environment.

Note: The workflow name must be unique within your RiskOS™ environment. It is not scoped by use case and must identify a single active workflow for each Evaluation API request.
"business_onboarding"
dataObjectRequiredMain payload containing business and individual information.
individualObjectRequiredPrimary identity object containing individual's information.See individual schema below.

individual fields

Validation rules & accuracy guidance

These rules ensure RiskOS™ has enough information to perform a reliable identity match.

Identity Verification Requirements

At least ONE of the following combinations must be provided:

  • Name + Date of Birth
    • given_name + family_name + date_of_birth
  • Name + Phone
    • given_name + family_name + phone_number
  • Name + Address
    • given_name + family_name + address
  • National ID (Standalone)
    • national_id (can be provided alone or with other fields)
    • U.S.: Full SSN/TIN or last 4 digits of SSN
    • Other countries: Full government-issued ID
Accuracy Guidance

More PII fields = higher matching accuracy and coverage. Recommended combinations:

  • Best Accuracy
    • national_id (full SSN/TIN) + given_name / family_name + date_of_birth + phone_number + address
  • Better Accuracy
    • given_name / family_name + date_of_birth + phone_number + address
  • Good Accuracy
    • given_name / family_name + any two additional fields
  • Minimum Viable
    • given_name / family_name + one additional field
    • OR national_id alone (last 4 SSN requires additional fields for verification)
    • OR phone_number + date_of_birth
FieldTypeRequiredDescriptionExample
given_nameStringConditionally RequiredFirst name of the individual."Jonathan"
family_nameStringConditionally RequiredLast name of the individual."Reyes"
national_idStringConditionally RequiredGovernment-issued ID (last 4 SSN for U.S., full ID for others)."1234"
date_of_birthStringConditionally RequiredDate of birth in YYYY-MM-DD format."1979-07-30"
emailStringOptionalIndividual’s email address."[email protected]"
phone_numberStringConditionally RequiredPhone number in E.164 format. The API expects the standard E.164 format but tolerates hyphens and spaces for user convenience."+639171234567"
ip_addressStringOptionalIP address in IPv4 or IPv6 format."203.87.128.100"
addressObjectConditionally RequiredResidential address of the individual.See address schema below.

address

FieldTypeRequiredDescriptionExample
line_1StringRequiredStreet name and number."123 Rizal Avenue"
localityStringRequiredCity or locality."Portland"
major_admin_divisionStringRequiredState, province, or region."OR"
postal_codeStringRequiredPostal or ZIP code."85142"
countryStringRequiredTwo-letter ISO 3166-1 alpha-2 country code."US"

Example response

When you call the Evaluation API, RiskOS™ returns a JSON payload that includes the final decision, evaluation metadata, and enrichment-specific results.

{
  "id": "APP-987654",
  "workflow": "api_individual_onboarding",
  "workflow_id": "fae769dc-832f-4619-a386-54873b8861e5",
  "workflow_version": "65.1.0",
  "eval_source": "API",
  "eval_id": "c9e53a0f-35f4-4d18-bf26-ec1788c9f47a",
  "eval_start_time": "2025-11-17T20:03:49.123613925Z",
  "eval_end_time": "2025-11-17T20:03:49.686548734Z",
  "decision": "ACCEPT",
  "decision_at": "2025-11-17T20:03:49.686428264Z",
  "status": "CLOSED",
  "sub_status": "Accept",
  "tags": [
    "low_id_coverage",
    "manual_review_required"
  ],
  "notes": "",
  "review_queues": [
    "kyc-apac-philippines"
  ],
  "data_enrichments": [
    {
      "enrichment_name": "Socure KYC PROD SBX",
      "enrichment_endpoint": "https://sandbox.socure.com/api/3.0/EmailAuthScore",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "city": "Danbury",
        "consentTimestamp": "2025-11-17T20:03:48.252000Z",
        "country": "US",
        "countryOfOrigin": "US",
        "customerUserId": "custom-customer_user_id",
        "date_of_birth": "1958-01-31",
        "firstName": "Ananda",
        "gender": "Male",
        "homeNumber": "+1-203-798-6508",
        "mobileNumber": "+12037986508",
        "modules": [
          "kyc"
        ],
        "nationalId": "700-01-3784",
        "parentTxnId": "bcbb1fef-c125-42ea-a059-aee00381835f",
        "physicalAddress": "2 Moran Ave",
        "physicalAddress2": "Address line 2",
        "riskOSId": "Effectiv-Test-kyc-1763409828252",
        "state": "CT",
        "surName": "test",
        "userConsent": true,
        "userId": "data-individual-id",
        "workflow": "api_individual_onboarding",
        "zip": "06810"
      },
      "response": {
        "kyc": {
          "socureId": "0318d3c3-541c-4090-8250-dec3e41efa89",
          "nationalId": "786-00-1234",
          "reasonCodes": [
            "I919"
          ],
          "fieldValidations": {
            "city": 0.99,
            "dob": 0.99,
            "driverLicense": 0.99,
            "email": 0.99,
            "firstName": 0.99,
            "mobileNumber": 0.99,
            "ssn": 0.99,
            "state": 0.99,
            "streetAddress": 0.99,
            "surName": 0.99,
            "zip": 0.99
          },
          "sourceAttribution": [
            "Credit",
            "Government",
            "Education"
          ],
          "transactionScope": "international",
          "callType": "2X2",
          "matchCounts": {
            "tradelines": 3
          },
          "fieldSourceAttribution": {
            "firstName": ["Government"],
            "surName": ["Government"],
            "ssn": ["Government"]
          }
        },
        "referenceId": "8d92942e-af40-47b3-9b19-3f13456f401b",
        "customerProfile": {
          "userId": "data-individual-id",
          "customerUserId": "custom-customer_user_id"
        }
      },
      "is_source_cache": false,
      "total_attempts": 1
    }
  ],
  "computed": {
    "CONDITION": true,
    "socure_kyc_response": {
      "__third_party_name__": "Socure KYC PROD SBX",
      "kyc": {
        "socureId": "0318d3c3-541c-4090-8250-dec3e41efa89",
        "nationalId": "786-00-1234",
        "reasonCodes": [
          "I919"
        ],
        "fieldValidations": {
          "city": 0.99,
          "dob": 0.99,
          "driverLicense": 0.99,
          "email": 0.99,
          "firstName": 0.99,
          "mobileNumber": 0.99,
          "ssn": 0.99,
          "state": 0.99,
          "streetAddress": 0.99,
          "surName": 0.99,
          "zip": 0.99
        },
        "sourceAttribution": [
          "Credit",
          "Government",
          "Education"
        ],
        "transactionScope": "international",
        "callType": "2X2",
        "matchCounts": {
          "tradelines": 3
        },
        "fieldSourceAttribution": {
          "firstName": ["Government"],
          "surName": ["Government"],
          "ssn": ["Government"]
        }
      },
      "referenceId": "8d92942e-af40-47b3-9b19-3f13456f401b",
      "customerProfile": {
        "userId": "data-individual-id",
        "customerUserId": "custom-customer_user_id"
      }
    }
  },
  "aggregations": { },
  "eval_status": "evaluation_completed",
  "environment_name": "Sandbox"
}

Key response fields

RiskOS™ returns a consistent set of top-level fields that describe the outcome of an evaluation, along with enrichment-specific results that depend on your workflow configuration.


Where to find specific results

AreaFieldsHow to use it
Decision and routingdecision, decision_at, tags, review_queues, notes, scorePrimary control signals. Branch application logic using decision. Use tags, queues, notes, and score for secondary routing, review, and explanation.
Module resultsModule-specific fields (for example: reasonCodes, scores, extracted attributes)Evidence and signals produced by workflow modules. Use for escalation, compliance review, investigation, and audit.
Identifiers and traceabilityid, eval_idPersist these identifiers to correlate API calls, logs, webhooks, GET requests, and support cases.
Enrichment executiondata_enrichments[] (response, status_code, total_attempts, is_source_cache)Inspect enrichment outputs and detect provisioning issues, partial failures, retries, or cached responses.
Workflow contextworkflow, workflow_id, workflow_versionUnderstand which workflow ran and which version produced the result. Useful for debugging and historical analysis.
Evaluation lifecycleeval_status, status, sub_statusExecution and case state only. Useful for monitoring and asynchronous workflows. Do not use for business decisions.
Execution contexteval_source, eval_start_time, eval_end_time, environment_nameObservability and performance metadata for latency tracking, environment validation, and API vs Dashboard attribution.

Decision and routing (primary control signals)

These fields describe the outcome of an evaluation and any routing applied by the workflow.

decision values are workflow-specific and may differ from the examples shown in this guide.

FieldTypeDescriptionExample
decisionString enumFinal evaluation result.

Possible values:
ACCEPT
REVIEW
REJECT

Note: The fields returned can be customized to fit your integration or business needs.
"ACCEPT"
decision_atString <Date-Time>RFC 3339 timestamp when the decision was finalized."2025-11-17T20:03:49.686428264Z"
scoreNumberIf configured for a workflow, provides an aggregate score of all steps. This can be used for risk banding, additional routing, or analytics alongside the primary decision value.Not returned
tagsArray of StringsArray of labels applied during the workflow to highlight routing choices, notable signals, or rule outcomes. Useful for reporting, segmentation, or UI highlighting in the RiskOS™ Dashboard.["low_id_coverage", "manual_review_required"]
review_queuesArray of StringsLists any manual review queues the evaluation was sent to. Empty when the case is fully auto-resolved without human review.["kyc-apac-philippines"]
notesStringFreeform text field for analyst or system comments about the evaluation. Often used to capture manual review rationale or investigation context.""

Evaluation lifecycle and status

These fields describe where the evaluation is in its lifecycle and are useful for monitoring and asynchronous workflows.

FieldTypeDescriptionExample
eval_statusString enumInternal RiskOS™ evaluation lifecycle state.

Possible values:
evaluation_completed
evaluation_paused
evaluation_in_progress
"evaluation_completed"
statusString enumCase-level status of the evaluation.

Possible values:
OPEN
CLOSED
"CLOSED"
sub_statusStringProvides additional detail about the evaluation status.

Example values:
Under Review
Pending Verification
Accept
Reject
"Accept"

Identifiers and traceability

Use these fields to correlate requests, logs, webhooks, and support cases.

FieldTypeDescriptionExample
idString (UUID or custom string)Your evaluation identifier within RiskOS™.

Note: This is customer-generated.
"APP-987654"
eval_idString (UUID)RiskOS™-generated unique identifier for the evaluation."c9e53a0f-35f4-4d18-bf26-ec1788c9f47a"
workflowStringName of the workflow executed."api_individual_onboarding"
workflow_idString (UUID)Unique identifier for the workflow run."fae769dc-832f-4619-a386-54873b8861e5"
workflow_versionStringVersion of the executed workflow."65.1.0"

Execution context

These fields provide timing and environment context for the evaluation.

FieldTypeDescriptionExample
eval_sourceString enumIndicates where the evaluation was initiated from.

Possible values:
API: Request submitted via the Evaluation API.
Dashboard: Case created or evaluated through the RiskOS™ Dashboard.
"API"
eval_start_timeString <Date-Time>RFC 3339 timestamp for when RiskOS™ started processing the evaluation. Useful for latency and performance monitoring."2025-11-17T20:03:49.123613925Z"
eval_end_timeString <Date-Time>RFC 3339 timestamp for when RiskOS™ finished processing the evaluation. Can be paired with eval_start_time to compute total processing time."2025-11-17T20:03:49.686548734Z"
environment_nameStringIndicates which environment the evaluation ran in. Typically Sandbox for testing or Production for live traffic."Sandbox"

Enrichment results

Enrichment outputs are returned in the data_enrichments array. Each object corresponds to a module executed as part of the Consumer Onboarding workflow.

FieldTypeDescriptionExample
enrichment_nameStringName of the enrichment executed."Socure KYC PROD SBX"
enrichment_providerStringProvider of the enrichment."Socure"
status_codeIntegerHTTP status returned by the enrichment call.200
requestObjectProvider request payload (for observability and debugging).See request schema below.
responseObjectNormalized enrichment response.See response schema below.
is_source_cacheBooleanIndicates whether cached data was used.false
total_attemptsIntegerNumber of attempts made to retrieve the data.1

request fields

FieldTypeDescriptionExample
countryStringISO 3166-1 alpha-2 country code."US"
firstNameStringConsumer’s given name."Jonathan"
surNameStringConsumer’s family name."Reyes"
nationalIdStringGovernment-issued identifier (SSN, national ID, etc.)."786-00-1234"
dobString (YYYY-MM-DD)Consumer’s date of birth."1979-07-30"
streetAddressStringStreet address of residence."123 Rizal Avenue"
cityStringCity of residence."Portland"
stateStringState, province, or region."OR"
zipStringPostal or ZIP code."85142"
ipAddressStringIP address observed during the session."203.87.128.100"
phoneStringPhone number in E.164 format."+639171234567"
emailStringConsumer’s email address."[email protected]"

response fields

The response root contains only the enrichment results object (kyc for standard Verify, or kycPlus for Verify Plus), the referenceId, and customerProfile. Identity signals such as socureId, sourceAttribution, callType, and transactionScope are nested inside the kyc or kycPlus object.

FieldTypeDescriptionExample
kycObjectResults from the standard Verify evaluation.See the kyc schema in the following section.
kycPlusObjectResults from the Verify Plus evaluation.See the kycPlus schema in the following section.
referenceIdString (UUID)Unique identifier assigned to each enrichment after a RiskOS™ workflow is finalized."f3863a33-69ca-43c2-90e0-8b4344a41a09"
customerProfileObjectThe user identifiers you provided in the request, echoed back.See the customerProfile schema in the following section.

customerProfile fields

FieldTypeDescriptionExample
userIdStringThe data.individual identifier echoed back from your request."data-individual-id"
customerUserIdStringThe customer-defined user identifier echoed back from your request."custom-customer_user_id"

kyc fields (standard Verify)

FieldTypeDescriptionExample
socureIdString (UUID)Socure's persistent identity identifier used for cross-module correlations."0318d3c3-541c-4090-8250-dec3e41efa89"
nationalIdString or NullNational identification number associated with the best-matched entity."786-00-1234"
creditFileNumberString or NullThe credit file number returned for the consumer when a credit bureau in Canada validates the transaction. Requires special provisioning and is applicable to Canada only."00512123456"
reasonCodesArray of StringsDecision reasons (for example, "I919").["I919"]
fieldValidationsObjectConfidence scores (0–1) for each submitted field. See the fieldValidations schema in the following section.{"firstName": 0.99, "ssn": 0.99}
sourceAttributionArray of StringsHigh-level data source categories used in the verification.["Credit", "Government", "Education"]
transactionScopeStringIndicates the scope of the transaction (domestic or international)."international"
callTypeStringIndicates the verification call type used. Returns "2X2" when 2X2 is enabled for the transaction."2X2"
matchCountsObjectContains match counts by category. International transactions only (United Kingdom, when 2X2 is enabled).{"tradelines": 3}
fieldSourceAttributionObjectMapping of specific PII fields to the authoritative sources that verified them. International transactions only.{"ssn": ["Social Security Administration"], "address": ["USPS"]}

fieldValidations fields

FieldTypeDescriptionExample
firstNameNumberMatch score for first name. 0.99 indicates a match; 0.01 indicates no match.0.99
surNameNumberMatch score for surname. 0.99 indicates a match; 0.01 indicates no match.0.99
streetAddressNumberMatch score for street address. 0.99 indicates a match; 0.01 indicates no match.0.99
cityNumberMatch score for city. 0.99 indicates a match; 0.01 indicates no match.0.99
stateNumberMatch score for state. 0.99 indicates a match; 0.01 indicates no match.0.99
zipNumberMatch score for ZIP code. 0.99 indicates a match; 0.01 indicates no match.0.99
mobileNumberNumberMatch score for phone number. 0.99 indicates a match; 0.01 indicates no match.0.99
dobNumberMatch score for date of birth. 0.99 indicates a match; 0.01 indicates no match.0.99
ssnNumberMatch score for Social Security Number or Individual Tax Identification Number. 0.99 indicates a match; 0.01 indicates no match.0.99
emailNumberMatch score for email address. 0.99 indicates a match; 0.01 indicates no match.0.99
driverLicenseNumberMatch score for driver license number. 0.99 indicates a match; 0.01 indicates no match.0.99

kycPlus fields

FieldTypeDescriptionExample
socureIdString (UUID)Socure's persistent identity identifier used for cross-module correlations."819509ab-5ab8-475c-a084-5f209dcff940"
nationalIdString or nullNational identification number (SSN or ITIN) associated with the best-matched entity."786-00-1234"
reasonCodesArray of StringsDecision reasons (for example, "I919", "R948").["I919", "R948"]
fieldValidationsObjectConfidence scores (0–1) for each submitted field. See the fieldValidations schema above.{"nationalId": 0.01}
sourceAttributionArray of StringsData sources used in the verification process.["Credit", "Property Tax"]
transactionScopeStringIndicates the scope of the transaction (domestic or international)."international"
bestMatchedEntityObjectThe best identity match returned.See bestMatchedEntity schema below.
sportLeagueArray of strings or nullThe sports league associated with the entity.["NFL"]
connectionsArray of objects or nullIdentities connected to the best-matched entity in the Socure Identity Graph. See connections schema below.See connections schema below.

bestMatchedEntity fields

FieldTypeDescriptionExample
firstNameStringResolved first name."Jonathan"
middleNameString or NullResolved middle name.null
surNameStringResolved last name."Reyes"
suffixString or NullSuffix (e.g., "Jr.").null
ssnStringResolved SSN or national ID."786-00-1234"
ssnIssuedStringYear or range when SSN was issued."1999-2000"
dobString (YYYY-MM-DD)Resolved date of birth."1999-07-05"
mobileNumberStringResolved phone number."+13475550100"
emailAddressStringResolved email address."[email protected]"
deceasedDateString or NullDate of death, if applicable.null
driverLicenseString or NullDriver license number.null
normalizedAddressObjectStandardized address.See schema below.
associatedPhoneNumbersArray of ObjectsPhones linked to the identity.See schema below.
associatedAddressesArray of ObjectsAddresses linked to the identity.See schema below.
associatedEmailsArray of ObjectsEmails linked to the identity.See schema below.

normalizedAddress fields

FieldTypeDescriptionExample
streetAddressStringThe street address of the normalized input address."123 Rizal Avenue"
cityStringThe city in which the normalized input address is located."Portland"
stateStringThe state in which the normalized input address is located."OR"
zipStringThe ZIP code in which the normalized input address is located."97223"
firstSeenDateString (YYYY-MM-DD)The date the address was first observed."2010-03-01"
lastSeenDateString (YYYY-MM-DD)The date of the most recent presentation of the data."2024-11-18"
lastSeenDateTrxString (YYYY-MM-DD)The date of the most recent transaction in which the data was presented."2024-11-18"
countyStringThe county in which the normalized input address is located."Washington"
isMatchedBooleanIndicates whether this address matched the input address.true
isLatestBooleanIndicates whether this is the most recent (current) address for the best-matched entity.true

associatedPhoneNumbers fields

FieldTypeDescriptionExample
phoneNumberStringThe phone number in E.164 format, including country code."+12063588927"
firstSeenDateString (YYYY-MM-DD)The date the phone number was first observed."2010-03-01"
lastSeenDateString (YYYY-MM-DD)The timestamp of the most recent presentation of the data."2023-05-08"
isMatchedBooleanIndicates whether the phone number was matched to the best-matched entity.true
isLatestBooleanIndicates whether this phone number is the most recent (current) number associated with the best-matched entity.true

associatedAddresses fields

FieldTypeDescriptionExample
streetAddressStringThe street address, including house number and street name."108 Smokerise Blvd"
cityStringThe city where the address is located."Longwood"
stateStringThe two-letter U.S. state abbreviation."FL"
zipStringThe ZIP code or postal code for the address."32779-3315"
firstSeenDateString (YYYY-MM-DD)The date the address was first observed."2022-03-01"
lastSeenDateString (YYYY-MM-DD)The date of the most recent presentation of the data."2024-11-18"
lastSeenDateTrxString (YYYY-MM-DD)The date of the most recent transaction in which the data was presented."2024-11-18"
countyStringThe county associated with the best-matched entity’s address."Seminole"
isMatchedBooleanIndicates whether the address was matched to the best-matched entity.true
isLatestBooleanIndicates whether this address is the most recent (current) address associated with the best-matched entity.false

associatedEmails fields

FieldTypeDescriptionExample
emailAddressStringThe email address associated with the best-matched entity."[email protected]"
firstSeenDateString (YYYY-MM-DD)The date the email address was first observed."1999-09-12"
lastSeenDateString (YYYY-MM-DD)The date of the most recent presentation of the data."2010-09-13"
isMatchedBooleanIndicates whether the email was matched to the best-matched entity.true
isLatestBooleanIndicates whether this is the most recent (current) associated email.false

connections fields

FieldTypeDescriptionExample
socureIdString or nullThe Socure ID of the connected entity."ff6bc013-5cd9-44d5-9da4-bdb04b4003ee"
fullNameStringThe full name of the connected entity."Melissa Smith"

Apply routing logic

Apply the decision parameter to your application:

if response.get("decision") == "ACCEPT":
    proceed_with_onboarding()
elif response.get("decision") == "REVIEW":
    trigger_manual_review(queue=response.get("review_queues", ["Default"])[0])
elif response.get("decision") == "REJECT":
    reject_application(reason="Identity verification failed")
else:
    log_warning("Unknown decision value", response.get("decision"))

Use RiskOS™ logs to trace enrichment execution and reason code evaluation logic. For auditability, log the full response payload and decision scores per field.


Best practices for integration and maintenance

  • Always validate API inputs against the expected schema.
  • Use sandbox mode and known test identities during QA.
  • Enable and monitor reasonCodes and sourceAttribution for transparency and auditability.
  • Use decision, tags, and review_queues to drive routing logic in your RiskOS™ workflow.
  • Log and store evaluation payloads and responses for compliance, dispute resolution, and improvement.

Other relevant API endpoints exposed via RiskOS™

RiskOS™ supports a range of identity verification use cases through modular API endpoints. These modules can be configured independently or combined within workflows to meet regional compliance requirements, fraud detection strategies, and onboarding needs.


Validation checklist

Test coverage

Known good identities → ACCEPT
Bad/mismatched identities → REJECT or REVIEW
Edge cases logged + reviewed

Schema & error handling

Fields match schema across environments
Errors are structured and retryable
Use exponential fallback with jitter for resubmissions

Logging & observability

Log full request/response
Include correlation IDs
Redact secrets from logs

Exception routing

Escalation paths defined for REVIEW
Support team has access to logs + scores


Did this page help you?