## When to resume an evaluation

Use forced resume when:

- A workflow step is stuck or has failed and cannot complete on its own.
- A consumer switches channels (for example, from SMS to email for OTP delivery).
- A step is no longer relevant and you want the workflow to proceed without waiting.

Do **not** use forced resume for normal workflow progression. Under standard conditions, paused steps resume automatically when the expected data or action arrives (for example, when a user submits an OTP code via a `PATCH` request).

> ⚠️
> **Warning**:
> Skipping a paused step means that step produces no result. Downstream decision logic that depends on the skipped step's output may behave differently than expected. Test resume behavior in Sandbox before using it in Production.

## Before you begin

- You have a valid RiskOS™ API key with permission to call the Evaluation endpoint.
- You have the `eval_id` of a currently paused evaluation. Retrieve it from the initial `POST` response or from an `evaluation_paused` webhook event.

## How to resume a paused evaluation

Send a `PATCH` request to the Evaluation endpoint with the `eval_id` of the paused evaluation. Include the `actions` object with `resume` set to `true`.

### Endpoint

SandboxProduction

```http
PATCH https://riskos.sandbox.socure.com/api/evaluation/{eval_id}
```

```http
PATCH https://riskos.socure.com/api/evaluation/{eval_id}
```

### Headers

HTTP

```http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
```

### Request body

JSON

```json
{
  "actions": {
    "resume": true
  }
}
```

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `actions` | Object | Yes | Controls workflow execution behavior. |
| `actions.resume` | Boolean | Yes | Set to `true` to skip the current paused step and continue from the next step. |

### Example: resume a paused OTP step

If a consumer's OTP delivery failed or the consumer wants to switch from SMS to email, resume the evaluation to skip the current OTP step:

Bash

```shell
curl -X PATCH "https://riskos.sandbox.socure.com/api/evaluation/{eval_id}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "actions": {
      "resume": true
    }
  }'
```

After the paused step is skipped, the workflow continues from the next configured step. If your workflow contains another OTP step configured for a different channel, the consumer receives a new OTP through that channel.

## Legacy parameter: `force_resume_evaluation`

> 📘
> **Note**:
> The `force_resume_evaluation` parameter is deprecated. Use `actions.resume` for new integrations. Both approaches are supported and produce the same result.

Existing integrations may use the `force_resume_evaluation` boolean flag nested under `data.individual`. This flag is maintained for backward compatibility and produces the same behavior as `actions.resume`.

JSON

```json
{
  "data": {
    "individual": {
      "force_resume_evaluation": true
    }
  }
}
```

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data.individual.force_resume_evaluation` | Boolean | No | **Deprecated.** Set to `true` to skip the current paused step. Use `actions.resume` instead. |

### Comparison

| Approach | Request location | Status |
| --- | --- | --- |
| `actions.resume` | Top-level `actions` object | **Recommended** |
| `force_resume_evaluation` | `data.individual` | Deprecated |

If both `actions.resume` and `force_resume_evaluation` are set to `true` in the same request, the evaluation resumes. The system treats them as equivalent — either one triggers the resume.

## What happens when you resume

1. The now paused step **skips** — it produces no output and no enrichment result for that step.
2. The workflow **continues** from the next step in the configured sequence.
3. If the next step is also a paused step (for example, two consecutive Wait steps), the workflow pauses again at that step and sends a webhook notification.
4. The evaluation response reflects the updated `eval_status` as the workflow progresses.

## Troubleshooting

| Issue | Explanation | Suggested fix |
| --- | --- | --- |
| `evaluation is not paused` error | The evaluation is not currently paused, either because it already completed or was never paused. | Verify the `eval_id` corresponds to an active, paused evaluation. Check `eval_status` with a `GET` request before attempting to resume. |
| Resume has no effect | The request was accepted but the workflow did not advance. | Confirm the evaluation is paused at a step that supports forced resume. Check that your `PATCH` request includes the correct `eval_id` in the URL path. |
| Downstream step fails after resume | A later step expected output from the skipped step. | Review your workflow configuration. Verify that downstream conditions and rules handle the case where the skipped step has no output.
