Integration Guide

Learn how to call the RiskOS™ Evaluation API for deceased status checks with Socure Deceased Check.

Socure Deceased Check API integration guide

This guide walks you through how to integrate with Socure’s /api/evaluation endpoint using the Deceased Check enrichment. You’ll learn how to send identity data, parse the response, and apply decision logic to support fraud prevention, risk operations, and compliance workflows.


Before you start

Make sure your RiskOS™ environment is provisioned with:

A workflow configured for the Deceased Check enrichment.
Regional support coverage for the Deceased Check enrichment (available exclusively in the United States).

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 the configured RiskOS™ workflow with the Deceased Check enrichment.
  3. Receive a decision (ACCEPT, REVIEW, or REJECT) and supporting metadata.
  4. Apply your routing logic based on the result (e.g., flag if reason code R907 or R909 is returned).

Start a new 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-123456",
  "timestamp": "2022-07-28T06:10:54.298Z",
  "workflow": "consumer_onboarding",
  "data": {
    "individual": {
      "given_name": "Jessica",
      "family_name": "Roberts",
      "national_id": "123456789",
      "date_of_birth": "1943-09-19",
      "email": "[email protected]",
      "phone_number": "+13475551234",
      "address": {
        "line_1": "234 Main Street",
        "line_2": "Apt. 3C",
        "locality": "Jersey City",
        "major_admin_division": "NJ",
        "country": "US",
        "postal_code": "07307"
      },
      "additional_context": {
        "user_consent": true,
        "consent_timestamp": "2020-05-26T13:34:43Z"
      }
    }
  }
}
curl --location --request POST '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-123456",
  "timestamp": "2022-07-28T06:10:54.298Z",
  "workflow": "consumer_onboarding",
  "data": {
    "individual": {
      "given_name": "Jessica",
      "family_name": "Roberts",
      "national_id": "123456789",
      "date_of_birth": "1943-09-19",
      "email": "[email protected]",
      "phone_number": "+13475551234",
      "address": {
        "line_1": "234 Main Street",
        "line_2": "Apt. 3C",
        "locality": "Jersey City",
        "major_admin_division": "NJ",
        "country": "US",
        "postal_code": "07307"
      },
      "additional_context": {
        "user_consent": true,
        "consent_timestamp": "2020-05-26T13:34:43Z"
      }
    }
  }
}'

Request schema

Top-level fields

Field

Type

Required

Description

Example

id

String

Required

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-123456"

timestamp

String

Required

Timestamp when the evaluation was initiated.

"2022-07-28T06:10:54.298Z"

workflow

String

Required

RiskOS™ workflow name configured in your environment.

"consumer_onboarding"

data

Object

Required

Main payload containing applicant or business information.

individual

Object

Required

Primary identity object containing personal information.

See individual schema below.


individual fields

FieldTypeRequiredDescriptionExample
given_nameStringRequiredApplicant’s first name (omit prefixes like Mr., Ms.)."Jessica"
family_nameStringRequiredApplicant’s last name (omit suffixes like Jr., III)."Roberts"
national_idStringConditionalU.S. SSN (full or last 4 digits); improves precision for identity resolution."123456789"
date_of_birthStringConditionalDate of birth (YYYY-MM-DD, YYYYMMDD, or YYYY/MM/DD)."1943-09-19"
addressObjectConditionalStreet, city, state (ISO 3166-2), postal code, and country (ISO 3166-1 alpha-2).See address schema below.
phone_numberStringOptionalApplicant’s phone number in E.164 format."+13475551234"
additional_contextObjectConditionalProvides supplementary metadata for RiskOS™ workflows (e.g., consent info).See additional_context schema below.

address fields

FieldTypeRequiredDescriptionExample
line_1StringOptionalStreet number/house name and street."234 Main Street"
line_2StringOptionalAdditional address data (apartment, landmarks)."Apt. 3C"
localityStringOptionalCity, town, or village."Jersey City"
minor_admin_divisionStringOptionalDistrict or borough.null
major_admin_divisionStringOptionalState or province code (ISO 3166-2)."NJ"
countryString (ISO 3166-1 alpha-2)OptionalCountry code."US"
postal_codeStringOptionalPostal or ZIP code."07307"

additional_context fields

FieldTypeRequiredDescription
user_consentBooleanRequiredIndicates whether the user provided consent.
consent_timestampString <date-time>OptionalThe date and time when the user provided consent, specified in ISO 8601 / RFC 3339 format. If not provided, defaults to the current transaction timestamp. Although optional, it is required for eCBSV to meet the 90-day consent window set by the SSA. Example: 2022-07-28T06:10:54Z.

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-123456",
  "eval_id": "6dc8f39c-ecc3-4fe0-9283-fc8e5f99e816",
  "workflow": "consumer_onboarding",
  "workflow_id": "dc7f261e-b158-477e-9770-7e4eae066156",
  "workflow_version": "28.16.0",
  "status": "CLOSED",
  "sub_status": "Review",
  "decision": "REVIEW",
  "decision_at": "2025-10-07T23:50:03.738648201Z",
  "tags": [],
  "review_queues": [],
  "data_enrichments": [
    {
      "enrichment_name": "Socure Deceased Check",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {},
      "response": {
        "referenceId": "f3863a33-69ca-43c2-90e0-8b4344a41a09",
        "deceasedCheck": {
          "socureId": "46fd3b11-a130-4915-8cc4-074bbd799669",
          "reasonCodes": [
            "R909",
            "R907"
          ],
          "firstName": "Jessica",
          "middleName": "Marie",
          "surName": "Roberts",
          "nationalId": "047-66-4618",
          "dob": "1943-09-19",
          "dod": "2022-11-19",
          "age": "79",
          "sourceAttribution": "Probate"
        }
      }
    }
  ]
}

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)

Use these fields to determine what action your application should take.

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

FieldTypeDescriptionExample
decisionString (enum)Final evaluation result.

Possible values:
ACCEPT
REVIEW
REJECT

Note: The fields returned can be customized to fit your integration or business needs.
"REVIEW"
decision_atString <Date-Time>RFC 3339 timestamp when the decision was finalized."2025-10-07T23:50:03.738648201Z"
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.
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.[]
review_queuesArray of StringsLists any manual review queues the evaluation was sent to. Empty when the case is fully auto-resolved without human review.[]
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 (enum)Indicates the current state of an evaluation in RiskOS™.

Possible values:
evaluation_completed
evaluation_paused
evaluation_in_progress
evaluation_completed
statusString (enum)Indicates the current state of an evaluation or case.

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

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

Identifiers and traceability

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

FieldTypeDescriptionExample
eval_statusString enumIndicates the current state of an evaluation in RiskOS™.

Possible values:
evaluation_completed
evaluation_paused
evaluation_in_progress
evaluation_completed
statusString enumIndicates the current state of an evaluation or case.

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

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

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-10-07T23:50:03.60187976Z"
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-10-07T23:50:03.738794253Z"
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.

FieldTypeDescriptionExample
enrichment_nameStringName of the module or service executed (e.g., Digital Intelligence, Verify Plus, Sigma Synthetic)."Socure Deceased Check"
enrichment_endpointStringAPI endpoint that processed the enrichment."https://sandbox.socure.com
>/api/3.0/EmailAuthScore"
enrichment_providerStringProvider of the enrichment service (Socure, RestAPI, etc.)."Socure"
status_codeIntegerHTTP status returned by the enrichment API call.200
requestObjectRequest payload sent to the enrichment service.See request schema below.
responseObjectNormalized response data from the enrichment service.See response schema below.
errorStringPopulated only if the enrichment encountered an error.
is_source_cacheBooleanIndicates whether cached data was used instead of a live API call.false
total_attemptsIntegerNumber of attempts made to retrieve the enrichment data.1

response fields

FieldTypeDescriptionExample
socureIdString (UUID)Socure’s persistent identity ID used for Graph Intelligence correlations."46fd3b11-a130-4915-8cc4-074bbd799669"
reasonCodesArray Of StringsStructured codes indicating deceased status.[ "R909", "R907" ]
firstNameStringResolved first name."Jessica"
middleNameString Or NullResolved middle name."Marie"
surNameStringResolved last name."Roberts"
nationalIdStringSubmitted SSN (full or last 4)."047-66-4618"
dobStringDate of birth."1943-09-19"
dodString Or NullDate of death if reported."2022-11-19"
ageString Or NumberCalculated age if date of death provided."79"
sourceAttributionString Or ArrayData source confirming deceased status."Probate"


Apply routing logic

Use decision and reasonCodes to drive workflow outcomes:

  • Refer if reason code R907 or R909 is returned
  • Accept if neither is present
  • Fail if inputs are invalid or cannot be resolved

Best practices for integration and maintenance

  • Validate API inputs against the expected schema.
  • Use sandbox mode and known test identities during QA.
  • Monitor reasonCodes and sourceAttribution for transparency and auditability.
  • Use decision, tags, and review routing to drive operational workflows.
  • Log and store evaluation payloads and responses for compliance and dispute resolution.

Validation checklist

Test coverage

Known good identities → APPROVE
Bad/mismatched identities → DECLINE or REVIEW
Edge cases logged + reviewed

Schema and error handling

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

Logging and 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