# Liquidators

Liquidators can know if a position is liquidatable by calling the isLiquidatable function on the ClearingHosue contract

```
isLiquidatable(IAMM amm, address trader)
```

Similarly, they can know if an AMM liquidity position is liquidatable by calling the isMakerLiquidatable function on the AMM contract

```solidity
isMakerLiquidatable(address maker)
```

In our [example repo](https://github.com/nftperp/sample_scripts/blob/main/liquidation.js), we provide an example of how a liquidator can get a list of all AMMs and positions at a given time. A liquidator can create a faster system through our [graph deployment](https://thegraph.com/hosted-service/subgraph/nftperp/v2) or by using their own node without any API calls. A liquidator can then liquidate a position by calling the following function in the ClearingHouse contract:&#x20;

```
liquidate(IRouter amm, address liquidatee)
```

Similarly, they can liquidate a maker by calling the following function in the AMM contract:

```solidity
liquidateMaker(address maker)
```
