Integrate Email Risk

Before you start

Make sure your RiskOS™ environment is provisioned with:

Choose your environment

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

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

Get an API key

  1. In the Sandbox RiskOS™ Dashboard, go to Developer Workbench > API Keys.

  2. Copy your API key securely.

  3. In the Production RiskOS™ Dashboard, go to Developer Workbench > API Keys.

  4. Copy your API key securely.

How it works

  1. Send a POST request to /api/evaluation with at least an email address.
  2. Socure runs the request through the configured RiskOS™ workflow and applies the Email Risk enrichment.
  3. Receive a decision (ACCEPT, REVIEW, or REJECT) and supporting metadata.
  4. Apply your routing logic based on thresholds, correlation levels, and risk signals.

Start a new Risk Evaluation

Endpoint

SandboxProduction

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": "2025-08-27T06:10:54.298Z",
  "workflow": "consumer_onboarding",
  "data": {
    "individual": {
      "given_name": "Guillermo",
      "family_name": "McNeil",
      "email": "guillermo.mcneil@example.com",
      "address": {
        "country": "US"
      }
    }
  }
}
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": "2025-08-27T06:10:54.298Z",
    "workflow": "consumer_onboarding",
    "data": {
      "individual": {
        "given_name": "Guillermo",
        "family_name": "McNeil",
        "email": "guillermo.mcneil@example.com",
        "address": {
          "country": "US"
        }
      }
    }
  }'

Request schema

Top-level fields

📘

Note:

Email Risk requires only data.individual.email to return a risk score, but for improved score accuracy we recommend including the optional fields for Email Risk in the request.

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 RFC 3339 timestamp indicating when the evaluation was initiated. "2025-08-27T06:10:54.298Z"
workflow String Required RiskOS™ 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.
"consumer_onboarding"
data Object Required Main payload for the RiskOS™ workflow containing all request details.
→ individual Object Required Individual identity object containing personal and address information. See individual schema below.

individual fields

Field Type Required Description Example
email String Required The consumer’s email address. "guillermo.mcneil@example.com"
given_name String Optional First name. Improves correlation accuracy. "Guillermo"
family_name String Optional Last name. Improves correlation accuracy. "McNeil"
address Object Optional Individual address fields. See address schema below.

address fields

Field Type Required Description Example
line_1 String Optional Street address line 1. "123 Main Street"
line_2 String Optional Street address line 2.
locality String Optional City or locality. "Miami"
major_admin_division String Optional State, province, or region (ISO 3166-2 format). "FL"
postal_code String Optional ZIP or postal code (hyphens optional). "33101"
country String Optional Country in ISO 3166-1 alpha-2 format (e.g., US, CA). "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-123456",
  "eval_id": "6dc8f39c-ecc3-4fe0-9283-fc8e5f99e816",
  "decision": "REVIEW",
  "data_enrichments": [
    {
      "enrichment_name": "Socure Email Risk",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "email": "guillermo.mcneil@example.com",
        "given_name": "Guillermo",
        "family_name": "McNeil",
        "address": {
          "country": "US"
        },
        "modules": [
          "emailrisk"
        ]
      },
      "response": {
        "referenceId": "f3863a33-69ca-43c2-90e0-8b4344a41a09",
        "nameEmailCorrelation": {
          "reasonCodes": [
            "I557",
            "R551"
          ],
          "score": 0.99
        },
        "emailRisk": {
          "reasonCodes": [
            "I520",
            "R563"
          ],
          "score": 0.887,
          "scores": [
            {
              "name": "Email Risk Model (US) Norm",
              "version": "7.0",
              "score": 0.887
            }
          ]
        }
      }
    }
  ]
}

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

Area Fields How to use it
Decision and routing decision, decision_at, tags, review_queues, notes, score Primary control signals. Branch application logic using decision. Use tags, queues, notes, and score for secondary routing, review, and explanation.
Module results Module-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 traceability id, eval_id Persist these identifiers to correlate API calls, logs, webhooks, GET requests, and support cases.
Enrichment execution data_enrichments[] (response, status_code, total_attempts, is_source_cache) Inspect enrichment outputs and detect provisioning issues, partial failures, retries, or cached responses.
Workflow context workflow, workflow_id, workflow_version Understand which workflow ran and which version produced the result. Useful for debugging and historical analysis.
Evaluation lifecycle eval_status, status, sub_status Execution and case state only. Useful for monitoring and asynchronous workflows. Do not use for business decisions.
Execution context eval_source, eval_start_time, eval_end_time, environment_name Observability 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.

Field Type Description Example
decision String (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_at String <Date-Time> RFC 3339 timestamp when the decision was finalized. "2025-10-01T09:12:44.387Z"
score Number If 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. 0.61
tags Array of Strings Array 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. ["manual_review_required"]
review_queues Array of Strings Lists any manual review queues the evaluation was sent to. Empty when the case is fully auto-resolved without human review. ["kyc-us"]
notes String Freeform text field for analyst or system comments about the evaluation. Often used to capture manual review rationale or investigation context. "Review triggered due to elevated risk indicators"

Evaluation lifecycle and status

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

Field Type Description Example
eval_status String (enum) Indicates the current state of an evaluation in RiskOS™.
Possible values:
• evaluation_completed
• evaluation_paused
• evaluation_in_progress
"evaluation_completed"
status String (enum) Indicates the current state of an evaluation or case.
Possible values:
• OPEN
• CLOSED
"CLOSED"
sub_status String Provides additional detail about the evaluation status.
Example values:
• Under Review
• Pending Verification
• Accept
• Reject
"Under Review"

Identifiers and traceability

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

Field Type Description Example
id String (UUID or custom string) Your evaluation identifier within RiskOS™.
Note: This is customer-generated.
"APP-123456"
eval_id String (UUID) RiskOS™-generated unique identifier for the evaluation. "6dc8f39c-ecc3-4fe0-9283-fc8e5f99e816"
workflow String Name of the workflow executed. "consumer_onboarding"
workflow_id String (UUID) Unique identifier for the workflow run. "dc7f261e-b158-477e-9770-7e4eae066156"
workflow_version String Version of the executed workflow. "28.16.0"

Execution context

These fields provide timing and environment context for the evaluation.

Field Type Description Example
eval_source String (enum) Indicates 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_time String <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_time String <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_name String Indicates 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.

Field Type Description Example
enrichment_name String Product name. "Socure Email Risk"
enrichment_provider String Provider. "Socure"
status_code Integer HTTP status code. 200
request Object Payload sent to provider. See request schema below.
response Object Payload returned by provider. See response schema below.
is_source_cache Boolean Response served from cache. false
total_attempts Integer Number of attempts. 1

request fields

Field Type Description Example
email String Email address submitted for an evaluation. "guillermo.mcneil@example.com"
given_name String First name of the individual submitting the information. "Guillermo"
family_name String Last name (surname) of the individual submitting the information. "McNeil"
address Object Individual address fields.
→ country String Country code in ISO 3166-1 alpha-2 format. "US"
modules Array List of enrichment modules requested for evaluation. `[
"emailrisk"
]`

response fields

Field Description Type Example
referenceId Unique identifier assigned to each enrichment after a RiskOS™ workflow is finalized. String (UUID) "f3863a33-69ca-43c2-90e0-8b4344a41a09"
nameEmailCorrelation Provides correlation score and associated reason codes for name–email matching. Object See nameEmailCorrelation schema below.
emailRisk Contains email risk assessment scores and corresponding reason codes. Object See emailRisk schema below.

nameEmailCorrelation fields

Field Type Description Example
score Number Correlation score between the provided name and email address. Higher values indicate stronger association. 0.99
reasonCodes Array of Strings List of reason codes contributing to the name–email correlation result. ["I556", "I520"]

The email correlation value is a number between 0.01 and 0.99 that indicates the strength of the relationship between the email address and the consumer's given_name and family_name.

emailRisk fields

Field Type Description Example
reasonCodes Array of Strings List of reason codes indicating factors influencing the email risk score. ["I520", "R563"]
score Number Primary email risk score between 0.001–0.999. A higher score indicates a greater likelihood of fraud. 0.887
scores Array of Objects Email risk model scores returned by the provider.
→ name String Name of the scoring model used. "Email Risk Model (US) Norm"
→ version String Version of the scoring model. "7.0"
→ score Number Confidence score between 0.001–0.999. 0.887