RiskOS™ integrates with multiple **enrichment modules** and **data partners**. To ensure reliability, the platform includes built-in mechanisms to handle errors gracefully and allow workflows to continue executing even when individual steps encounter issues.

## Retry mechanism

RiskOS™ automatically retries failed enrichment API calls up to **three times**, with a maximum wait time of **2,000 ms per attempt**.

If you need to adjust retry behavior for your account, please contact **[support@socure.com](mailto:support@socure.com)**.

## Handling enrichment failures in workflows

- If an **Enrichment step** fails, its output variable is set to `null`.
- Downstream **Condition steps** will then evaluate to **False**, allowing you to define **fallback logic**.
- Example: Use the `is set` or `is not set` operator on an enrichment output field to branch your workflow when enrichment data is missing or invalid.
- You can also configure **fallback enrichment steps and logic** directly in the Workflow Editor:
  - Chain alternative enrichment providers or internal modules if a primary enrichment fails.
  - Fallback enrichments ensure continuity of decisioning without requiring manual intervention.

This ensures workflows continue executing instead of failing completely.

## Identifying errors in API responses

All enrichment results are returned in the evaluation API response under the `data_enrichments` array.

Each enrichment block includes:
- **`status_code`** → The HTTP response code from the data service.
- **`error_message`** → Details about the error, if present.
- **`request`** → The payload sent to the service.
- **`response`** → The service’s raw response (if available).

**Tip:** An enrichment call is considered successful if `status_code = 200`. Any non-200 response means the enrichment failed.

## Example request

Failed enrichment request

```json
{
  "enrichment_name": "Socure Email Risk",
  "enrichment_endpoint": "https://sandbox.dev.socure.com/api/3.0/EmailAuthScore",
  "enrichment_provider": "Socure",
  "status_code": 500,
  "error_message": "Internal Server Error. Unable to process email risk request at this time.",
  "request": {
    "modules": [
      "emailrisk"
    ],
    "email": "johnsmith123+test@example.com"
  },
  "is_source_cache": false,
  "total_attempts": 3
}
```
