# Act on the decision

> Turn Antiro's answer into what happens to the order.

This is one page of the Antiro docs (https://docs.antiro.io/api/decisions). Every page in one file: https://docs.antiro.io/llms-full.txt

## The three actions

| `action` | What to do |
| --- | --- |
| `allow` | Accept the order. |
| `review` | Hold the order in your system until your team has checked it. |
| `block` | Refuse the order. |

Treat any value you do not recognise as `review`, as this sample does:

**Node.js**

```js
try {
  const res = await check(order); // POST /v1/assessments
  if (!res.ok) throw new Error(res.status);

  const { action } = await res.json();

  if (action === 'allow') return accept(order);
  if (action === 'block') return refuse(order);
  return hold(order); // review, and any value added later
} catch {
  // Antiro is out of reach: never lose an order
  accept(order);
  checkAgainLater(order); // same order_id
}
```

## If no answer arrives

If Antiro does not answer within 6 seconds, or answers with an error, accept the order so you do not lose it. Then check it again later with the same `order_id`.

## Protection modes

`action` is what to do now, and `recommended` is what Antiro decided. They differ only in Monitor mode. Set the mode on the [Protection](https://dashboard.antiro.io/dashboard/protection) page of the dashboard.

| Mode | `action` | `recommended` |
| --- | --- | --- |
| Protect (default) | Same as `recommended` | Antiro’s decision |
| Monitor | Always `allow` | Antiro’s decision |
| Off | Always `allow` | Always `allow` |

Monitor is useful while you test: no order is affected, and you can compare `recommended` with what your team finds.

Off means no check runs at all. The answer has no `id`, `probability` or `confidence`, and `reasons` is empty.

## Show the reasons to your team

Each item of [`reasons`](https://docs.antiro.io/api/assessments#reasons) has a `label` in English, Arabic and French. Show it next to a held order, so your team knows what to ask on the call.
